Il livello Trasporto
Si occupa di Aggregare i dato sottoforma di segment, per passarli al livello soprastante(livello sessione) in fase di ricezione al livello sottostante in fase di trasmissione In questo livello non sono più gli host a comunicare tra loro , come accade nel livello 3, ma sono le applicazioni identificate da una porta. Questo livello ha 6 funzioni:
- 1) Garantire un servizio orientato alla connessione, il livello 3 non garantisce una connessione persistenze verso l'host di destinazione, ci pensa quindi il livello 4, poi viene chiusa quando non serve più
- 2) Corretto ordine di consegna, i pacchetti siccome prendono strade diverse non arrivano nel'ordine preciso, questo livello verifica il loro ordine prima di passarli in ricezione
- 3) Trasferimento affidabile, si occupa del'integità dei dati, in caso un dato non è giusto lo deve far ritrasmettere
- 4) Controllo di flusso, due host non hanno lo stesso tasso di trasmissione, uno può trasmettere più dati più velocemente rispetto ad altri, questo causa la perdita dei dati, quindi regola il loro flusso
- 5) Rconosce quando la rete si congestiona , regola la velocità di trasmissione
- 6) Multiplazione- permette di creare diverse connessioni tra due host, tipicamente permette di usare più porte per stabilire diverse connessioni
Un segment header varia da 20 a 60 byte, tra cui 40 byte sono dedicati alle option. Ha i seguenti campi:
- 1) Source port Adress - contiene l'indirizzo della porta da inviare il segment
- 2) Destinatio port Address- contiene l'indirizzo della porta del'applicazione nel'host che riceve il segment
- 3) Sequense number - contiene un numero di sequenza per riassemblare il messaggio ,riordiando i segmenti ricevuti
- 4) Acknowledgement Number - contiene un numero di riconoscimento ovvero il numero che il destinatario si aspetta di avere, conferma la corretta trasmissione dei dati
- 5) Header Length (HLEN) - Questo è un campo a 4 bit che indica la lunghezza dell'intestazione TCP mediante un numero di parole di 4 byte nell'intestazione, ovvero se l'intestazione è di 20 byte (lunghezza minima dell'intestazione TCP), allora questo field conterrà 5 (perché 5 x 4 = 20) e la lunghezza massima: 60 byte, quindi manterrà il valore 15 (perché 15 x 4 = 60). Pertanto, il valore di questo campo è sempre compreso tra 5 e 15.
- 6) Flags - si tratta di 6 bit di controllo a 1 bit che controllano la creazione della connessione, la terminazione della connessione, l'interruzione della connessione, il controllo del flusso, la modalità di trasferimento, ecc. La loro funzione è:
- a) URG - se impostato ad 1 indica che nell segment sono presenti dati urgenti presente alla posizione offset idicata
- b) ACK - se impostato a 1 indica che il campo Acknowledgment number è valido
- c) PSH - se impostato a 1 indica che i dati in arrivo non devono essere bufferizzati ma passati subito ai livelli superiori dell'applicazione
- d) RST: ripristina la connessione
- e) SYN: sincronizza i numeri di sequenza
- f)FIN: terminare la connessione
- Window size [16 bit] - Indica la dimensione della finestra di ricezione dell'host mittente, cioè il numero di byte che il mittente è in grado di accettare a partire da quello specificato dall'acknowledgment number.
- Checksum -questo campo contiene il checksum per il controllo degli errori. È obbligatorio in TCP rispetto a UDP. Il tipo più semplice di checksum consiste nel sommare in trasmissione tutti i bit del messaggio e di memorizzare il valore risultante nel frame inviato. Per controllare l'integrità del messaggio sarà sufficiente effettuare in ricezione la stessa operazione di somma e confrontarla con il checksum memorizzato nel frame. Se i due valori coincidono, i dati possono essere considerati integri.
- Urgent Pointer -questo campo (valido solo se è impostato il flag di controllo URG) viene utilizzato per indicare i dati urgentemente richiesti che devono raggiungere il processo ricevente al più presto.
Al livello trasporto abbiamo principalmente 2 protocolli TCP e UDP,usati per due motivi diversi.
- Il TCP garantisce l'arrivo del messagio, le informazioni rimangono intatte, però è più lento , è orientato ad avere una connessione affidabile, garantendo l'arrivo corretto dei pacchetti.
- UDP - non garantisce l'arrivo completo del messaggio, lungo il percorso qualcosa si può perdere, è più veloce, per questo è usato da piattaforme di streaming , o videogiochi, è usato là dove non importa se il messaggio è intatto.
L'intestazione UDP è composta da quattro campi ciascuno di 2 byte di lunghezza --
- Source port - questo campo identifica la porta del mittente. Azzerato se non utilizzato.
- destination port - identifida la porta dell'applicazione nel'host ricevente il segment
- la lunghezza in byte dell'intestazione UDP e dei dati incapsulati. Il valore minimo per questo campo è 8 e max 16.
- checksum - serve per effettuare il controllo degli errori, non è obbligatorio in UDP, quando è posto a 0 viene disabilitato.
I device di rete che funzionano a questo livello sono i firewall.