Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TCP
2
Trasporto in Internet
3
Transmission Control Protocol - RFC 793
• Obiettivi:
– Controllo della comunicazione end-to-end e full-
duplex fra processi applicativi
– Garanzia di affidabilità del trasporto
• Assume che:
– lo strato di rete fornisca solamente un semplice ed
inaffidabile servizio di trasferimento dei pacchetti di
tipo connectionless (quello che fa l’IP)
• Consente la Multiplazione:
– permette a più processi applicativi di utilizzare le sue
funzioni di comunicazione in contemporanea
4
RFC 793: introduzione
6
End-point e Connessione
7
Transmission Control Block
8
Connessioni
3300 3301
25 80
3301
137.204.59.10
137.204.59.85
137.204.59.11
Internet
9
Implementazioni dei servizi in Internet
• Comunicazioni fra calcolatori (Host) = scambio di messaggi fra
processi applicativi (Applicazioni)
– Un messaggio in arrivo ad un host è utilizzabile se è in esecuzione
(running) un processo applicativo che legge il messaggio e sa cosa
farsene
• Client-server
– Nel modello classico gli host in rete sono classificabili in due tipologie:
• Server: mettono a disposizione risorse di elaborazione e dati
• Client: ospitano applicazioni che, al fine di svolgere le relative funzioni, si
connettono ai server per ottenere risorse ed informazioni
– La variante Peer-to-peer (P2P)
• Gli host in rete sono tutti equivalenti (peer, appunto) e fungono
alternativamente sia da client che da server verso altri nodi
– In una rete P2P qualsiasi nodo utilizza e mette a disposizione
contemporaneamente risorse ed informazioni in rete
10
Client-server
• Il processo Server si predispone a ricevere una connessione
eseguendo una apertura passiva
– Crea una socket, la collega ad una porta TCP e si mette in ascolto su
quella porta in attesa dell’arrivo di una richiesta di connessione (questo
processo nel mondo Unix è chiamato Demone)
• Il processo Client esegue una apertura attiva tentando di collegarsi al
processo server di destinazione
• Il client deve conoscere l’indirizzo IP e il Numero di porta del
dell’end-point di destinazione
– Si è convenuto che i server utilizzino dei numeri di porta convenzionali
definiti in anticipo detti Well Known Ports
– Le Well Known Ports sono registrate presso IANA
11
Classificazione dei numeri di porta
# Protocol Servizio
21 FTP-CONTROL File Transfer Protocol Trasferiento file (control)
20 FTP-DATA File Transfer Protocol Trasferimento files (dati)
23 TELNET Accesso via terminale
25 SMTP Trasferimento di posta elettronica
53 DNS Domain Name System Accesso al DNS
80 HTTP Web server
109 POP2 Post Office Protocol (Version 2) Lettura posta elettronica
22 SSH Secure Socket Accesso via terminale cifrato
110 POP3 Post Office Protocol (version 3) Lettura posta elettronica
137 NETBIOS Name Service.
Servizio di rete per applicazioni in
138 NETBIOS Datagram Service.
ambiente DOS (Windows)
139 NETBIOS Session Service.
443 HTTPS HTTP over SSL/TLS WEB cifrato
12
Affidabilità del collegamento
Sequence number
Acknowledge number
TCP U A P R S F
header Reserved R C S S Y I Window
length GK H T N N
Opzioni Padding
Dati
16
Formato del segmento TCP (2)
17
Formato del segmento TCP (3)
18
Formato del segmento TCP (4)
21
Calcolo del checksum
22
Funzionamento di TCP
• Linee tratteggiate
– Azioni tipiche di un
server
• Linee nere
– Azioni tipiche di un
client
• Linee chiare
– Eventi inusuali
• Transizioni
– Causa/effetto
24
Dialogo su rete inaffidabile
26
Caratteristiche del TWH
• Il three-ways handshake
– resiste alla instaurazione contemporanea di due connessioni
– ignora pacchetti di apertura ritardatari
SIN=
1, Se
SIN= SIN= qN=z
1, Se 1, Se
qN=x qN=x
ACK ACK
=0 =0
S eqN=y qN=y
1, S e
SIN= 1, z+1
ACK
=0 SIN= k N=
K = 1, Ac
y AC R
1, S eqN= ST=1
SIN= c k N =x+1 , Seq
1, A N=z+
ACK= 1
SIN=
ACK 1, Se
=1, A qN=x
ckN=
, S e qN=y
y+1
SIN=
1
k N= x+1
SIN=
0, Se K = 1, Ac
ACK qN=x
+1 AC
=1, A SIN=
ckN= 0, Se
y+1
ACK qN=x
=1, A +1
ckN=
y+1
27
Il problema delle “incarnazioni”
TCP A TCP B
1. (CRASH) (send 300,receive 100)
2. CLOSED ESTABLISHED
3. SYN-SENT --> <SEQ=400><CTL=SYN> --> (??)
4. (!!) <-- <SEQ=300><ACK=100><CTL=ACK> <-- ESTABLISHED
5. SYN-SENT --> <SEQ=100><CTL=RST> --> (Abort!!)
6. SYN-SENT CLOSED
7. SYN-SENT --> <SEQ=400><CTL=SYN> -->
29
Chiusura della connessione TCP
• Soft release
– Il TCP cerca di realizzare la chiusura ordinata della connessione,
garantendo che non vadano persi dati
• Anche questo problema non può essere risolto in modo
rigoroso su una rete inaffidabile
• TCP sceglie di realizzare la chiusura con modalità
“simplex”
– Le due direzioni vengono rilasciate in modo indipendente
– Il TCP che intende terminare la trasmissione emette un segmento
con FIN=1
• Quando questa entità riceve l’Ack la direzione si considera chiusa
• Se dopo un certo tempo non arriva l’Ack il mittente del FIN rilascia
comunque la connessione
– L’altra direzione può continuare a trasmettere dati finché non
decide di chiudere
30
Esempio di chiusura normale
TCP A TCP B
1. ESTABLISHED ESTABLISHED
2. (Close)
FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT
3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT
4. (Close)
TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK
5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED
6. (2 MSL)
CLOSED
31
Chiusura contemporanea
33
I timer del TCP
34
Keepalive timer
35
Lo stato “time wait”
36
Time out di trasmissione
37
Calcolo di RTO (RFC 2988)
38
eRTT
39
EWMA
41
RTO
43
Misurazione di sRTT
sRTT
2
– In caso di trasmissioni ACK
consecutive a breve distanza ACK
Tran
solamente per la prima si valuta sm issio
n3
sRTT
sRTT
ACK
44
Ambiguità di sRTT in caso di ritrasmissione
sRTT
n Retra
nsmi valutazione di sRTT
ssion
ACK
• Algoritmo Karn/Partridge
– In caso di ritrasmissione non viene misurato sRTT
– Si riprende con la misura al prossimo segmento
confermato senza ritrasmissione
45
Exponential back-off
RTO1
ne
ritrasmissione qual è il Ritra
sm ission
valore di RTO e1
RTO2
– Il valore corrente ha portato a
Ritra
ritrasmissione sm issio
ne 2
– Può avere senso dare un
RTO3
tempo maggiore al ricevitore ACK
• Ad ogni ritrasmissione il Tras
m issio
ne
TCP raddoppia RTO fino al
raggiungimento di un valore sRTT
RTO1
massimo ACK
46
Lo stato ESTABLISHED
47
Numerazione in TCP
49
Maximum Segment Lifetime
51
Se qualcosa va male
52
Esempio
SN(t) SN(t)
Crash ISN(t)
MSL
Crash X
MSL
X Start C2
Start C1
Start C1 Start C2
Recovery t Recovery t
53
ISN nella RFC 793
54
Messaggi di conferma (ACK)
55
ACK ritardati
56
Finestra di trasmissione e di ricezione
57
In ricezione
• Il ricevitore ha ricevuto fino a SeqN = N
– Attende un segmento con SeqN = N+1 mod M
– Riceve un segmento con SeqN ≠ X
• Se X è precedente ad N il segmento viene considerato un duplicato
ritardato e viene scartato
• Se X è successivo ad N il segmento è fuori sequenza (manca
qualcosa)
– Cosa può essere accaduto?
• Uno o più segmenti sono andati persi
• Un segmento trasmesso dopo un altro lo ha superato a causa dei
diversi percorsi possibili e dei ritardi variabili in rete
– Cosa fare?
• Il ricevitore memorizza il segmento se X è entro WR
• Ritrasmette l’ultima conferma inviata (ACK duplicato)
– Quando riceve seqN = N a completamento della sequenza
conferma ackN = X+1
58
In trasmissione
59
ACK duplicati
60