Il livello Trasporto.

Bibliografia:
Computer Networking. Cap. 3. Autori: James F. Kurose (University of Massachusetts, Amherst) Keith W. Ross (Polytechnic Institute of NYU).

I servizi del livello trasporto. Introduzione

Un protocollo del livello trasporto ha il compito di realizzare la comunicazione logica tra due processi del livello applicazione che sono in esecuzione su sistemi terminali differenti.

Per comunicazione logica tra processi del livello applicazione si intende che le applicazioni comunicano tra loro ritenendo che i computer (in cui sono ospitate) siano direttamente collegati; in realtà, gli host potrebbero trovarsi in continenti diversi, ed essere collegati per mezzo di numerosi router e canali di qualsiasi tipo.

I processi del livello Applicazione usano la comunicazione logica per scambiarsi messaggi, ignorando le problematiche della gestione dell'infrastruttura fisica usata per consegnare i messaggi.

I protocolli del livello trasporto sono implementati nei sistemi terminali ma non nei router della rete. Dal lato del trasmettitore, il livello trasporto inserisce i messaggi ricevuti da un processo applicativo in una busta. Questa unità di dati del livello trasporto è detta segmento.

L'operazione di racchiudere il messaggio in una busta consiste nell'aggiungere alcune informazioni, denominate header, che il processo del livello di trasporto sul sistema destinatario userà per consegnare il messaggio all'applicazione.

Un messaggio molto lungo viene scomposto in blocchi e il livello trasporto aggiunge una intestazione a ciascun blocco.

Il livello trasporto passa il segmento al livello rete sottostante, dove viene racchiuso in una busta di livello 3, per formare un pacchetto (o datagramma) da inviare al sistema terminale di destinazione.

È importante notare che i router della rete leggono solo l'header del pacchetto di livello 3, non possono leggere l'header del segmento racchiuso nella busta di livello 3.

Il livello rete del sistema terminale destinatario estrae il segmento dal pacchetto e lo consegna al livello trasporto. Il livello trasporto elabora il segmento ricevuto e consegna il messaggio all'applicazione destinataria.

Relazione tra il livello di Trasporto e il livello di Rete

Dal punto di vista delle applicazioni, il livello di trasporto è l'infrastruttura di base della comunicazione. Il protocollo del livello di Trasporto fornisce la comunicazione logica tra processi in esecuzione su host distinti, mentre un protocollo del livello Rete fornisce una comunicazione logica tra host. Per spiegare questa distinzione si consideri la seguente analogia:

Ci sono due abitazioni, una in Veneto ed una in Sicilia, in ciascuna delle quali ci sono 12 bambini. I bambini veneti sono cugini dei bambini siciliani. Tutti i bambini di un'abitazione, una volta a settimana, scrivono lettere destinate ai bambini dell'altra abitazione. Una lettera viene recapitata tramite il servizio postale in una busta separata. Quindi da ciascuna abitazione partono 144 lettere a settimana verso l'altra abitazione. Alice, in Veneto, e Calogero in Sicilia, hanno il compito di raccogliere e smistare le lettere. Ogni settimana Alice raccoglie le lettere dai suoi fratelli e le consegna al postino. Quando arrivano le lettere, Alice le distribuisce ai suoi fratelli. In Sicilia, Calogero ha gli stessi compiti.

In questo esempio, il servizio postale fornisce la comunicazione logica tra le due abitazioni - non tra persona e persona. Alice e Calogero forniscono la comunicazione logica tra i cugini - Alice e Calogero prelevano la corrispondenza e consegnano le lettere ai loro fratelli. Notare che, dal punto di vista dei cugini, Alice e Calogero rappresentano il servizio postale, nonostante essi siano una parte (terminale) del processo di consegna da end-to-end. Da questo esempio si traggono le seguenti analogie per illustrare i ruoli dei livelli di Trasporto e di Rete:

gli host (detti anche sistemi terminali)

=>

abitazioni

processi

=>

cugini

applicazioni

=>

lettere nelle buste

protocollo del livello Rete

=>

servizio postale

protocollo del livello Trasporto

=>

Alice e Calogero

Continuando l'analogia, si osservi che Alice e Calogero svolgono il loro ruolo nelle rispettive abitazioni; infatti i protocolli del livello di Trasporto risiedono nei sistemi terminali. In un sistema terminale, un protocollo di Trasporto consegna i messaggi dei processi applicativi al livello Rete e viceversa; ma ignora il modo in cui i messaggi viaggiano attraverso la rete. I router intermedi non leggono le informazioni che il livello Trasporto ha inserito nei pacchetti.

Si supponga adesso che, quando Alice e Calogero sono assenti altri due cugini, Susanna e Alfio, li sostituiscono e provvedono alla raccolta e alla distribuzione delle lettere nelle rispettive abitazioni. Si supponga anche che Susanna ed Alfio, per inesperienza nel servizio svolto, non prestano molta cura al loro compito e qualche volta perdono delle lettere o le danneggiano dandole in bocca al cane. Nella stessa maniera in una rete di calcolatori si possono trovare diversi protocolli di Trasporto che offrono un proprio modello di servizio alle applicazioni.

