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
• 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
TCP
Buffer
Invio
Buffer
Ricezione
SEGMENTO
Segmento TCP
URG: dati urgenti
(non usato)
32 bit
porta sorg. #
porta dest. #
numero di sequenza
ACK: ACK valido
PSH: push data
(non usato)
RST, SYN, FIN:
Inizio,
fine connessione
Internet
checksum
(come UDP)
numero di acknowledgement
lungh. non
intest. usato
UA P R S F
somma di controllo
dim. fin. ricev.
ptr dati urgenti
Opzioni (lunghezza variabile)
Dati applicativi
(lunghezza variabile)
# porta mittente
e destinatario
Conteggio in
byte
(NON in
segmenti!)
Advertised
window: #
byte che il
ricevente
accetta
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.
Numeri di sequenza e ACK TCP
Host A
Host B
Server di eco
Utente digita
‘C’
B invia ACK
per la ricezione
di ‘C’,
invia a sua volta ‘C’
A invia ACK
per la ricezione
di ‘C’
Tempo
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 bit
232 >> 2* 216
Numeri di sequenza e finestra
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
FINE
(2)
Scarica

Controllo di flusso TCP