Protocollo TCP: controllo della dimensione dei pacchetti, velocità di trasferimento e riassemblaggio
Il Transmission Control Protocol (TCP) è il protocollo di livello trasporto responsabile della consegna affidabile e ordinata dei dati attraverso reti IP. Gestisce la segmentazione dei pacchetti, il controllo di flusso e il riassemblaggio a destinazione.
Funzioni core del TCP
Gestione della dimensione del pacchetto
- MSS (Maximum Segment Size): Negozia durante il handshake (tipicamente 1460 byte per Ethernet)
- Path MTU Discovery: Si regola dinamicamente per evitare la frammentazione
- Segmentazione: Suddivide i dati dell'applicazione in segmenti di dimensione adeguata
Controllo della velocità di trasferimento (controllo di flusso e congestione)
- Sliding Window: Il ricevitore comunica la capacità del buffer (rwnd)
- Congestion Window (cwnd): Il mittente limita in base alle condizioni di rete
- Algoritmi: Slow Start, Congestion Avoidance, Fast Retransmit/Recovery
- Varianti moderne: CUBIC (default Linux), BBR, Vegas, Reno
Riassemblaggio del messaggio
- Numeri di sequenza: Ogni byte è numerato per l'ordinamento
- Conferme (ACK): Gli ACK cumulativi confermano la ricezione
- Buffer di riassemblaggio: I segmenti fuori ordine sono mantenuti finché i gap non sono colmati
- Rilevamento duplicati: I numeri di sequenza prevengono la duplicazione
TCP vs UDP
A differenza di UDP (senza connessione, nessuna garanzia), il TCP fornisce:
- Orientato alla connessione (handshake a 3 vie)
- Consegna affidabile (ritrasmissione in caso di perdita)
- Consegna ordinata (numeri di sequenza)
- Controllo di flusso (previene overflow del ricevitore)
- Controllo di congestione (previene il collasso della rete)
Impatto reale
I meccanismi del TCP consentono la navigazione web (HTTP/HTTPS), email (SMTP/IMAP), trasferimento file (FTP/SFTP) e streaming (con buffering). Il suo controllo adattativo della velocità previene il collasso per congestione della rete, una caratteristica critica per la stabilità di Internet.