I protocolli di livello trasporto si occupano della comunicazione end-to-end tra due dispositivi sulla rete. Non si preoccupano di come i dati viaggiano fisicamente, ma di come vengono consegnati in modo affidabile (o veloce) all'applicazione destinataria.
TCP (Transmission Control Protocol)
TCP è un protocollo orientato alla connessione: prima di trasferire dati, stabilisce una connessione tra client e server tramite il cosiddetto three-way handshake:
- SYN — il client invia una richiesta di connessione al server,
- SYN-ACK — il server conferma e risponde,
- ACK — il client conferma la ricezione e la connessione è stabilita.
Solo dopo questo scambio i dati iniziano a fluire.
TCP garantisce:
- Affidabilità — ogni pacchetto viene confermato dal destinatario (ACK); se non arriva conferma, viene ritrasmesso,
- Ordine — i pacchetti vengono riordinati correttamente anche se arrivano fuori sequenza,
- Controllo del flusso — regola la velocità di invio per non sovraccaricare il destinatario,
- Controllo della congestione — riduce il traffico in caso di rete congestionata.
Il rovescio della medaglia è una maggiore latenza rispetto a UDP, dovuta ai meccanismi di controllo. È il protocollo usato da HTTP/HTTPS, FTP, SSH e SMTP.
UDP (User Datagram Protocol)
UDP è un protocollo senza connessione: i pacchetti (chiamati datagrammi) vengono inviati direttamente al destinatario senza stabilire prima una connessione e senza attendere conferme di ricezione.
Caratteristiche principali:
- Veloce — assenza di handshake e ACK riduce la latenza al minimo,
- Inaffidabile — i pacchetti possono andare persi, duplicarsi o arrivare fuori ordine senza che il protocollo se ne accorga,
- Leggero — header molto più piccolo rispetto a TCP (8 byte vs 20 byte).