Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
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.
Formato Datagram
Un pacchetto UDP presenta 2 righe da 32 bit (4 byte) di header (in tutto 8 byte)
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.
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.
- 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.
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)
-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)
Urgent pointer invece indica lo spiazzamento dal primo byte, dove terminano i dati urgenti.
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)
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.
Ricezione 3DUPACK:
Scadenza RTO: