Socket Library
Avviso di maturità: Questa libreria è funzionale e ben testata, ma rilasciata da poco. È adatta per sviluppo, strumenti interni e ambienti controllati. L'implementazione in produzione con input di rete non attendibili dovrebbe attendere che il codice abbia accumulato diversi mesi di indurimento nel mondo reale.
Toolkit socket ad alte prestazioni e guidato dalle eccezioni per sistemi POSIX. Fornisce un'API C pulita e moderna per socket TCP, UDP, Unix domain, HTTP/1.1, HTTP/2, QUIC, WebSocket e TLS/DTLS con gestione completa degli errori, I/O zero-copy e polling eventi multipiattaforma.
Caratteristiche
Networking Core
- Socket TCP Stream - Client/server TCP completi con I/O scatter/gather
- Socket UDP Datagram - Modalità connesse e senza connessione con supporto multicast/broadcast
- Socket Unix Domain - Socket IPC con supporto per credenziali peer e passaggio di descrittori di file
- Supporto TLS 1.3 - TLS moderno con SNI, ALPN, ripresa della sessione, CRL/OCSP, certificate pinning, Certificate Transparency (CT), offload kTLS, dati early 0-RTT, KeyUpdate
- Supporto DTLS 1.2+ - UDP sicuro con scambio di cookie per protezione DoS, caching della sessione, ALPN
Stack Protocollo HTTP
- HTTP/1.1 - Parser DFA guidato da tabelle (RFC 9112), codifica chunked, prevenzione dello smuggling di richieste
- HTTP/2 - Framing binario, multiplexing dello stream, controllo del flusso, server push (RFC 9113)
- HPACK - Compressione degli header con tabelle statiche/dinamiche, codifica Huffman (RFC 7541)
- QPACK - Compressione degli header HTTP/3 (RFC 9204), architettura a due stream, gestione degli stream bloccati
- Client HTTP - Pool di connessioni, autenticazione (Basic/Digest/Bearer), cookie (RFC 6265)
- Server HTTP - Gestione delle richieste guidata da eventi, keep-alive, spegnimento graduale
Trasporto QUIC
- Conforme a RFC 9000 - Implementazione completa del protocollo di trasporto QUIC v1
- Gestione Connessioni - Rotazione dell'ID connessione, reset stateless, validazione dell'indirizzo
- Multiplexing Stream - Stream bidirezionali e unidirezionali con controllo del flusso
- Rilevamento Perdita - Controllo della congestione e recupero delle perdite RFC 9002
- Migrazione Percorso - Migrazione senza soluzione di continuità attraverso cambi di rete
- Ripresa 0-RTT - Riconnessione veloce con supporto dati early
QUIC-TLS (RFC 9001)
- Protezione Pacchetti - Crittografia AEAD (AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305)
- Protezione Header - Generazione di maschere AES-ECB/ChaCha20 per la crittografia del numero di pacchetto
- Derivazione Chiavi - Segreti iniziali basati su HKDF dal DCID client, chiavi handshake/traffico
- Aggiornamento Chiavi - Rotazione del bit di fase chiave con limiti di riservatezza AEAD (RFC 9001 §6)
- Integrità Retry - Verifica del tag AEAD per i pacchetti Retry (RFC 9001 §5.8)
- Parametri di Trasporto - Estensione TLS (tipo 0x39) per lo scambio di configurazione QUIC
QPACK (RFC 9204)
- Compressione Header - Compressione degli header HTTP/3 che evita il blocco head-of-line
- Architettura a Due Stream - Stream encoder (0x02) e decoder (0x03) separati
- Tabella Dinamica - Indicizzazione assoluta con schemi relativi all'encoder e al campo
- Tabella Statistica - 99 voci predefinite (RFC 9204 Appendice A)
- Sincronizzazione Stato - Sezione Acknowledgment, Cancellazione Stream, Incremento Conteggio Inserimenti
- Gestione Stream Bloccati - Limiti configurabili di stream bloccati con negoziazione SETTINGS
WebSocket
- Conforme a RFC 6455 - Implementazione completa del protocollo WebSocket
- permessage-deflate - Estensione di compressione (RFC 7692) tramite zlib
- UTF-8 Incrementale - Validazione dei frame di testo basata su DFA
- Auto-Ping/Pong - Heartbeat configurabile con integrazione timer
Proxy Tunneling
- HTTP CONNECT - Tunneling proxy con autenticazione Basic
- SOCKS4/4a - Supporto SOCKS legacy
- SOCKS5 - RFC 1928/1929 con autenticazione username/password
- API Asincrona - Connessione proxy non bloccante con macchina a stati
Sistema di Eventi
- Polling Multipiattaforma - epoll (Linux), kqueue (BSD/macOS), fallback poll
- Modalità Edge-Triggered - Notifica eventi ad alte prestazioni
- I/O Asincrono - io_uring (Linux 5.1+), kqueue AIO (BSD/macOS)
- Timer - One-shot e ripetuti con min-heap O(log n)
Gestione Connessioni
- Pool di Connessioni - Ricerca O(1) con tabelle hash, buffer I/O per connessione
- Happy Eyeballs - Gara di connessione dual-stack IPv4/IPv6 RFC 8305
- Riconnessione Automatica - Backoff esponenziale con schema circuit breaker
- Spegnimento Graduale - Macchina a stati del pool drain con garanzia di timeout
Hardening di Sicurezza
- Protezione SYN Flood - Punteggio di reputazione, throttling, integrazione kernel
- Tracciamento Per-IP - Limiti di connessione e rate limiting per client
- Rate Limiting - Algoritmo token bucket per connessioni e larghezza di banda
- Prevenzione Smuggling Richieste - Parsing HTTP rigoroso con conformità RFC
Risoluzione DNS
- Resolver Asincrono - Risoluzione non bloccante con thread pool e multiplexing delle query
- DNS-over-TLS (DoT) - DNS crittografato RFC 7858/8310 con modalità opportunistica/severa
- DNS-over-HTTPS (DoH) - Query DNS RFC 8484 su HTTPS (metodi POST/GET)
- Validazione DNSSEC - Catena di fiducia RFC 4033-4035, negazione autenticata NSEC/NSEC3
- Cookie DNS - Protezione spoofing RFC 7873 tramite EDNS0
- Caching Negativo - Gestione corretta NXDOMAIN/NODATA RFC 2308
- Errori DNS Estesi - Codici di errore dettagliati RFC 8914
Infrastruttura
- Errori Basati su Eccezioni - Propagazione pulita degli errori con
TRY/EXCEPT/FINALLY
- API Semplice - Livello di comodità basato su codice di ritorno per operazioni comuni (nessun TRY/EXCEPT necessario)
- Gestione Memoria Arena - Allocazione efficiente con protezione overflow
- I/O Buffer Circolare - Buffering zero-copy per operazioni di rete
- I/O Asincrono - Operazioni asincrone ottimizzate per piattaforma (io_uring/kqueue)
- Validazione UTF-8 - Elaborazione UTF-8 orientata alla sicurezza per frame di testo WebSocket
- Framework Retry Generico - Backoff esponenziale con jitter per operazioni resilienti
- Tracciamento Connessioni Per-IP - Limiti di connessione e rate limiting per IP client
- I/O Zero-Copy -
sendfile() ottimizzato per piattaforma e I/O scatter/gather
- Osservabilità - Logging inseribile, export metriche Prometheus/StatsD/JSON, dispacciamento eventi
- Utility Crittografiche - SHA-1/256, HMAC, Base64, random sicuro
- Sistema POSIX-compliant (Linux, BSD, macOS)
- Compilatore C11 con estensioni GNU
- Thread POSIX (pthread) per operazioni thread-safe
- Supporto IPv6 nel kernel (per socket dual-stack)
- NON portabile su Windows senza strato di adattamento Winsock