|
||||||||||||||
|
|
||||||||||||||
|
TCP - Transmission Control Protocol - -
Il Transmission Control Protocol (TCP), si assume la responsabilità di
instaurare un collegamento tra due utenti, di rendere affidabile il
trasferimento di dati e comandi tra essi ed infine di chiudere la
connessione. Esso è capace di trasferire un flusso continuo di dati fra
due utenti in entrambe le direzioni (full-duplex), decidendo quando
bloccare o continuare le operazioni a suo piacimento.
Come l'UDP, il TCP permette a più programmi applicativi su una stessa macchina di comunicare contemporaneamente, e demultiplexa il traffico dei pacchetti in ingresso a tali programmi; usa i numeri di porta per identificare la destinazione finale all'interno di una macchina. La fondamentale differenza con l'UDP è che il TCP garantisce un servizio di trasporto affidabile (Reliable Delivery Service), ponendo rimedio alle cause di inaffidabilità proprie dell'IP (duplicazione e perdita di dati, caduta di rete, ritardi, pacchetti ricevuti fuori ordine, etc.), anche se ciò comporta una implementazione più complessa. L'importanza dell'affidabilità del flusso permessa da tale protocollo è il motivo per cui il complesso del protocollo TCP/IP ha tale nome. L'affidabilità di questo servizio è caratterizzata da cinque proprietà: Stream Orientation: quando due programmi applicativi trasferiscono dati (stream of bits), il flusso nella macchina di destinazione passa al ricevente esattamente come è stato originto nella macchina sorgente. Virtual Circuit Connection: dal punto di vista del programmatore e dell'utente, il servizio che il TCP fornisce è analogo a fornire una connessione dedicata. Buffered Trasfer: i routers interessati dal trasferimento sono provvisti di buffers per rendere più efficiente il trasferimento e minimizzare il traffico di rete. Unstructured Stream: il TCP/IP stream service non adotta un flusso di dati strutturato; ovvero non c'è modo di distinguere i records che costituiscono il flusso dati. Full-duplex Connection: la connessione fornita dal TCP/IP stream service permette un trasferimento di flusso contemporaneo ed indipendente in entrambe le direzioni, senza apparente interazione.
Se un qualunque messaggio è troppo grande per un singolo pacchetto TCP
(gli standard consigliano una dimensione di 576 byte compreso l'header
del IP) si procede a dividerlo in segmenti di lunghezza fissa e poi,
arrivato a destinazione, si controlla che siano in ordine e si
riassemblano, in modo che tale operazione risulti del tutto invisibile
ai due utenti.
Un semplice protocollo del tipo "stop and wait" come questo abbassa
notevolmente le prestazioni della rete, sprecando gran parte della banda
disponibile nell'attesa dell'ACK relativo al pacchetto precedente;
infatti un canale full-duplex è utilizzato come se fosse un half-duplex. Sliding Windows L'introduzione del protocollo Sliding Windows (finestre scorrevoli) rende molto più efficiente la trasmissione e quindi l'utilizzo della banda, perchè permette al mittente di trasmettere tutti i pacchetti nella finestra senza dover aspettare l'ACK; via via che arrivano i vari ACK, il TCP fa slittare la finestra in avanti trasmettendo dei nuovi pacchetti dinamicamente, come rappresentato in figura:
Le dimensioni della finestra possono variare fino ad un massimo di 64
Kbytes. Una finestra di ampiezza opportuna riuscirebbe quasi,
ipotizzando di non perdere pacchetti, a saturare completamente la banda
di trasmissione. Il meccanismo della finestra è molto importante anche perché fornisce al ricevente un mezzo per governare la mole di dati spediti dall'utente sorgente. Infatti, nell'header dei pacchetti TCP esiste un campo specifico, detto "window", tramite il quale il ricevente indica al trasmittente la dimensione in byte della finestra che è disposto attualmente a ricevere (finestra del ricevente). Questo accordo avviene quando il ricevente spedisce un ACK (che è anche esso un pacchetto TCP) nel quale specifica innanzitutto l'ultima posizione riconosciuta valida e, a partire da questa, il numero di byte che attualmente può accettare. Headers
L'unità di trasporto tra i software TCP di due macchine è detto segment.
I segmenti sono scambiati per stabilire connessioni, trasferimenti di
dati, inviare ACK, comunicare la dimensione della Sliding Windows e
chiudere le connessioni.
Ciascun segmento è diviso in due parti: un TCP header ed un TCP data.
|
|||||||||||||
|
|
||||||||||||||
|
..:: Copyright © 2004-2005 - Atreides Corporation - Tutto il materiale presente nel sito è dei rispettivi proprietari ::.. |
||||||||||||||
Siti Partner:
The Centre.it -
Guadagnate con il Vostro sito web
con Zanox!
-
Euro 15,00+iva a tutti i nuovi iscritti !