next up previous contents index
Avanti: IP Su: La rete Internet Indietro: Gli indirizzi   Indice   Indice analitico

Sottosezioni

TCP

Discutiamo ora del TCP6.51, che offre ai processi applicativi un servizio di trasporto a circuito virtuale, attaccato ad una porta6.52 di un nodo remoto individuato dall'indirizzo IP. Il suo compito è quello di ricevere dai processi applicativi dei dati, suddividerli in pacchetti, ed inviarli al suo pari che svolge il processo inverso.

Il pacchetto TCP

La struttura di un pacchetto TCP è mostrata in figura, e comprende una intestazione composta da 6 gruppi (o più) di 4 byte per un minimo di 192 bit, a cui segue un numero variabile di gruppi di 4 byte di Dati, provenienti dagli strati applicativi superiori.

\begin{floatingfigure}{0.500000\textwidth}
\vspace{0.3cm}
{\centering\begin{tabu...
...ze . . .}}\\
\hline
\end{tabular}\scriptsize\par }
\par ~
\end{floatingfigure}

Troviamo subito i numeri delle porte a cui si riferisce la connessione, mentre gli indirizzi IP sono aggiunti dallo strato di rete. I numeri di Sequenza e di Riscontro servono rispettivamente a numerare i bytes dei pacchetti uscenti, ed a notificare l'altro lato del collegamento del numero di sequenza del prossimo byte che si aspetta di ricevere6.53, riscontrando implicitamente come correttamente arrivati i pacchetti con numero di sequenza più basso.

Offset (4 bit) codifica il numero di parole da 4 byte dell'intestazione, mentre nei 6 bit Riservati non è mai stato scritto nulla. I 6 bit del campo Controllo hanno ognuno un nome ed un significato preciso, qualora posti ad uno. Il primo (URG) indica che il campo urgent pointer contiene un valore significativo; ACK indica che si sta usando il Numero di Riscontro; PSH indica un pacchetto urgente che non può rispettare la coda in ricezione; RST segnala un malfunzionamento e impone il reset della connessione; SYN è pari ad uno solo per il primo pacchetto inviato per richiedere di creare una connessione; FIN indica che la sorgente ha esaurito i dati da trasmettere.

I 16 bit di Finestra rappresentano il numero di byte che, a partire dal numero espresso dal Numero di Riscontro, il trasmittente è in grado di ricevere, ed il suo utilizzo sarà meglio illustrato tra breve nel contesto del controllo di flusso. Il Checksum serve al ricevente per verificare se si sia verificato un errore, il Puntatore Urgente contiene il numero di sequenza dell'ultimo byte di una sequenza di dati urgenti, e le Opzioni (di lunghezza variabile) sono presenti solo raramente, ed utilizzate a fini di controllo, ad esempio per variare la dimensione della finestra. Infine, il Riempimento conclude l'ultima parola da 32 bit.

Uno stesso pacchetto TCP può svolgere solo funzioni di segnalazione, o di sola trasmissione dati, od entrambe.

Apertura e chiusura della connessione

Il TCP offre un servizio di circuito virtuale, e quindi prima di inviare dati, deve effettuare un colloquio iniziale con il nodo remoto di destinazione. In particolare, il colloquio ha lo scopo di accertare la disponibilità del destinatario ad accettare la connessione, e permette alle due parti di scambiarsi i rispettivi numeri di sequenza descritti alla nota 53.

0.400000
\resizebox* {0.4\textwidth}{!}{\includegraphics{cap6/f6.23.ps}}

Dato che anche il ``chiamante'' deve riscontrare il numero che il chiamato ha fornito, occorrono tre pacchetti per terminare il dialogo, che prende il nome di THREE WAY HANDSHAKE6.54. Il diagramma a lato mostra l'evoluzione temporale del colloquio, ed evidenzia come al primo SYN che pone NSA = x, ne segua un altro che pone NSB = y, sequito a sua volta dall'ACK di chi ha iniziato6.55. E' inoltre evidenziato sia il processo applicativo che intende comunicare (A) e quello che si pone in ascolto (B).

La chiusura può avvenire per diverse cause: o perchè è terminato il messaggio, segnalato dal bit FIN, o per situazioni anomale, che il TCP indica con il bit RST.

Protocollo a finestra

Allo scopo di realizzare un controllo di flusso, il TCP prevede l'uso dell'NR del ricevente per dosare il ritmo con cui trasmettere i propri pacchetti. La lunghezza di Finestra comunicata con il SYN del proprio pari, determina la quantità di memoria riservata per i buffer dedicati alla connessione, che viene gestita come una memoria a scorrimento o finestra scorrevole.

0.400000
\resizebox* {0.4\textwidth}{!}{\includegraphics{cap6/f6.24.ps}}

Questa memoria è presente per gestire i casi di pacchetti ritardati o fuori sequenza, ed il trasmittente (vedi figura) non fa avanzare il limite inferiore finchè non riceve un riscontro con NR pari ad un numero di byte interno alla finestra (che contiene i bytes già trasmessi). In questo modo non occorre attendere il riscontro di tutti i bytes, o di tutti i pacchetti (che devono comunque essere di dimensione inferiore alla finestra), ma ci può avvantaggiare trasmettendo l'intero contenuto della finestra. Una finestra del tutto analoga è utilizzata dal ricevente, allo

scopo di ricomporre l'ordine originario dei pacchetti consegnati disordinatamente dallo strato IP di rete. Non appena il ricevente completa un segmento contiguo al limite inferiore, sposta quest'ultimo in avanti di tanti bytes quanti ne è riuscito a leggere in modo contiguo, ed invia un riscontro con NR pari al più basso numero di byte che ancora non è pervenuto6.56.

Nel caso in cui sia settato il bit URG6.57, si stanno inviando dati urgenti fuori sequenza, e che non devono rispettare il protocollo a finestra, come ad esempio per recapitare un segnale di interrupt relativo ad una sessione Telnet per terminare una applicazione remota.

Controllo di errore

Trascorso un certo tempo (detto timeout) nell'attesa di un riscontro, il trasmittente ritiene che alcuni pacchetti sono andati persi, e li re-invia6.58. Il valore del timeout viene calcolato dinamicamente dal TCP in base alle sue misure di round-trip delay6.59, ossia del tempo che intercorre in media tra invio di un pacchetto e ricezione del suo riscontro. In questo modo il TCP si adatta alle condizione di carico della rete ed evita di ri-spedire pacchetti troppo presto o di effettuare attese inutili. In particolare, nel caso di rete congestionata aumenta la frequenza dei pacchetti persi, e valori di timeout troppo ridotti potrebbero peggiorare la situazione.

Controllo di flusso

Il meccanismo a finestra scorrevole determina, istante per istante, il numero massimo di bytes che possono essere trasmessi verso il destinatario, e pertanto consente al nodo meno veloce di adeguare la velocità di tramissione alle proprie capacità. La dimensione della finestra può essere variata (su iniziativa del ricevente) nel corso della connessione, in accordo al valore presente nel campo Finestra dell'intestazione TCP. Ad esempio, una connessione può iniziare con un dimensione di finestra ridotta, e poi aumentarla nel caso in cui non si verifichino errori, la rete sopporti il traffico, ed i nodi abbiano memoria disponibile.

Controllo di congestione

Il TCP può usare la sua misura di round-trip delay come un indicatore di congestione della rete, e lo scadere di un timeout come un segnale del peggioramento della congestione. In tal caso quindi, può essere ridotta la dimensione della finestra di trasmissione, caricando così di meno la rete.

UDP

Lo User Datagram Protocol è ancora un protocollo di trasporto, che opera senza connessione, e sostituisce il TCP per inviare pacchetti isolati, o serie di pacchetti la cui ritrasmissione (se perduti) sarebbe inutile. Ad esempio, è utilizzato nella trasmissione di dati in tempo reale, oppure per protocolli di interrogazione e controllo come il DNS.

Servizi

In una prossima edizione saranno brevemente illustrate le funzioni di http, ftp, telnet, smtp, ping, traceroute, nntp.


next up previous contents index
Avanti: IP Su: La rete Internet Indietro: Gli indirizzi   Indice   Indice analitico
alef@infocom.uniroma1.it
2001-06-01