Sei sulla pagina 1di 4

Livello 4 Trasporto

Il livello 4 il primo livello End-to-End, cio il primo livello in cui si suppone un collegamento diretto tra
mittente e destinatario. Le funzioni del livello 4 sono essenzialmente:

- La multiplazione e demultiplazione (obbligatorio)


- Lordinamento dei pacchetti ricevuti
- La rilevazione ed eventuale gestione dellerrore
- Il controllo di flusso
- Il controllo di congestione

Porta

I numeri di porta sono utilizzati per effettuare la multiplazione logica a livello 4, ovvero permettono ad un
host di effettuare pi connessioni contemporanee (relative ad applicativi differenti) verso lo stesso host,
facendo in modo che i pacchetti siano indirizzati alla giusta entit di livello superiore. La porta identifica
quindi univocamente unentit di livello 5 su un host.

Linsieme di Porta locale, IP host mittente, Porta Remota, IP host destinatario e Protocollo di trasporto,
identifica univocamente un flusso dati.

Lindirizzo di porta composto da 16 bit, quindi un numero che va da 0 a 6535, di cui le porte da 1 a 1023
sono riservate e dette Well know Port cio porte, lato server, destinate ad applicazioni note.

Lato client solitamente come porta locale scelta la prima porta libera a partire dalla 1024.

Nella pila TCP/IP abbiamo due protocolli di livello 4: UDP e TCP

UDP (User Datagram Protocol)

un protocollo di livello di trasporto inaffidabile e non orientato alla connessione (connectionless).


Inaffidabile poich non gestisce gli errori (li rileva soltanto) e lordinamento dei pacchetti in ricezione, che
sono detti datagram. Essenzialmente si occupa della multiplazione e demultiplazione.

Essendo molto rapido solitamente utilizzato per comunicazioni time-sensitive.

Formato Datagram

Un pacchetto UDP presenta 2 righe da 32 bit (4 byte) di header (in tutto 8 byte)

Source port Destination port


Lenght Checksum
Data

Il campo length rappresenta la lunghezza in byte dellintero datagram (lunghezza massima 6535 byte)

Il campo checksum rappresenta una somma di controllo efficace per rilevare alcuni tipi di errori. Il calcolo
del checksum effettuato su tutto il pacchetto UDP pi uno pseudoheader contente anche gli indirizzi ip
mittente e destinatario
Ip mittente
Ip destinatario
Zero Protocol type UDP length

Il checksum calcolato come la somma a 16bit del pacchetto pi lo pseudoheader (sommando anche
eventuali resti) poi complementata a 1 ed inserita nelle header.

In ricezione effettuo nuovamente lo stesso procedimento e otter un numero pi il suo complemento ad 1


(che deve restituire 1) che complementato nuovamente a 1, deve restituire 0.

Se il risultato del checksum 0 non sono stati rilevati errori (potrebbero essercene comunque), se invece il
risultato diverso da 0, vengono rilevati errori (che udp non gestisce) il pacchetto scartato ed inviato un
messaggio ICMP.

UDP permette multicast.

TCP (transmission control protocol)

un protocollo di trasporto orientato alla connessione e affidabile. TCP si occupa di:

- Riordinare i pacchetti detti segmenti (per questo prevede una numerazione detti stessi e un buffer
in ricezione)
- Rileva e gestisce gli errori (quindi prevede un meccanismo di riscontro, ritrasmissione e un buffer in
trasmissione)
- Controllo di flusso (adatta dinamicamente il rate di trasmissione per non saturare il buffer del
ricevitore)
- Controllo di congestione

Formato segmento

Un pacchetto TCP presenta 5 righe di header obbligatorie da 32 bit (4 byte) pi 10 righe opzionali.

Porta mittente Porta destinatario


Sequence number
Ack number
HLEN FLAGS Advertised Window
Checksum Urgent poiner
Options
Data

