I protocolli TCP/UDP
prof.: Alfio Lombardo
Formato del messaggio TCP
Stream oriented protocol
Application
Application
process
process
write
read
bytes
bytes
TCP
TCP
send buffer
receiver
buffer
segments
• Il TCP interpreta lo stream dati come sequenza di
ottetti
• Lo stream dati è suddiviso in segmenti
...
Header TCP
(Port address)
Header IP
(IP address)
...
Header TCP
(Port address)
TCP data
IP data
...
Header IP
(IP address)
Header TCP
(Port address)
TCP data
IP data
Header IP
(IP address)
TCP data
IP data
Apertura di connessione:
Problemi.
utilizzare identificatori delle
connessioni sempre diversi
(ad es. un numero sempre crescente)
Apertura di connessione: Problemi.
TCP 1
TCP 2
Seqnum =X SYN =1
Tempo
Seqnum=Y Acknum =X+1 ACK=1 SYN=1
?
Instaurazione della connessione
three way handshake
TCP 1
TCP 2
Seqnum =X SYN =1
Tempo
Seqnum=Y Acknum =X+1 ACK=1 SYN=1
Seqnum=X+1 Acknum =Y+1 ACK=1 SYN=1
three way handshake: duplicato CR
TCP 1
TCP 2
Seqnum =X SYN =1
Tempo
Seqnum=Y Acknum =X+1 ACK=1 SYN=1
?
Seqnum=X+1 Acknum =Y+1 ACK=1 RST=1
three way handshake:
duplicato CR, Ack
TCP 1
TCP 2
Seqnum =X SYN =1
Tempo
Seqnum=Y Acknum =X+1 ACK=1 SYN=1
?
Seqnum=X+1 Acknum =z
ACK=1 SYN=1
?
Seqnum=X+1 Acknum =Y+1
ACK=1 RST=1
Instaurazione simultanea
TCP 1
TCP 2
Seqnum =X SYN =1
Tempo
Seqnum =Y SYN =1
Seqnum=Y Acknum =X+1 ACK=1 SYN=1
Seqnum=X Acknum =Y+1 ACK=1 SYN=1
Chiusura di connessione
TCP 1
Tempo
L’applicazion
e 1 chiude la
connessione
TCP 2
Seqnum =X FIN =1
Acknum =X+1 ACK =1
Il TCP 2 informa
l’applicazione 2
della richiesta di
disconnessione
L’applicazion
e 2 chiude la
connessione
Seqnum =Y Acknum=X+1 FIN =1
Acknum =Y+1 ACK =1
Chiusura di connessione:
three way handshake
TCP 1
Tempo
L’applicazione
1 chiude la
connessione
TCP 2
Seqnum =X FIN =1
Seqnum=Y Acknum =X+1 ACK=1
Acknum =Y+1 ACK =1
FIN =1
Il TCP 2 informa
l’applicazione 2
della richiesta di
disconnessione e
questa decide di
chiudere la
connessione
Chiusura di connessione:
three way handshake con perdite
Chiusura simultanea
L’applicazione
1 chiude la
connessione
TCP 1
TCP 2
Seqnum =X FIN =1
Seqnum =Y FIN =1
Il TCP 2
informa
l’applicazione 2
della richiesta
di
disconnessione
Il TCP 1 informa
l’applicazione 1
della richiesta di
disconnessione
Tempo
L’applicazione 2
chiude la
connessione
Acknum =X+1 ACK =1
Acknum =Y+1 ACK =1
Ack e Ritrasmissioni
Esercizio consigliato:
TCP 1
TCP
TCP 2
Seqnum=5
Data=100
Acknum=5000
Seqnum=105 Data=200
Viene
attivato il
timer
Acknum=5000
Seqnum=5000 Data=100 Acknum=305
Seqnum=305 Data=1000 Acknum=5100
Seqnum=5100 Data=500 Acknum=305
Time-out !!!
ritrasmissione
Seqnum=305 Data=2000 Acknum=5600
Seqnum=5600 Data=100 Acknum=2305
Distribuzione dei tempi di round-trip
0
10
T1
Probabilita’
Probabilita’
T
20
30
Tempo (ms)
Livello di Data
Link
0
10
20
30
T2
40
Tempo (ms)
Livello di
Trasporto
50
Algoritmo di Jacobson (1988)
RTT = Round Trip Time
RTT = a RTT + (1 - a) M
T = b RTT
a =7/8
b = f(s)
Gestione di flusso
Esercizio consigliato:
Write
Controllo
di 2K
Flusso
T
C
P
Write 3K
T
X
4K
Seq=0
Data=2K
Ack =2048 WIN =2048
Seq=2048 Data=2K
1K
T
C
P
R
X
2K
4K
Ack =4096 WIN =0
Tx
bloccato
Prelievo
2K
Ack =4096 WIN =2048
Seq=4096 Data=1K
2K
3K
algoritmo di Nagle (Silly windows)
• quando un'applicazione genera dei dati addizionali che
devono essere spediti su una connessione sulla quale sono
stati già spediti dei dati in precedenza, e questi dati non
sono ancora stati confermati, i dati addizionali verranno
posti nel buffer di trasmissione, ma nessun segmento verrà
spedito finché non vengono raccolti dati a sufficienza per
trasmettere un segmento della massima dimensione
permessa. Se, alla ricezione dell'ack dei dati trasmessi in
precedenza, non è stato raccolto un numero sufficiente di
bytes per spedire un pacchetto della massima dimensione,
la trasmissione di tutto il contenuto del buffer avrà
comunque luogo.
Parametri utilizzati per il controllo
di congestione
Finestra permessa = minimo tra
Finestra d controllo
Finestra di congestione
di flusso
Fissata dal trasmettitore
Fissata dal ricevitore
Rilevazione degli stati di congestione
Rumore su una linea di
trasmissione
Scadenza di un timeout =
Congestione di un nodo
Finestra di congestione (Kbyte)
60
timeout
50
40
timeout
30
timeout
20
10
0
1
3
5
7
9
11
13
15
Numero di trasmissioni
17
19
21
23
25
Finestra di congestione (Kbyte)
Slow Start
60
Congestion
Avoidance (Additive increase)
50
40
soglia
timeout
30
20
Slow start
10
Slow start
0
1
3
5
7
9
11
13
15
Numero di trasmissioni
17
19
21
23
25
Finestra di congestione (Kbyte)
Fast Recovery
timeout
60
50
Additive increase
timeout
40
Multiplicative decrease
30
soglia
20
Slow start
10
0
1
3
5
7
9
11
13
15
Numero di trasmissioni
17
19
21
23
25
Servizi offerti da UDP
Trasferimento dati appartenenti a
diverse applicazioni residenti nello
stesso host (multiplexing)
Controllo d’errore (opzionale)
Processo
Applicativo
A
Processo
Applicativo
B
3. Deliver
(n ottetti)
1. Send
(n ottetti)
UDP SERVICE PROVIDER
UDP A
2. DATA
UDP B
UDP
0
16
31
source port
destination port
length
checksum
data
•Header,
•data,
•Pseudo header
Protocolli di Trasporto
emergenti in INTERNET
Real-time Transport Protocol (RTP)
Real-time Transport Control Protocol
(RTCP)
APPLICAZIONE
Livello di
RTP RTCP
trasporto
UDP
IP
Macrolezione 7
Trasporto end-to-end
dell’informazione
Scarica

Lezione 7