Capitolo 3 - parte 3
Corso Reti ed ApplicazioniMauro Campanella
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 2
Problema Conseguenza nel protocollo
Errori nei dati : controllo errori in ogni pacchetto scambio informazioni e messaggi di controllo
Errori nei messaggi : numeri di sequenza
Perdite di pacchetti : timer per ritrasmissione
Efficenza : finestra di trasmissione (Go-Back-N) intervallo grande di numeri di sequenza
Il modello è rappresentabile con una macchina a stati finiti, siaper il mittente, che per il ricevente
Elementi Base Trasporto Affidabile
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 3
Transmission control protocol (TCP) RFCs
793 TCP - la definizione originale - Sett. 1981879 TCP Maximum Segment Size (opt)896 Nagle’s algorithm (TCP_NODELAY socket option)1122 Requirements for Internet Hosts1323 TCP Extensions for high speed (window scale opt.)2018+2883 Selective ACKnowlegements (opt)2581+3390 TCP congestion control2582 New Reno modification to TCP's Fast Recovery2988 Computing TCP retransmission timer3042 Enhancing TCP's Loss Recovery
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 4
Transmission Control Protocol (TCP)
Protocollo di trasporto che offre:- un servizio affidabile- orientato alla connessione- punto - punto- fra mittente e destinatario (end to end)- trasporta uno stream di byte (non riconosce oinserisce delimitazioni nel flusso di dati passatodall’applicazione)
- in grado di riordinare i dati nei segmenti ricevuti- in grado di eliminare i duplicati
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 5
Transmission Control Protocol (TCP)
Effettua una trasmissione che èsempre creata full duplex :– flusso dati ed informazione è
bidirezionale nella stessaconnessione
Usa buffer di spedizione ericezione in modalità “slidingwindow”:
TCP sendbuffer
TCP receivebuffer
applicazione
Socket
TCP sendbuffer
TCP receivebuffer
applicazione
Socket
segmenti
segmenti
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 6
Transmission Control Protocol (TCP)
MSS: maximum segment size:i dati dell’applicazione sono spezzati da TCP in segmentiche hanno MSS come massima dimensione (in byte).MSS è decisa all’inizio della connessione (attraverso unaesplicita opzione TCP o attraverso il valore di default)I dati sono spediti in segmenti di dimensione variabiledecisa da TCP di volta in volta, in base allo stato dellaconnessione.
Aknowledgement:lo scambio di informazione è basato su ACK, spediti dalricevente, normalmente con un leggero ritardo rispettoalla ricezione del pacchetto.
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 7
Transmission Control Protocol (TCP)
Pipelining:realizzato attraverso l’esistenza di buffer con finestrascorrevole, di tipo Go-Back-N
Controllo di flusso:dato che, ai capi della connessione, i nodi forniscono unospazio di buffering finito, attraverso i messaggi di ACK vi èun’aggiustamento reciproco della velocità di trasmissione.
Controllo di congestione:la perdita di pacchetti è usata come indice di congestionee fa scattare meccanismi per diminuire la velocità ditrasmissione, prima dell’esaurimento dei buffer.
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 8
Header TCP: parti note
dati
numero di sequenza
numero di acknowledgement
dimensione finestralungh.head.
Opzioni (se presenti)
0 8 16 24 3115
porta del mittente porta del destinatario
riservatiURG
ACK
PSH
RST
SYN
FIN
checksum num. sequenza urgenteIn paroleda 32 bit !(60 bytemassimo)
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 9
TCP:segmento
perchecksum
dati
numero di sequenza
numero di acknowledgement
dimensione finestralungh.head.
Opzioni (se presenti)
porta del mittente porta del destinatario
riservatiURG
ACK
PSH
RST
SYN
FIN
checksum num. sequenza urgente
lunghezza TCPzero
32 bit indirizzo IP sorgente
protocollo
32 bit indirizzo IP destinazione
pseudoheader
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 10
Header TCP: i numeri di sequenza
Tutti i numeri di sequenza indicano il numero d’ordine di un bytenel byte flow (dati), non il numero del segmento.
- Numero di sequenza (32 bit - circa 4 miliardi):punta al primo byte della parte dati del pacchetto.SYN e FIN sono un’eccezione e contano come un (1) byte.All’inizio di ogni connessione il primo valore è scelto “a caso”
- Acknowledge sequence number:indica il numero di sequenza del primo byte del prossimosegmento atteso.
- Urgent pointer:valido solo con il flag “URG” attivo. L’offset positivo dalnumero di sequenza del segmento corrente in cui vi è l’ultimobyte (o il seguente … ) dei dati urgenti (non l’inizio ! … )
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 11
Header TCP: campi numeri di sequenza
dati
numero di sequenza
numero di acknowledgement
dimensione finestralungh.head.
Opzioni (se presenti)
0 8 16 24 3115
porta del mittente porta del destinatario
riservatiURG
ACK
PSH
RST
SYN
FIN
checksum num. sequenza urgente
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 12
Esempio di scambio di numeri di sequenza
Nodo A Nodo B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
L’utenteinvia‘C’
Nodo invial’ACK di
ricevuta di‘C’
Nodo invial’ACK di
ricevuta di‘C’, manda l’eco di ‘C’
tempo
Esempio con telnet
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 13
Header TCP: FLAGS
dati
numero di sequenza
numero di acknowledgement
dimensione finestralungh.head.
Opzioni (se presenti)
0 8 16 24 3115
porta del mittente porta del destinatario
riservatiURG
ACK
PSH
RST
SYN
FIN
checksum num. sequenza urgente
ACK: numero diseq. ACK valido
URG: urgent data (raramente usato)
PSH: push dati(raramente usato)
RST, SYN, FIN:comandi connessione(reset, creazione, termine)
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 14
Header TCP: Flags
Singoli bit on (valore = 1) od off (valore = 0) che fornisconoinformazioni di validità di altri campi dell’header o segnalanoeventi
URG : il puntatore contenuto nal campo urgent è valido
ACK : il numero di sequenza di acknowledge è valido
PSH : il ricevente deve passare l’informazione allo stratosuperiore prima possibile
RST : reset (e termine) della connessione
SYN : richiesta di sincronizzare i numeri di sequenza periniziare una connessione
FIN : richiesta di chiudere la connessione (in un senso)
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 15
Header TCP: FLAGS
dati
numero di sequenza
numero di acknowledgement
dimensione finestralungh.head.
Opzioni (se presenti)
0 8 16 24 3115
porta del mittente porta del destinatario
riservatiURG
ACK
PSH
RST
SYN
FIN
checksum num. sequenza urgente
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 16
Header TCP: Window SizeWindow Size:
il numero di byte, cominciando da quello nel campo di ACK, cheil mittente del pacchetto è disposto ad accettare.E’ un numero di 16 bit (massimo valore 65535), ma attraversol’opzione TCP di Window Scaling può essere aumentato fino a65535*214 (circa 1 GB)
receive buffer size
window size
RicevutiinviatoACK
ACK number
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 17
receive window size
Header TCP: Send buffer Size
send buffer size
Inviati NONricevuto ACK
Inviati ericevuto
ACK liberi perriceveredalla
applicazione
Prontida
Inviare
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 18
Header TCP: Opzioni
dati
numero di sequenza
numero di acknowledgement
dimensione finestralungh.head.
Opzioni (se presenti- MAX 40 bytes)
0 8 16 24 3115
porta del mittente porta del destinatario
riservatiURG
ACK
PSH
RST
SYN
FIN
checksum num. sequenza urgente
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 19
TCP options
Composte di tre campi: tipo, lunghezza e dati (TLD).La lunghezza totale delle opzioni non può superare 40 byte.
Opzione tipo lungh. (byte) datiFine Opzioni 0 1 noNo Operation 1 1 noMaximum SegmentSize 2 4 MSS (2 byte)Window Scale 3 3 Shift (1 byte)Selective ACKpermesso 4 2 noSelective ACK 5 varia seq.numberTimestamp 8 10 Time (8 byte)
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 20
TCP Options
tipo=0Fine listadelle opzioni
1 byte
tipo=1Nessunaoperazione
1 byte
tipo=2MaximumSegment Size
1 byte
lun=4
1 byte
valore MSS
2 byte
tipo=3Window scaleFactor
1 byte
lun=3
1 byte
valoreshift1 byte
Timestamp
tipo=8
1 byte
lun=10
1 byte
valore timestamp
4 byte
echo reply timestamp
4 byte
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 21
TCP Apertura connessione
Stretta di mano a tre fasi (three way handshake):1: un nodo manda un segmento contenente
– il flag SYN (apertura attiva)– un proprio nuimero di sequenza iniziale– nessun dato– opzioni per MSS, Window scale, timestamp
2: il ricevente replica al SYN con un segmento con SYN ed ACK:– viene creato stato nel nodo (aperura passiva)– il ricevente sceglie il proprio numero di sequenza iniziale– invia la sua scelta di opzioni
3: Il primo nodo risponde con segmento con solo flag ACK ed eventuali primi dati
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 22
client server
TCP Apertura connessione
stato
LISTEN
ESTABLISHED
SYN_RCVD
SYN 2347:2347 (0)ACK 14156
stato
CLOSED
SYN_SENT
SYN 14155:14155 (0)
ACK 2348 (0)ESTABLISHED
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 23
TCP: Chiusura connessione
La chiusura deve essere esplicitaper ognuno dei due versi dellaconnessione.
Il primo nodo:
1: invia un segmento con FIN
2: riceve un segmento con l’ACK del FIN
Quindi, il secondo nodo:
3: invia un segmento con FIN
4: riceve ACK e chiude la connessione
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 24
TCP: Chiususra connessione
ESTABLISHED ESTABLISHED
FIN
FIN_WAIT_1 ACKCLOSE_WAIT
FIN
LAST_ACK
FIN_WAIT_2
chiusuraattiva
chiusurapassiva
ACKTIME_WAIT
(2 MSL timeout)
CLOSED
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 25
TCP Chiusura connessione
Lo stato finale di “TIME_WAIT” corrisponde ad un periodo diattesa di 2 Maximum Segment Lifetime (2 MSL).
2 MSL è scelto dalle diverse realizzazioni di TCP tra 30 secondie 2 minuti, anche se l’RFC iniziale specifica 2 minuti.
La permanenza in questo stato permette:- di reinviare un ACK nel caso vada perso- di bloccare la socket (cioè le coppie indirizzo, porta) per un
tempo sufficente a scartare segmenti duplicati ancora nellarete. Questo impedisce che una nuova “incarnazione” dellasocket possa prendere vecchi segmenti come nuovi.
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 26
TCP: FSM tipica per un client
L’applicazione iniziala connessione TCP
L’applicazione iniziala chiusura della
connessione
invio SYN
ricevuto SYN+ACKinvia ACK
invioFIN
ricevuto ACKrimane in attesa
riceve FINinvia ACK
in attesa per2 MSL
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 27
TCP: FSM tipica per un server
L’applicazione apreuna socket TCP
ricevuto SYNinvia SYN+ACK
riceve ACKnon invia nulla
ricevuto FINinvia ACK
invia FIN
riceve ACKnon invia nulla
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 28
TCP FSM
Transizione normaleper un client
Transizione normaleper un server
appl: closesend: FIN
appl: send data
send: SYN
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 29
TCP: timer principali
TCP mantiene 4 tipi di timer diversi per ogni connessione:
1 - timer per le ritrasmissioni usato nell’attesa di un ACK
2 - timer di persistenza usato per continuare a scambiare informazioni sulla dimensione della finestra anche quando uno dei due nodi ha dichiarato di non avere spazio disponibile
3 - timer di “keepalive” usato per evidenziare un reboot od un crash dell’altro nodo, anche se in una fase di quiete.
4 - timer di “2 MSL” usato quando la connessione è nello stato di TIME_WAIT
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 30
TCP stima di RTT
La scelta del valore deltimeout è fondamentale perun buon funzionamento diTCP.
Deve variare da connessione aconnessione ed essere legatoal valore di RTT, ma:
se troppo breve:ritrasmissioni inutili.se troppo lungo:reazione lenta alla congestione
Stima di RTT (SampleRTT):tempo trascorso tra l’emissionedi un segmento ed il ricevimentodell’ACK relativo- ignorando le ritrasmissioni- ambiguità per perdita di ACK
SampleRTT varia da segmento asegmento. Si desidera avere unastima più affidabile basata suvarie misure.
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 31
TCP stima del Round Trip Time
EstimatedRTT = (1- αααα)*EstimatedRTT + αααα*SampleRTT
Effettua il calcolo di un valore medio mobile, con pesoesponenziale.L’influenza dei campioni passati descresce in modoesponenziale. Il valore tipico è : αααα = 0.125
Il calcolo attuale del valore è basato su un algoritmo diVan Jacobson che modifica le specifiche iniziali di TCP.
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 32
Esempio di calcolo di RTTRTT: gaia.cs.umass.edu to fantasia.eurecom.fr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
RTT
(mill
isec
onds
)
SampleRTT Estimated RTT
M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 3 pag. 33
TCP RTT e valore per il Timeout
Il valore del Timeout viene basato sulla stima del valoredell’RTT (EstimtedRTT) aumentato di un margine disicurezza. Per questo si usa anche la stima della variazionedell’RTT
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = DevRTT + ββββ*( |SampleRTT-EstimatedRTT| - DevRTT )
(normalmente, ββββ = 0.25)
Finalmente l’intervallo di timeout è calcolato come: