Il livello di trasporto gestisce la conversazione tra mittente e destinatario, nascondendo tutti i dettagli del trasporto delle informazioni lungo la rete.
Il livello di trasporto di solito è gestito dal software, chiamato entità di trasporto. Le entità di trasporto sono presenti solo sui computer, che conducono la conversazione, e non nei router.
Il livello di trasporto offre servizi di trasporto ai livelli superiori che, analogamente ai servizi del livello di rete, possono essere connessi o non connessi e affidabili o non affidabili.
Per trasportare i dati, il livello di trasporto usa i servizi del livello di rete. Il livello di trasporto accetta i dati dal livello superiore, li può spezzare in unità chiamate TPDU (Transport Protocol Data Unit), e poi li passa al livello di rete dove verranno inseriti in pacchetti e inviati a destinazione.
I servizi non connessi e non affidabili del livello di trasporto sono molto simili agli analoghi servizi del livello di rete; in questo caso il livello di trasporto è piuttosto semplice. Quando i pacchetti arrivano a destinazione, l’entità di trasporto toglie l’intestazione aggiunta dal livello di trasporto del mittente e passa i dati ai livelli superiori. Alcune informazioni potrebbero non arrivare a destinazione.
Il tipo più usato di servizio a livello di trasporto è quello connesso e affidabile.
Una connessione tra mittente e destinatario appare ai livelli superiori come un collegamento diretto tra le due stazioni che permette di consegnare le informazioni in modo ordinato e affidabile.
Il livello di trasporto garantisce che i pacchetti giungano correttamente all’altra estremità della connessione, tutti e in modo ordinato; il livello di rete può scartare dei pacchetti ma il livello di trasporto deve fare in modo che i pacchetti persi vengano rispediti, fino a quando arrivano correttamente a destinazione, e che i dati vengano passati ai livelli superiori esattamente nello stesso ordine in cui sono stati inviati.
La connessione inoltre garantisce che venga mantenuta la qualità di servizio richiesta.
Se il livello di trasporto è non connesso non affidabile il mittente può spedire solo messaggi di dimensione tale da poter essere inseriti nei pacchetti del livello di rete (per esempio UDP e NetBEUI).
Se il livello di trasporto è connesso e affidabile il trasferimento dati può avvenire con diverse modalità:
-
modalità messaggio: se il mittente spedisce un messaggio più grande del pacchetto da inviare, il messaggio viene diviso in segmenti, ma il ricevente aspetta di ricevere l’intero messaggio prima di passare i dati al livello superiore e invia un riscontro per l’intero messaggio (per esempio NetBEUI);
-
modalità a flusso di byte: se il mittente spedisce un messaggio più grande del pacchetto da inviare, il messaggio viene diviso in segmenti, ma il ricevente non ha informazioni sulla dimensione del messaggio originale: manda un riscontro per i dati ricevuti fino a un certo byte (per esempio TCP);
-
modalità a flusso di pacchetto: il mittente può spedire solo messaggi che possono essere contenuti in un pacchetto; il ricevente manda un riscontro per i pacchetti ricevuti fino a un numero specificato (per esempio NetBEUI).
I servizi offerti dal livello di trasporto sono molto simili ai servizi offerti dal livello di rete.
L’utente però non ha alcun controllo sulla sottorete di comunicazione; i servizi disponibili a livello di rete dipendono dal fornitore dei servizi di comunicazione; il livello di trasporto al di sopra del livello di rete permette di offrire servizi migliori, per esempio di offrire connessioni affidabili utilizzando un servizio di rete non connesso e non affidabile e di garantire la qualità del servizio; inoltre il livello di trasporto può offrire capacità di multiplexing.
L’interfaccia tra il livello di rete e il livello di trasporto, attraverso cui il livello di rete offre i propri servizi al livello di trasporto, costituisce il confine della rete, il confine tra il fornitore di servizi di comunicazione e l’utente.
Reti diverse possono presentare al livello di trasporto interfacce molto diverse.
Questo è un altro motivo per cui è utile il livello di trasporto: il livello di trasporto rende disponibili ai livelli superiori un insieme di primitive standard, indipendenti dal livello di rete; per scrivere applicazioni di rete basta usare le primitive standard del livello di trasporto senza doversi preoccupare dei dettagli relativi alla rete utilizzata.
I quattro livelli inferiori possono essere visti come un fornitore di servizi di trasporto utilizzabili facilmente dai livelli superiori.
Dato che si occupa della conversazione tra mittente e destinatario, il livello di trasporto è molto simile al livello di data link e ha compiti simili (controllo degli errori e, nel caso di servizi connessi, controllo di flusso).
Ma nel livello di data link il collegamento tra due stazioni è effettivamente un canale diretto (cavo o altro mezzo trasmissivo anche wireless); nel livello di trasporto invece il canale fisico è costituito dalla rete e quindi la complessità aumenta.
Un problema fondamentale è l’indirizzamento dell’entità di trasporto di destinazione.
Inoltre nel caso di servizi connessi è più complicata l’apertura della connessione e la sua chiusura, nonché il controllo di flusso.