Il livello Transport: ruolo, compiti e multiplexing

// obiettivi di apprendimento
Collocare il livello Transport nel modello TCP/IP e spiegare perché risiede solo negli end-host (non nei router)
Descrivere i compiti principali del livello Transport: segmentazione, indirizzamento ai processi, controllo errori
Distinguere multiplexing (lato mittente) e demultiplexing (lato ricevitore) e spiegare il ruolo del numero di porta come SAP
Confrontare il demux connection-oriented TCP (4-tupla) con il demux connectionless UDP (2-tupla)
📄
Slides
PDF lezione con schemi e diagrammi
Scarica →
Networking & OS Anno 4 · Modulo 3 · Lezione 1

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.

// definizione formale
Il livello Transport fornisce la comunicazione end-to-end tra processi applicativi, operando esclusivamente negli host terminali. Estende il servizio di consegna host-to-host offerto da IP aggiungendo la consegna processo-to-processo, tramite l’identificazione dei processi attraverso il numero di porta.

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

SEGMENTAZIONE

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.

INDIRIZZAMENTO AI PROCESSI

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.

CONTROLLO DEGLI ERRORI

Checksum sull’header e sul payload. TCP aggiunge affidabilità completa (ritrasmissione, ordine, ACK); UDP offre solo il checksum, senza ritrasmissione.

OPZIONALE (solo TCP)

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.

// analogia

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.

// MULTIPLEXING — lato mittente
Processo A (porta 52341) ─┐
Processo B (porta 52342) ─┼──→ [ Livello Transport ] ──→ [ IP ] ──→ Rete
Processo C (porta 52343) ─┘
Ogni segmento porta src_port + dst_port per identificare il flusso

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 demuxChiave di smistamentoProtocolloCaratteristica
Connection-oriented(src_ip, src_port, dst_ip, dst_port) — 4-tuplaTCPOgni connessione è univoca: stessa dst_port ma src diverso → socket TCP diverso
Connectionless(dst_ip, dst_port) — 2-tuplaUDPPiù mittenti diversi → stesso socket UDP. Discriminazione avviene a livello applicativo
// esempio concreto — demux TCP

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.

// DEMULTIPLEXING — lato ricevitore
Rete ──→ [ IP ] ──→ [ Livello Transport ]
                           │
                           ├──→ dst_port=80 → Processo HTTP
                           ├──→ dst_port=22 → Processo SSH
                           └──→ dst_port=53 → Processo DNS

TCP e UDP — la scelta al livello Transport

TCP/IP definisce due protocolli principali a livello Transport, progettati per esigenze opposte:

ProtocolloRFCConnessioneAffidabilitàOverheadUso tipico
TCPRFC 793 (1981)Connection-orientedCompleta (ACK, ordine, ritrasmissione)Alto (≥20 byte header)HTTP, HTTPS, SSH, FTP, SMTP
UDPRFC 768 (1980)ConnectionlessBest-effort (solo checksum)Minimo (8 byte header)DNS, VoIP, streaming, gaming
// end-to-end principle

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.

📌 Riepilogo — Punti chiave
  • 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

Lascia un commento