I possibili servizi che Alice e Calogero possono fornire dipendono dai servizi postali esistenti. Ad esempio, se il servizio postale non si impegna a garantire un tempo massimo di consegna (3 giorni), allora anche Alice e Calogero sono impediti dall'assicurare un tempo limite di consegna delle lettere ai cugini. Allo stesso modo i servizi che il protocollo di Trasporto può fornire dipendono dal modello di servizio del sottostante protocollo del livello Rete. Se il protocollo di Rete non può mantenere un ritardo regolare nella consegna dei pacchetti o non può sfruttare la banda disponibile per i pacchetti di livello 4 da scambiare tra i due host, allora nemmeno il protocollo del livello di Trasporto può rispettare un ritardo massimo o sfruttare la banda disponibile, per i messaggi da scambiare tra i due processi.

Inoltre certi servizi possono essere offerti da un protocollo di Trasporto anche se il protocollo di Rete su cui si appoggia non offre il corrispondente servizio. Ad esempio, un protocollo di Trasporto può offrire ad una applicazione un servizio di trasferimento affidabile anche quando il protocollo di rete non è affidabile, cioè quando il protocollo di rete perde, danneggia o duplica i pacchetti. Ancora, potrebbe succedere che il protocollo di Trasporto cripta i messaggi per impedire una lettura a persone non autorizzate anche se il protocollo di Rete invia i pacchetti in chiaro.

Panoramica del livello trasporto

In una rete TCP/IP le applicazioni possono utilizzare due protocolli di trasporto. Un protocollo è l'UDP (User Datagram Protocol), che offre un servizio non affidabile e privo di connessione alle applicazioni. L'altro protocollo è il TCP (Transmission Control Protocol), che fornisce un servizio affidabile e orientato alla connessione. Il progettista di un'applicazione di rete deve specificare quale protocollo intende usare.

In genere si indica con il termine segmento un pacchetto TCP di livello 4, e con il termine datagramma un pacchetto IP di livello 3.

Il protocollo del livello Rete è IP, "Internet Protocol". IP fornisce la comunicazione logica tra gli host. Il modello adottato dal protocollo IP è il servizio di consegna best-effort (più conveniente). Intendendo che il protocollo IP privilegia il "best effort" (minimo costo) per consegnare pacchetti agli host in comunicazione, ma non offre nessuna garanzia di consegna. In particolare non garantisce la consegna dei segmenti, non garantisce l'ordine di consegna dei segmenti e non garantisce l'integrità dei dati contenuti nel segmento. Per questi motivi IP è detto un servizio non affidabile.

I protocolli UDP e TCP estendono il servizio di consegna del protocollo IP tra due sistemi terminali in un servizio di consegna tra due processi in esecuzione su due sistemi terminali. Questa estensione della consegna host-to-host in una consegna process-to-process è definita multiplexing e demultiplexing. UDP offre solo due servizi: la consegna dei pacchetti da host-to-host e il controllo degli errori. In particolare, come IP, UDP è un servizio non affidabile - non garantisce che i dati inviati da un processo arrivino senza disturbi al processo destinazione.

TCP, invece, offre servizi aggiuntivi alle applicazioni. Fornisce un servizio di trasferimento affidabile:

L'affidabilità del TCP è la garanzia che la consegna dei pacchetti dal processo mittente al processo destinatario avvenga correttamente e nello stesso ordine di partenza. TCP converte il servizio non affidabile di IP tra due sistemi terminali in un servizio di trasporto affidabile tra due processi. TCP controlla anche la congestione. Il controllo della congestione non è un servizio fornito all'applicazione ma è un servizio nell'interesse di tutta la rete. Il controllo della congestione di TCP impedisce che una connessione TCP saturi un canale con una quantità elevata di traffico. Il TCP tenta di assegnare ad ogni connessione che viaggia su un canale, una uguale larghezza di banda. Ciò viene ottenuto regolando la frequenza dei pacchetti trasmessi. Il traffico UDP, invece, non è regolato. Le applicazioni che usano il protocollo UDP inviano dati alla frequenza massima, per tutto il tempo necessario alla trasmissione del messaggio.

Servizio orientato alla connessione nelle architetture ATM: il circuito virtuale

Prima di esaminare il protocollo di trasporto realizzato nelle architetture di rete TCP/IP, è opportuno vedere il servizio orientato alla connessione offerto dalle architetture di rete ATM. In queste architetture, si possono usare due tipi di servizi: orientato alla connessione e non orientato alla connessione. Nel servizio non orientato alla connessione, ogni pacchetto di una stessa comunicazione viene instradato indipendentemente dagli altri, cioè quando giunge in un router viene letto l'indirizzo dell'host destinazione contenuto nell'intestazione, si consulta la tabella di instradamento e si determina la linea di uscita che consente di raggiungere quella destinazionee. Di conseguenza, se la tabella di instradamento subisse delle modifiche durante la trasmissione dei pacchetti appartenenti ad una comunicazione tra un host sorgente ed un host destinazione, ad esempio perchè su un canale si è osservato un traffico elevato rispetto ad un altro, i pacchetti della stessa comunicazione potrebbero seguire percorsi diversi e giungere a destinazione fuori ordine. Nel servizio orientato alla connessione, tutti i pacchetti seguono lo stesso percorso, quindi giungono a destinazione in ordine.

Una comunicazione che usa il servizio orientato alla connessione prevede tre fasi:

La connessione

Il servizio orientato alla connessione, anche detto circuito virtuale nelle architetture ATM, X.25 e SNA, consiste nel far viaggiare tutti i pacchetti di uno stesso messaggio lungo lo stesso percorso.

Con questo tipo di servizio i pacchetti giungono a destinazione nello stesso ordine in cui sono partiti.

Un circuito virtuale è una successione di numeri di canali logici assegnati dai router coinvolti nello smistamento. Di conseguenza, nelle reti ATM i processi del livello Rete (tutti i router tra due host in comunicazione) mantengono le informazioni di stato delle connessioni, gestendo delle tabelle di instradamento supplementari. In TCP/IP, invece, i router si limitano a smistare i pacchetti, senza preoccuparsi di distinguere i pacchetti che appartengono alla stessa comunicazione.

Apertura connessione

Il sistema origine che deve avviare una comunicazione invia al destinatario un pacchetto di tipo CALL_REQUEST.

Nel pacchetto, oltre agli indirizzi del mittente e del destinatario, il sistema terminale mittente assegna il numero del canale logico a questa comunicazione. Il mittente consegna il pacchetto al router.

Esempio:
Il pacchetto giunge al router sulla porta 2.

Il router legge l'intestazione del pacchetto per conoscere il destinatario, quindi consulta la sua tabella di instradamento e decide che il destinatario è raggiungibile attraverso la porta 5.

Il router assegna al pacchetto un numero di canale logico uscente e annota, in una tabella di transcodifica, le informazioni seguenti:

pacchetti entranti

pacchetti uscenti

porta INcanale logico INporta OUTcanale logico OUT

Continuando l'esempio, si suppone che il pacchetto giunge al successivo router B sulla porta 1 e questi, leggendo l'intestazione, trova, dalla sua tabella di instradamento, che il destinatario è raggiungibile attraverso la porta 4.

Il router B sceglie un numero di canale logico, ad esempio 35, e invia il pacchetto.

Si supponga che il destinatario sia direttamente collegato al Router B e quindi il pacchetto è giunto a destinazione.

All'interno dei router attraversati è rimasta traccia del percorso seguito tramite le associazioni IN (porta, canale) e OUT (porta, canale).

Il sistema destinatario risponde con un pacchetto di conferma rivolto al mittente.

Ha quindi inizio la fase di scambio dati. In questa seconda fase i pacchetti recano l'informazione sul numero di canale logico e quindi seguono il percorso che i router hanno individuato sul pacchetto di chiamata.

Durante il trasferimento dati il sistema sorgente invia i pacchetti con il canale logico numero 53, il router A, questa volta, non deve consultare la tabella di instradamento ma deve accedere, molto più rapidamente alla riga 53 della tabella di transcodifica, trova che il pacchetto deve essere ripetuto sulla porta 5 con numero di canale logico 21, e lo stesso comportamento seguirà il router B.

Caratteristiche del Protocollo orientato alla connessione

Con la tecnica del circuito virtuale un router consulta la tabella di instradamento, per cercare il destinatario del pacchetto, solo quando deve smistare il pacchetto di chiamata, i pacchetti dati successivi vengono smistati da un router usando il numero di canale logico come indice di accesso alla tabella di transcodifica per individuare, molto rapidamente, la porta di uscita stabilita per il pacchetto di chiamata.

La differenza è che l'operazione di ricerca dell'indirizzo all'interno della tabella di instradamento è sicuramente molto lenta rispetto all'accesso diretto alla tabella di transcodifica, usando il numero di canale logico come indice.

La creazione di una connessione occupa memoria all'interno di un router, quindi il numero di canali logici è limitato in ogni router, la saturazione dei canali logici disponibili impedirà l'apertura di nuove connessioni.

Il rilascio della connessione, mediante un pacchetto di chiusura, ha lo scopo di liberare memoria nei router, quindi è una misura di prevenzione della congestione.

La tecnica del circuito virtuale consente, in particolare, di assegnare agli utenti i "circuiti virtuali permanenti", eliminando quindi la necessità dell'apertura connessione.

Nelle architetture TCP/IP i router svolgono solo compiti di instradamento dei pacchetti (livello 3: Network), consultando la tabella di instradamento, il servizio orientato alla connessione è affidato al protocollo del livello 4 (Trasporto) che funziona solo sui sistemi terminali, liberando i router dal compito di mantenere traccia del circuito virtuale.