Il sequence number il numero che identifica i pacchetti e ne permette il riordinamento in ricezione.


Il sequence number fa riferimento allo stream di dati provenienti dal livello applicativo: viene assegnato un
numero progressivo (a partire dalla zero relativo scelto in fase di creazione della connessione) ad ogni byte
proveniente dal livello applicativo, vengono poi creati i pacchetti e come sequence number inserito il
numero del primo byte presente nel payload.

Il TCP permette il piggyback, ovvero permette di inserire direttamente nel pacchetto dati (senza dover
mandare dei pacchetti a parte) i riscontri. Lack nel tcp di tipo cumulativo, se ho come ack number il
numero n+1 sto indicando di aver ricevuto fino al segmento n e voglio il segmento con primo byte pari a
n+1. Quindi lack number indica il numero di sequenza del prossimo segmento atteso dal ricevitore.

Il campo HLEN indica il numero di righe di header del pacchetto (4 bit, cio da 0 a 15)
Il campo FLAGS (6 bit), presenta 6 flag differenti:

-URG: indica che il payload presenta dati urgenti (i byte urgenti sono inseriti allinizio del payload)

-ACK: indica se il campo ack number ha significato

-PUSH: indica se il ricevitore deve passare immediatamente il segmento a livello superiore senza tenerli nel
buffer
-SYN,FYN,RESET: servono per stabilire e interrompere la connessione.

Il campo Advertise Windows indica lo spazio libero presente nel buffer del ricevitore (in byte)

Il campo checksum calcolato allo stesso modo del UDP

Urgent pointer invece indica lo spiazzamento dal primo byte, dove terminano i dati urgenti.

Poich TCP un protocollo connection oriented presenta 3 fasi differenti:

-Creazione della connessione


-Scambio dei dati
-Rilascio della connessione

Creazione della Connessione (3 way handshake, SYN, SYN-ACK, ACK):

la creazione della connessione necessaria per stabilire alcuni parametri della connessione (principalmente
lo zero relativo, flussi dati differenti hanno zero relativo differente)

TCP segue il paradigma client-server, per cui sempre il client a richiedere la creazione della connessione.

Il client manda un segmento con SYN=1 e ACK=0 in cui indica il suo sequence number (SN=X)

Il server riscontra tale segmento, con un segmento con SYN=1, ACK=1, ACKNUM=X+1, in cui inserisce il
proprio sequence number (SN=Y)

A questo punto il client sicuro che il server sincronizzato sul proprio sequence number, deve riscontrare
il pacchetto al server e per fare ci invia un segmento (SN=X+1) con SYN=0, ACK=1 e ACKNUM=Y+1

A questo punto la connessione stabilita, il client pu iniziare ad inviare i dati e lo fa con un segmento
sempre con SN=X+1 e ACKNUM=Y+1, in quanto fino ad ora non sono stati scambiati dati (alcune versioni di
tcp permettono di inserire i dati direttamente nel riscontro del sequence number del server)

Rilascio della Connessione (FYN, FYN-ACK, ACK)

Quando il client vuole chiudere la connessione invia un segmento con FYN=1, questo significa che non
invier pi dati al server ma potr ancora riscontrarli. Il server riscontra tale segmento. Quando il server
pronto a chiudere la connessione (non ha pi dati da inviare) invia anchesso un segmento con FYN=1 che
sar riscontrato dal client. Il client non chiude subito la connessione ma resta in attesa per un certo periodo
di tempo pari a 2 MSL, tipicamente 1 minuto (poich potrebbero esserci altri segmenti del server on the
fly). Dopo la scadenza di tale intervallo la connessione effettivamente chiusa e il client rilascia la porta
utilizzata per tale connessione.

Sequenza di stati.

Perdita segmenti TCP


Vi sono due eventi che il TCP interpreta come perdita dei segmenti: la ricezione di un 3dupack e la scadenza
di RTO

Ricezione 3DUPACK:

Scadenza RTO: