100 likes | 217 Views
Controllo di flusso TCP. Elementi base del flusso TCP (1). Comunicazione punto-punto Un mittente, un destinatario. Flusso di byte affidabile Flusso suddiviso in segmenti e non in messaggi indipendenti (come i datagram UDP). Pipeline controllata
E N D
Elementi base del flusso TCP (1) • Comunicazione punto-punto • Un mittente, un destinatario. • Flusso di byte affidabile • Flusso suddiviso in segmenti e nonin messaggi indipendenti(come i datagram UDP). • Pipeline controllata • Il controllo di flusso stabilisce le dimensioni della finestra. • Buffer di invio e ricezione • Come abbiamo visto nelle lezioni precedenti.
Elementi base del flusso TCP (2) • Full duplex • Flusso bidirezionale in una singola connessione. • Orientato alla connessione • Handshaking tra mittente e destinatario prima dell’invio dati. • Controllato • Adattamento alle diverse velocità relative del mittente e del destinatario.
Elementi base del flusso TCP (3) L’applicazione LEGGE i dati L’applicazione SCRIVE i dati Porta Socket Porta Socket TCP Buffer Ricezione TCP Buffer Invio SEGMENTO
Segmento TCP 32 bit URG: dati urgenti (non usato) ACK: ACK valido PSH: push data (non usato) RST, SYN, FIN: Inizio, fine connessione # porta mittente e destinatario porta sorg. # porta dest. # numero di sequenza Conteggio in byte (NON in segmenti!) numero di acknowledgement lungh. intest. non usato dim. fin. ricev. U A P R S F somma di controllo ptr dati urgenti Opzioni (lunghezza variabile) Advertised window: # byte che il ricevente accetta Dati applicativi (lunghezza variabile) Internet checksum (come UDP)
Intestazione TCP : campi principali • Numero di sequenza (32 bit) • Numero del primo byte del segmento. • Dimensioni finestra ricevente (16 bit) • Dimensione finestra come nel GBN o nel selective repeat; in TCP la dimensione della finestra è variabile. • Acknowledgment (32 bit) • Contiene il successivo numero di sequenza atteso.
Tempo Numeri di sequenza e ACK TCP Host A Host B Server di eco Utente digita ‘C’ Seq=42, ACK=79, data = ‘C’ B invia ACK per la ricezione di ‘C’, invia a sua volta ‘C’ Seq=79, ACK=43, data = ‘C’ A invia ACK per la ricezione di ‘C’ Seq=43, ACK=80 La gestione dei segmenti arrivati fuori ordine dipende dall’implementazione.
Intestazione TCP: campi principali • Lunghezza d’intestazione (4 bit) • I campi opzione possono variare la lunghezza dell’intestazione. • Il valore della lunghezza espresso in numero di parole da 32 bit = 4 byte. • 4 bit => 24 *4 byte = 64 byte; poiché l’intestazione standard è lunga 20 byte ci sono 44 byte disponibili per le opzioni. • L’intestazione UDP, invece, è lunga solo 8 byte.
Numeri di sequenza e finestra (1) • L’intestazione comprende: • 32 bit per il numero di sequenza (e di acknowledgement); • 16 bit per la dimensione della finestra. • Per la dimensione massima della finestra deve anzitutto valere: • Dimensione finestra <= ½ SpazioNumeriSequenza • Condizione facilmente soddisfatta: la dimensione della finestra è di 16 bit232 >> 2* 216
FINE Numeri di sequenza e finestra(2) • La dimensione finestra è un campo di 16 bit => la finestra massima è di 64 KB • È sufficiente per riempire il pipeline? Non sempre • Lunghezza pipeline = delay*BW • Esempio: 100 ms roundtrip e 100 Mbps => 1.19 MB • Numero di sequenza è un campo di 32 bit=> 4 GB • Il tempo di vita massimo del segmento è di 120 sec. • Il wrap-around può arrivare troppo presto? Sì, è possibile per i seguenti motivi: • 4 GB/120 sec = 273 Mbps • < Gigabit Ethernet e STS-12 a 622 Mbps