Il livello di trasporto TCP/IP

Materie:Appunti
Categoria:Sistemi

Voto:

2 (2)
Download:62
Data:18.06.2007
Numero di pagine:4
Formato di file:.doc (Microsoft Word)
Download   Anteprima
livello-trasporto-tcp-ip_1.zip (Dimensione: 3.15 Kb)
trucheck.it_il-livello-di-trasporto-tcp-ip.doc     9.54 Kb
readme.txt     59 Bytes



Testo

IL LIVELLO DI TRASPORTO DEL MODELLO TCP/IP

Il livello di trasporto nel modello TCP/IP offre due protocolli di trasporto: TCP (connesso e affidabile) e UDP (non connesso e non confermato).
Se l’applicazione usa UDP non può inviare più di 64 KB di informazioni per volta, UDP aggiunge ai dati un’intestazione.
Se l’applicazione usa TCP il flusso dati viene spezzato in un’unità di dimensione massima 64 KB (di solito 1500 byte), TCP aggiunge a ogni unità un’intestazione.
Ogni segmento del livello di trasporto viene passato al livello di rete che aggiunge l’intestazione IP. Poiché IP è non connesso non confermato, UDP non se ne preoccupa, mentre TCP aspetta la conferma che i pacchetti siano arrivati e in caso contrario ritrasmette e se arrivano disordinati li riordina.

L’indirizzo di destinazione TSAP nel livello di trasporto è chiamato porta. La porta di destinazione indica l’applicazione con cui si vuole comunicare, la stazione di destinazione è individuata dall’indirizzo IP. Il punto di accesso della comunicazione (chiamato socket) è individuato dall’indirizzo IP della stazione e dal numero di porta dell’applicazione. Per ottenere un servizio TCP si deve creare una connessione fra socket del mittente e del ricevente, la connessione è identificata dalla coppia di socket. Le porte sono numeri a 16 bit, i numeri di porta fino a 1023 sono riservati per servizi standard (well knows ports) e sono assegnati dalla IANA. Se la porta non è disponibile si usa ICMP per segnalare che la porta è irrangiungibile.

UDP (user data protocol) fornisce un metodo un metodo per spedire dati senza dover stabilire una connessione con il destinatario. Permettono comunicazioni multicast e broadcast, non disponibili con TCP. Un segmento UDP ha un’intestazione di 8 byte ed è composta da 2 byte per il numero di porta del mittente, 2 byte per il numero di porta del destinatario, 2 byte per la lunghezza del segmento, 2 byte per la checksum calcolata su una pseudointestazione.

TCP (transmission control protocol) è un protocollo che garantisce la consegna delle informazioni, in modo ordinato. Per usare TCP bisogna stabilire una connessione tra mittente e destinatario, sono connessioni punto a punto e full duplex. TCP non supporta multicasting e broadcasting. Per la consegna usa IP e quindi deve aggiungere meccanismi per confermare il ricevimento (ack), per ritrasmettere i dati perduti o danneggiati, per riordinare il flusso di dati. TCP riceve un flusso di dati da un’applicazione, lo spezza e spedisce queste unità come pacchetti IP, la destinazione conferma i dati ricevuti a un certo byte (flusso di byte) e ricostruisce il flusso originale.
TCP vede i dati come un flusso continui, ogni byte viene individuato da un numero di sequenza a 32 bit. Ogni segmento contiene il numero di sequenza del primo byte contenuto nel campo dati. La dimensione dei dati che possono essere trasportati in un segmento è 65.495 byte (deve essere contenuto in IP con 20 byte di intestazione di IP più 20 del TCP). L’ MTU è la massima dimensione di frame che una rete supporta.
Al momento di stabilire la connessione si negozia la dimensione dei segmenti. Se il pacchetto arriva a una rete con MTU più piccolo viene frammentato, se non può essere frammentato viene scartato e segnalato con un messaggio ICMP. Un segmento è formato da un’ intestazione di 20 byte, i segmenti con 0 byte dei dati sono usati per gli back e i messaggi di controllo. L’intestazione è formata da 2 byte per il numero di porta del mittente, 2 byte per quella del destinatario, 4 byte per il numero di sequenza del primo byte di dati, 4 byte per indicare il numero di sequenza del prossimo byte atteso, 4 byte per indicare dove iniziano i dati, 6 bit non usati, altri 6 bit di flag (apertura connessione, chiusura connessione, conferma, rifiutare apertura connessione, tipo di push, dati urgenti), 2 byte per la grandezza della finestra, 2 byte per la checksum su una pseudointestazione (indirizzo IP di mittente e destinatario, 8 zeri, 8 bit per il protocollo e 16 bit per la lunghezza del segmento TCP) e 2 byte per indicare dopo quanti byte iniziano i dati urgenti.
L’intestazione è seguita dalle opzioni.

Per il controllo del flusso TCP utilizza un protocollo a finestre scorrevoli di tipo go back n. Ciò che il mittente può spedire non dipende solo dagli back ricevuti, ma anche dallo spazio disponibile nel buffer del ricevente indicato dal window size che il ricevente manda ad ogni conferma in modo che il mittente si possa regolare. Quando la dimensione della finestra è 0 i mittente non può spedire altri dati (se non urgenti). Viene usata una sonda nel caso andasse perduto l’aggiornamento che la finestra non è più 0. Si usa un timer per ritrasmettere il segmento se non viene ricevuta la conferma. Per rendere più efficiente la trasmissione si può confermare solo l’ultimo byte, facendo però partire un timer in modo da non far scadere il timer del mittente. Se il mittente invia pochi caratteri per volta si spedisce solo il primo carattere e si salva il resto in un buffer, quando il primo viene confermato si spediscono tutti i dati del buffer in un unico segmento.

La congestione può essere segnalata con messaggi ICMP. L’unica soluzione per risolvere la congstione è ridurre il flusso di dati. Il mittente può inviare tanti dati quanti il destinatario è pronto a riceverne. Il mittente mantiene due finestre che indicano quanti dati possono essere trasmessi in ogi istante in base alla capacitò del ricevente e in base alla capacità della rete (quello che può essere trasmesso è il minimo fra le due). La finestra che indica la capacità della rete è detta finestra di congestione che viene inizializzata uguale alla dimensione del segmento massimo quando viene creata la connessione. Ogni volta che un segmento spedito viene confermato prima che il timer di trasmissione scada, il valore della finestra di congestione viene raddoppiato il quale continua a crescere esponenzialmente fino a quando raggiunge la dimensione della finestra del ricevente, fino a quando un timer scade o fino a quando raggiunge un valore di soglia posto inizialmente a 64 KB.
Se il timer scade la soglia viene posta alla metà della finestra di congestione e la finestra viene riportata alla dimensione massima del segmento.
Se la finestra raggiunge la soglia, ad ogni trasmissione riuscita la finestra aumenta della dimensione di un segmento massimo (algoritmo di slow start).

Esempio