Perché il livello Transport esiste
IP consegna datagrammi tra host, ma non sa nulla di quale processo su quell’host debba ricevere i dati. Se sul tuo computer stai usando un browser, un client email e una sessione SSH contemporaneamente, come fa il sistema operativo a smistare i pacchetti in arrivo al processo giusto? La risposta è il livello Transport.
Una distinzione cruciale: IP lavora tra host, il Transport lavora tra processi. I router non implementano il livello Transport — elaborano solo fino al livello Network. Questo è un principio fondamentale dell’architettura Internet: la complessità è concentrata ai bordi della rete (end-to-end principle, Saltzer et al., 1984).
I compiti principali
Il livello applicativo passa blocchi di dati arbitrariamente grandi. Il Transport li taglia in segmenti (TCP) o datagrammi (UDP) che possono essere incapsulati in datagrammi IP. Al ricevitore, li riassembla nell’ordine corretto.
Ogni segmento contiene la porta sorgente e la porta destinazione. La porta destinazione identifica il processo che deve ricevere i dati. Senza porte, IP saprebbe solo dove consegnare, non a chi.
Checksum sull’header e sul payload. TCP aggiunge affidabilità completa (ritrasmissione, ordine, ACK); UDP offre solo il checksum, senza ritrasmissione.
Controllo del flusso (non sovraccaricare il ricevitore) e controllo della congestione (non sovraccaricare la rete). UDP non implementa nessuno dei due — è responsabilità dell’applicazione.
Il concetto di SAP — Service Access Point
Ogni livello del modello a strati offre servizi al livello superiore tramite un SAP (Service Access Point). A livello Transport, il SAP è il numero di porta: è il punto di accesso al servizio Transport per i processi applicativi.
Pensa all’indirizzo IP come al numero civico di un palazzo, e al numero di porta come al numero dell’appartamento. IP consegna il pacco al palazzo giusto; la porta dice al portinaio a quale inquilino consegnarlo.
Multiplexing e Demultiplexing
Il concetto di multiplexing/demultiplexing è il cuore del livello Transport. Permette a più processi applicativi di condividere lo stesso stack IP.
Multiplexing — lato mittente
Sul mittente, più processi (browser, client email, SSH) generano dati contemporaneamente. Il livello Transport raccoglie i segmenti da tutti i processi, aggiunge le porte sorgente e destinazione, e li passa al livello IP come flusso unificato. IP non vede i singoli processi, vede solo pacchetti.
Demultiplexing — lato ricevitore
Sul ricevitore, arriva un flusso di pacchetti IP. Il livello Transport legge il campo dst_port di ogni segmento e consegna i dati al processo corretto. Il meccanismo preciso dipende dal protocollo:
| Tipo demux | Chiave di smistamento | Protocollo | Caratteristica |
|---|---|---|---|
| Connection-oriented | (src_ip, src_port, dst_ip, dst_port) — 4-tupla | TCP | Ogni connessione è univoca: stessa dst_port ma src diverso → socket TCP diverso |
| Connectionless | (dst_ip, dst_port) — 2-tupla | UDP | Più mittenti diversi → stesso socket UDP. Discriminazione avviene a livello applicativo |
Un server web ascolta sulla porta 80. Tre client si connettono contemporaneamente dalla stessa porta sorgente (improbabile ma possibile). TCP usa la 4-tupla (IP_client, porta_client, IP_server, 80) per distinguere le tre connessioni. Se il server usasse solo la porta 80, non potrebbe smistare le risposte ai tre client separatamente.
TCP e UDP — la scelta al livello Transport
TCP/IP definisce due protocolli principali a livello Transport, progettati per esigenze opposte:
| Protocollo | RFC | Connessione | Affidabilità | Overhead | Uso tipico |
|---|---|---|---|---|---|
| TCP | RFC 793 (1981) | Connection-oriented | Completa (ACK, ordine, ritrasmissione) | Alto (≥20 byte header) | HTTP, HTTPS, SSH, FTP, SMTP |
| UDP | RFC 768 (1980) | Connectionless | Best-effort (solo checksum) | Minimo (8 byte header) | DNS, VoIP, streaming, gaming |
L’affidabilità implementata a livello Transport (TCP) non è duplicata nei livelli inferiori. I router IP non ritrasmettono pacchetti persi. Questa separazione è intenzionale: mantiene la rete semplice e sposta la complessità negli end-host, dove può essere aggiornata indipendentemente.
- Il livello Transport estende IP aggiungendo la comunicazione processo-to-processo; esiste solo negli end-host, non nei router
- Il numero di porta è il SAP del livello Transport: identifica univocamente il processo destinatario all’interno dell’host
- Multiplexing = più processi condividono l’unico stack IP in uscita; ogni segmento porta src_port per identificare il flusso
- Demultiplexing TCP usa la 4-tupla (src_ip, src_port, dst_ip, dst_port): ogni connessione è un socket distinto anche con stessa porta server
- Demultiplexing UDP usa solo (dst_ip, dst_port): più mittenti diversi convergono sullo stesso socket UDP
- TCP offre affidabilità, ordine, controllo del flusso e congestione; UDP offre velocità e leggerezza senza garanzie