Sei sulla pagina 1di 2

Il livello trasporto

Servizi a livello trasporto


Dal punto di vista del livello applicazione due processo sono connessi direttamente tra di loro.
Il livello trasporto converte i messaggi del livello superiore in segmenti di minori dimensioni ed
aggiunge ad ogni blocco un header. Successivamente li passa al livello connessione.
I protocolli a livello trasporto forniscono una comunicazione logica tra processi che girano su due
host diversi, mentre i protocolli a livello rete si occupano della comunicazione tra gli host.
Quindi il livello trasporto riceve i segmenti dal livello rete ed ha il compito di consegnare i dati
all'applicazione corretta.
Multiplexing: il livello trasporto riceve i blocchi di dati da diverse applicazioni, deve
incapsularli nei segmenti e aggiungere un header che contiene le informazioni relative al
socket di provenienza e di destinazione, passandoli poi al livello rete.
Demultiplexing: il livello trasporto del destinatario deve leggere le informazioni relative al
socket e consegnare i dati a quello indicato.
Multiplexing UDP: Modalit connectionless. Il livello trasporto verifica che abbia un numero di
porta, in caso contrario gliene assegna uno. L'host destinatario, per rispondere, utilizza il numero di
porta scritto nell'header del pacchetto ricevuto.
Multiplexing TCP: Modalit connection oriented. Un socket TCP identificato da quattro valori:
indirizzi IP di mittente e destinatario e numeri di porta sorgente e di destinazione. Quando arriva un
segmento, l'host utilizza tutti i quattro valori in questo procedimento:
Il client crea un socket ed invia una richiesta al welcoming socket del server
quando l'applicazione server riceve la richiesta di connessione, localizza il processo che sta
aspettando una connessione e genera un nuovo socket
TCP annota i quattro valori identificativi del segmento di richiesta e li assegna al socket
appena creato, in modo che in futuro tutti i segmenti che possiedono questi valori vengano
indirizzati al socket appena creato
In questo modo il server in grado di demultiplare molte connessioni contemporaneamente senza
commettere errori.
UDP
UDP un protocollo estremamente semplice: effettua solamente una funzione di
multiplexing/demultiplexing e una verifica degli errori. Assegna una porta sorgente ed una porta
destinatario, non effettua handshake.
UDP non fornisce controllo di flusso, infatti alla ricezione il protocollo appende i segmenti in un
buffer di dimensioni finite che precede il socket. Se la velocit di ricezione superiore a quella di
lettura, il buffer si riempie e inizia a scartare segmenti.
Ci sono delle applicazioni che preferiscono UDP a TCP, come quelle che necessitano una
trasmissione veloce e tollerano una certa perdita di dati, preferendo controllare gli errori a livello
applicazione. UDP inoltre non necessita di nessuna impostazione della connessione (handshake),
evitando i ritardi. UDP non necessita di nessuno stato di connessione, riuscendo cos a gestire un
numero maggiore di utenti, inoltre l'header UDP pi piccolo di quello TCP.
TCP
TCP connection oriented perch effettua l'handshake, ovvero si scambia un certo numero di

segmenti prima di iniziare la connessione vera e propria. Inoltre TCP full duplex e possiede una
connessione punto-punto, ovvero tra un singolo mittente ad un singolo destinatario.
Per stabilire una connessione il processo TCP invia uno speciale segmento al server, che risponde
con un altro segmento specifico. Successivamente i due processi iniziano a scambiarsi dati: il
processo client passa i segmenti al socket, che li dirige al buffer di invio della connessione.
La quantit di dati che pu essere inserita in un segmento limitata dalla sua dimensione massima,
che a sua volta limitata dalla dimensione massima del frame a livello connessione che pu essere
inviato dall'host mittente.
Il segmento TCP formato da vari campi:
Porta sorgente
Porta destinatario
Numero di sequenza: serve per garantire il trasferimento affidabile dei dati, indica il numero
del primo byte del segmento all'interno della sequenza di byte.
Numero di riconoscimento: il numero di sequenza del prossimo segmento che l'host si
aspetta di ricevere.
Lunghezza dell'header
Finestra di ricezione: serve per il controllo di flusso dei dati: indica il numero di byte che il
destinatario disposto ad accettare
Dati
I numeri di sequenza sono relativi al flusso di byte trasmessi e non alla serie dei segmenti, perch
TCP vede i dati come un sequenza ordinata.
I numeri di riconoscimento servono per scartare o registrare in aree particolari i dati che non
seguono la consequenzialit dei messaggi.
Timeout: meccanismo utilizzato per evitare di ritrasmettere un segmento che non andato perso ma
che ancora in transito sulla rete. E' una variabile di tempo che superiore al tempo impiegato dal
segmento per fare andata e ritorno.
In caso il segmento di risposta (chiamato anche ACK) non arrivi entro il timeout, il client provvede
a reinviare il segmento. Le ritrasmissioni innescate dal timeout hanno il problema che la scadenza
pu essere relativamente lunga, aumentando il ritardo punto-punto. Fortunatamente, il mittente pu
individuare la perdita di pacchetti prima che scada il timeout, notando i cosiddetti ACK duplicati.
Se infatti il mittente riceve per tre volte lo stesso ACK, considera perso il segmento
immediatamente successivo.
Per evitare di saturare il buffer della ricezione, TCP fornisce il controllo di flusso attraverso una
variabile, mantenuta dal destinatario, chiamata finestra di ricezione, il cui scopo quello di indicare
lo spazio disponibile nel buffer di ricezione del destinatario. Essa si calcola sottraendo allo spazio
massimo del buffer la differenza tra l'ultimo messaggio letto e l'ultimo ricevuto.
Quando un host riceve un segmento TCP il cui numero di porta non corrisponde ad alcun socket,
egli trasmette uno speciale segmento di reset al mittente, indicando il fatto che non esiste il socket
desiderato.