Un protocollo a livello di trasporto consente una comunicazione logica tra i processi. Per comunicazione logica si intende che i processi comunicanti non sono nello stesso sistema, ma si comportano come se lo fossero. I processi applicativi usano il livello di trasporto per scambiarsi i messaggi, senza preoccuparsi dei dettagli dell’infrastruttura fisica per trasportarli. Il livello di trasporto riceve i messaggi dal livello di applicazione in segmenti (pacchetti del livello di trasporto). Il livello di trasporto passa i segmenti al livello di rete dove viene incapsulato in un datagramma e inviato a destinazione.
I router intermedi agiscono solo sui i campi a livello di rete (datagrammi).
Arrivati a destinazione, i datagrammi vengono passati al livello di trasporto. Questo lo elabora per rendere disponibili le informazioni al processo al livello applicativo.
Un protocollo di rete consente una comunicazione logica tra host.
Un protocollo di trasporto consente una comunicazione logica tra processi.
Il protocollo di trasporto ha due protocolli: TCP e UDP.
TCP è orientato alla connessione ed affidabile. UDP no.
Il livello di rete ha un protocollo: internet protocol, il suo modello di servizio prende il nome di best-effort delivery service. Ovvero IP si impegna ad inviare al destinatario i segmenti presi in carico dal livello di trasporto, tuttavia non c’è nessuna garanzia che essi arrivino a destinazione o che arrivino nel corretto ordine.
UDP e TCP forniscono un controllo di integrità includendo campi per il riconoscimento di errori nelle intestazioni dei propri segmenti. Questi due sono servizi minimi a livello di trasporto e sono anche gli unici presenti in UDP.
TCP offre una trasferimento affidabile, dunque, anche se il protocollo sottostante di rete è inaffidabile, le peculiarità di TCP lo rendono affidabile.
TCP offre inoltre il controllo della congestione evitando che le connessioni TCP intasino i collegamenti e un’eccessiva quantità di traffico tra i router degli host comunicanti.
Queste due operazioni sono utili per trasformare il servizio di trasporto host to host del protocollo di rete, in servizio di trasporto process to process per le applicazioni in esecuzione sugli host.
Nell’host destinatario il livello di trasporto riceve i pacchetti dal livello di rete (sottostante), il livello di trasporto ha il compito di consegnare i dati dei segmenti al processo applicativo appropriato sull’host.
Ricordiamo che un processo può gestire una o più socket, attraverso le quali i dati fluiscono dalla rete al processo e viceversa. Ad un dato istante possono esserci più socket in ascolto sull’host. Ciascuna avrà un identificatore univoco il cui formato dipende dal tipo di socket (UDP o TCP).
Quando arriva il datagramma dal livello di rete a livello di trasporto nell’host ricevente, viene decapsulato in segmento, il livello di trasporto legge i dati contenuti nei campi del segmento per identificare la socket di destinazione e dirigervi il segmento.
Il trasporto del segmento alla giusta socket si chiama demultiplexing. L’operazione di radunare i dati da diverse socket, sull’host mittente, e incapsulare i dati di ognuna su diversi segmenti a livello di trasporto viene detta multiplexing.
Di seguito lo schema di un segmento a livello di trasporto.
Le socket hanno un identificatore univoco (numero di porta), che viene assegnato alla socket al momento della sua creazione. Il numero di porta di origine è utile al processo che riceve il messaggio per rispondere e fare in modo che il messaggio venga recapitato ad una certa socket. I numeri di porta vanno da 0 a 65535. I numeri di porta che vanno da 0 a 1023 sono usati per processi noti (http, ftp, ssh, …).
Quello che abbiamo descritto finora è il multiplexing/demultiplexing dovuto ad una connessione UDP.
In un protocollo orientato alla connessione (TCP) è leggermente diverso.
Bisogna innanzitutto osservare che i segmenti TCP incapsulati contengono oltre all’indirizzo e alla porta di destinazione, anche l’indirizzo e la porta di origine. La socket di un processo su un host che funge da server si mette in ascolto in attesa di qualche richiesta da parte di qualche client. Quando arriva la richiesta il livello di trasporto del ricevente (server) prende nota dei quattro parametri passati: IP origine, porta origine, IP destinazione e porta destinazione. Quando viene stabilita la connessione TCP il protocollo di trasporto prende nota di questi quattro parametri e da questo momento in poi tale connessione TCP è identificata da essi, ogni volta che il server riceve segmenti destinati a una certa porta, ad un certo IP e partiti da un certo IP e da un certa porta, essi vengono inviati nella connessione (già stabilita) adeguata.
Navigazione: