Introduzione (parte III)
Introduzione (parte III)
Introduzione (parte III)
Argomenti della lezione Argomenti della lezione
Î Ripasso degli argomenti del primo corso:
il livello di trasporto, il
meccanismo di controllo delle congestioni e le applicazioni
Î Ripasso degli argomenti del primo corso:
il livello di trasporto, il
meccanismo di controllo delle
congestioni e le applicazioni
Il livello di trasporto Il livello di trasporto
Î Supera alcuni dei limiti della sottorete di comunicazione Î Î Supera alcuni dei limiti Supera alcuni dei limiti
della sottorete di comunicazione della sottorete di comunicazione
Ruolo cruciale per la realizzazione
ed il funzionamento delle applicazioni Ruolo cruciale per la realizzazione
Ruolo cruciale per la realizzazione
ed il funzionamento delle applicazioni ed il funzionamento delle applicazioni
Î Fornisce un’interfaccia
software per le applicazioni Î Î Fornisce un’interfaccia Fornisce un’interfaccia
software per le applicazioni software per le applicazioni
Î Utilizza indirizzi (porte) per il multiplexing delle connessioni
Î Î Utilizza indirizzi (porte) per Utilizza indirizzi (porte) per
il il multiplexing multiplexing delle connessioni delle connessioni
L’interfaccia socket di Berkeley L’interfaccia socket di Berkeley
Processo server Processo server
ÆÆ socketsocket
ÆÆ bind (indirizzo X)bind (indirizzo X)
ÆÆ send/receivesend/receive ÆÆ closeclose
ÆÆ listenlisten ÆÆ acceptaccept
ÆÆ (connessione)(connessione)
Processo client Processo client
ÆÆ socketsocket
ÆÆ send/receivesend/receive ÆÆ closeclose
ÆÆ connectconnect
(indirizzo X) (indirizzo X)
Indirizzi TCP Indirizzi TCP
Applicazioni Applicazioni Applicazioni
Livello di trasportoLivello diLivello di trasporto trasporto
Livelli 1, 2 e 3LivelliLivelli 1, 2 e 3 1, 2 e 3
(porte TCP)TSAPTSAP (porte TCP) processo processo
server server telnet telnet processo
processo client client (telnet) (telnet)
2323
server server
FTPFTP 2121
Alcune “well known” ports Alcune “well known” ports
FTP: 21
Telnet: 23 SMTP: 25 DNS: 53 WWW-HTTP: 80
POP3: 110
IMAP2: 143
SNMP: 161
FTP: 21
Telnet: 23 SMTP: 25 DNS: 53 WWW-HTTP: 80
POP3: 110
IMAP2: 143
SNMP: 161
Il livello di trasporto Il livello di trasporto
La sottorete di comunicazione può non essere affidabile
La sottorete di comunicazione La sottorete di comunicazione
può non essere affidabile può non essere affidabile
Î I pacchetti IP sono datagram (senza connessione né riscontro)
Î Î I pacchetti IP sono datagram I pacchetti IP sono datagram (senza connessione né riscontro)
(senza connessione né riscontro) Î È quasi sempre necessario
garantire la corretta ricezione di tutti i dati, nell’ordine giusto Î Î È quasi sempre necessario È quasi sempre necessario
garantire la corretta ricezione garantire la corretta ricezione
di tutti i dati, nell’ordine giusto
di tutti i dati, nell’ordine giusto
Î La numerazione non è orientata ai segmenti, ma al byte
Î La numerazione non è orientata ai segmenti, ma al byte
Î Il numero di sequenza
di un segmento è sempre il numero di sequenza del primo byte
contenuto nel campo dati Î Il numero di sequenza
di un segmento è sempre il numero di sequenza del primo byte
contenuto nel campo dati
Î Nei messaggi di riscontro viene sempre indicato il numero
di sequenza del byte successivo che il ricevitore sta aspettando (rispetto all’ultimo
ricevuto in ordine)
Î Nei messaggi di riscontro viene sempre indicato il numero
di sequenza del byte successivo che il ricevitore sta aspettando (rispetto all’ultimo
ricevuto in ordine)
TCP: numeri di sequenza
TCP: numeri di sequenza
TCP: numeri di sequenza TCP: numeri di sequenza
tempo tempo tempo tempo
invio di 10 by
te + riscontro prec.
(seq=48,
ack=162 )
invio di 10 by
te + riscontro prec.
(seq=48,
ack=162 )
invio di 3 byte + riscontro (seq=162, ack=59)
invio di 3 byte + riscontro (seq=162, ack=59)
invio di 5 byte
(seq=59,
+ riscontroack=165)
invio di 5 byte
(seq=59,
+ riscontroack=165)
host B host B host A
host A
TCP: numeri di sequenza TCP: numeri di sequenza
Nei messaggi di riscontro
Nei messaggi di riscontro del del protocollo protocollo TCP TCP viene sempre indicato il prossimo viene sempre indicato il prossimo
numero di sequenza numero di sequenza
che il ricevitore si aspetta che il ricevitore si aspetta Quindi
Quindi, se la , se la sequenza inizia da sequenza inizia da 7200, 7200,
per per confermare l’avvenuta ricezione confermare l’avvenuta ricezione dei primi
dei primi 350 byte 350 byte il ricevitore invia il ricevitore invia un acknowledge con
un acknowledge con numero numero di sequenza
di sequenza 7551 ( 7551 ( cioè cioè 7200+350+1) 7200+350+1)
Il client conferma la ricezione del segmento SYN del server: SYN=1, seq=client_isn+1,
ack=server_isn+1
Il client conferma la ricezione del segmento SYN del server: SYN=1, seq=client_isn+1,
ack=server_isn+1
TCP: apertura della connessione (handshake a tre vie)
TCP: apertura della connessione (handshake a tre vie)
Il client spedisce un segmento SYN
(flag SYN=1) notificando il suo numero iniziale di sequenza (client_isn)
Il client spedisce un segmento SYN
(flag SYN=1) notificando il suo numero iniziale di sequenza (client_isn)
Il server risponde autorizzando
la connessione: SYN=1, notifica il proprio
numero iniziale di sequenza (server_isn) e conferma il segmento SYN del client
(ack=client_isn+1)
Il server risponde autorizzando
la connessione: SYN=1, notifica il proprio
numero iniziale di sequenza (server_isn) e conferma il segmento SYN del client
(ack=client_isn+1) 1.1.
2.2.
3.3.
server server
tempo tempo
richiesta di connessione
(SYN=1, seq=clie nt_isn)
richiesta di connessione
(SYN=1, seq=clie nt_isn)
autorizzazione alla conness.
(SYN=1, seq=s erver_ isn, a ck=cli ent_is n)
autorizzazione alla conness.
(SYN=1, seq=s erver_ isn, a ck=cli ent_is n)
tempo tempo
client client
ACK
(SYN=0,
seq=clie
nt_isn+1 , ack=serv
er_isn+1 )
ACK
(SYN=0,
seq=clie
nt_isn+1 , ack=serv
er_isn+1 )
TCP: apertura della connessione
TCP: apertura della connessione
TCP: chiusura della connessione (handshake a quattro vie)
TCP: chiusura della connessione (handshake a quattro vie)
L’host A spedisce all’host B un segmento FIN (flag FIN=1) notificando l’intenzione di chiudere la connessione
L’host A spedisce all’host B un segmento FIN (flag FIN=1) notificando l’intenzione di chiudere la connessione
1.1.
L’host B invia un riscontro e la connessione viene chiusa in un verso; B può continuare a inviare dati
L’host B invia un riscontro e la connessione viene chiusa in un verso; B può continuare a inviare dati
2.2.
Quando l’host B termina la trasmissione invia un segmento FIN
Quando l’host B termina la trasmissione invia un segmento FIN
3.3.
L’host A invia un messaggio di riscontro
L’host A invia un messaggio di riscontro
4.4.
TCP: chiusura della connessione TCP: chiusura della connessione
notifica di ch
(FIN=1, seq=x)
iusura notifica di ch(FIN=1, seq=x)
iusuraACK
(ack= x+1)
ACK
(ack= x+1)
notifica di chiusura
(FIN= 1, se q=y)
notifica di chiusura
(FIN= 1, se q=y) (ack=
ACKy+1) (ack=
ACKy+1)
server server
tempo tempo tempo tempo
client
client
Header TCP Header TCP
32 bit
hlen window size
sequence number
options
(0 o più parole da 32 bit)
source port destination port
acknowledgment number (unused) RS
T SY N
FI N PS
H AC K UR G
checksum urgent pointer
Controllo della congestione del TCP
Controllo della congestione del TCP
Î Controllo della congestione Î Î Controllo della congestione Controllo della congestione
Stesso meccanismo per:
Stesso meccanismo per:
Î Controllo di flusso Î Î Controllo di flusso Controllo di flusso
Î Gestione dei pacchetti danneggiati Î Î Gestione dei pacchetti danneggiati Gestione dei pacchetti danneggiati
Protocollo
Protocollo sliding sliding window window
Î Permettono la trasmissione di più segmenti in successione, anche
prima di aver ricevuto i riscontri dei precedenti
Î Permettono la trasmissione di più segmenti in successione, anche
prima di aver ricevuto i riscontri dei precedenti
Î Ogni segmento spedito è numerato con un numero progressivo
su n bit (da 0 a 2
n-1)
Î Ogni segmento spedito è numerato con un numero progressivo
su n bit (da 0 a 2
n-1)
Î La numerazione è legata ai buffer di memoria di trasmettitore
e ricevitore
Î La numerazione è legata ai buffer di memoria di trasmettitore
e ricevitore
Protocolli “sliding window”
Protocolli “sliding window”
Protocolli “sliding window”
Protocolli “sliding window”
Il trasmettitore mantiene
una finestra di trasmissione Il trasmettitore mantiene
una finestra di trasmissione
Î I segmenti appartenenti alla finestra vengono memorizzati per
eventuali ritrasmissioni
Î I segmenti appartenenti alla finestra vengono memorizzati per
eventuali ritrasmissioni
Î Numeri di sequenza dei segmenti che può spedire
Î Numeri di sequenza dei segmenti che può spedire
Î Indica i segmenti che possono essere spediti prima di aver ricevuto
i riscontri dei precedenti
Î Indica i segmenti che possono essere spediti prima di aver ricevuto
i riscontri dei precedenti
Protocolli “sliding window”
Protocolli “sliding window”
Il ricevitore mantiene
una finestra di ricezione Il ricevitore mantiene
una finestra di ricezione
Î Segmenti appartenenti alla finestra vengono memorizzati per
eventuali ritrasmissioni
Î Segmenti appartenenti alla finestra vengono memorizzati per
eventuali ritrasmissioni
Î Numeri di sequenza dei segmenti che può ricevere
Î Numeri di sequenza dei segmenti che può ricevere
Î Permette di accettare frame fuori ordine e memorizzarli nell’attesa dei segmenti precedenti mancanti Î Permette di accettare frame fuori
ordine e memorizzarli nell’attesa
dei segmenti precedenti mancanti
Protocolli “sliding window”
Protocolli “sliding window”
Î Il limite superiore viene fatto avanzare quando si spedisce un nuovo frame
Î Il limite superiore viene fatto avanzare quando si spedisce un nuovo frame
11 22 55
66
00
33 44
77
TRASMETTITORE TRASMETTITORE
Î Il limite inferiore viene fatto avanzare quando si riceve il riscontro del frame il cui numero progressivo corrisponde all’estremità inferiore
Î Il limite inferiore viene fatto avanzare
quando si riceve il riscontro del frame
il cui numero progressivo corrisponde
all’estremità inferiore
Protocolli “sliding window”
Protocolli “sliding window”
11 22 55
66
00
33 44
77
RICEVITORE RICEVITORE
Î La dimensione della finestra è fissa Î La dimensione della finestra è fissa
Î L’intera finestra viene fatta avanzare quando si riceve un frame il cui
numero progressivo corrisponde all’estremità inferiore
Î L’intera finestra viene fatta avanzare quando si riceve un frame il cui
numero progressivo corrisponde
all’estremità inferiore
Î Il TCP non usa messaggi espliciti di NACK
Î Il TCP non usa messaggi espliciti di NACK
Î Se riceve un segmento fuori ordine (buco nella sequenza di dati) invia un duplicato dell’ACK per l’ultimo
segmento in ordine ricevuto
Î Se riceve un segmento fuori ordine (buco nella sequenza di dati) invia un duplicato dell’ACK per l’ultimo
segmento in ordine ricevuto
Î Il trasmettitore, quando riceve tre ACK duplicati, li interpreta come
NACK per il segmento seguente (“ritrasmissione veloce”,
RFC 2581)
Î Il trasmettitore, quando riceve tre ACK duplicati, li interpreta come
NACK per il segmento seguente (“ritrasmissione veloce”,
RFC 2581)
TCP: segmenti ricevuti fuori ordine
TCP: segmenti ricevuti
fuori ordine
Ripetizione selettiva:
trasmettitore
Ripetizione selettiva:
trasmettitore
next_seq_num next_seq_num
riscontrato riscontrato
inviato, non riscontrato inviato, non
riscontrato non disponibile non disponibile disponibile, non ancora spedito disponibile, non ancora spedito
dimensione finestra
dimensione finestra
next_seq_num next_seq_num
fuori ordine ma già riscontrato fuori ordine ma già riscontrato
atteso, non
ancora ricevuto atteso, non
ancora ricevuto già accettato o non accettabile già accettato o non accettabile
accettabile accettabile
Ripetizione selettiva:
ricevitore
Ripetizione selettiva:
ricevitore
dimensione finestra
dimensione finestra
Î La dimensione della finestra di ricezione varia in funzione
della dimensione del buffer (fissa) e dei dati ricevuti ma non ancora
prelevati dal processo applicativo Î La dimensione della finestra
di ricezione varia in funzione
della dimensione del buffer (fissa) e dei dati ricevuti ma non ancora
prelevati dal processo applicativo Î La dimensione della finestra
di ricezione viene comunicata al trasmettitore nel campo
“window size” dei segmenti inviati Î La dimensione della finestra
di ricezione viene comunicata al trasmettitore nel campo
“window size” dei segmenti inviati
TCP: finestra di ricezione
TCP: finestra di ricezione
Î La dimensione della finestra
di trasmissione viene modificata dinamicamente in funzione della capacità della rete e del ricevitore Î La dimensione della finestra
di trasmissione viene modificata dinamicamente in funzione della capacità della rete e del ricevitore
TCP: finestra di trasmissione TCP: finestra di trasmissione
finestra di trasmissione =
min (finestra di ricezione,
finestra di congestione)
Î Inizialmente a 1, man mano che arrivano riscontri cresce esponenzialmente fino ad un valore di soglia predefinito, poi linearmente
Î Inizialmente a 1, man mano che arrivano riscontri cresce esponenzialmente fino ad un valore di soglia predefinito, poi linearmente
Î Se un riscontro non arriva entro
il timeout, il valore di soglia viene abbassato alla metà dell’attuale
valore della finestra di congestione e questa riparte da 1
Î Se un riscontro non arriva entro
il timeout, il valore di soglia viene abbassato alla metà dell’attuale
valore della finestra di congestione e questa riparte da 1
TCP: finestra di congestione
TCP: finestra di congestione
numero di trasmissioni numero di trasmissioni dimensione della finestra di congestionedimensione della finestra di congestione
11 22 33 44 55 66 77 88 991010111112121313141415151616 11
22 33 44 55 66 77 88 99 1010 1111
soglia soglia
soglia soglia
TCP: finestra di congestione
TCP: finestra di congestione
UDP: protocollo non connesso UDP: protocollo non connesso
Î Porte Î Î Porte Porte
Î Limitato controllo di errori Î Î Limitato controllo di errori Limitato controllo di errori
Aggiunge al pacchetto IP:
Aggiunge al pacchetto IP:
Î Nessun ritardo di setup Î Î Nessun ritardo di Nessun ritardo di setup setup
Î Basso overhead Î Î Basso Basso overhead overhead
Vantaggi e svantaggi Vantaggi e svantaggi
Î Non controlla né corregge errori né perdite di pacchetti
Î Î Non controlla né corregge errori Non controlla né corregge errori né perdite di pacchetti
né perdite di pacchetti Î Nessun controllo
di congestione
Î Î Nessun controllo Nessun controllo di congestione
di congestione
Header UDP Header UDP
32 bit
source port destination port UDP length UDP checksum
UDP: protocollo non connesso UDP: protocollo non connesso
Î Ritardi costanti e possibilmente contenuti
Î Î Ritardi costanti e possibilmente R contenuti
Î (Spesso) elevata banda trasmissiva Î Î (Spesso) elevata banda trasmissiva
Le applicazioni multimediali richiedono
Le applicazioni multimediali richiedono
Non richiedono correzione di errori Non richiedono correzione di errori
Problema:
Problema:
molte applicazioni multimediali UDP molte applicazioni multimediali UDP
possono saturare la rete!
possono saturare la rete!
Modelli per l’analisi e il dimensionamento
delle reti
Modelli per l’analisi e il dimensionamento
delle reti
Commutazione di pacchetto Commutazione di pacchetto
multiplexing statistico
multiplexing statistico
accodamento in attesa di trasmissione
accodamento in attesa di trasmissione
A A B B
I ritardi indicati determinano il ritardo totale al router A I ritardi indicati determinano
il ritardo totale al router A
Ritardi e perdite nelle reti a commutazione di pacchetto Ritardi e perdite nelle reti a commutazione di pacchetto
Î Ritardo di elaborazione Î Ritardo di elaborazione
Il ritardo totale introdotto da un nodo è dovuto a:
Il ritardo totale introdotto da un nodo è dovuto a:
Î Ritardo di coda Î Ritardo di coda
Î Ritardo di trasmissione Î Ritardo di trasmissione
Î Ritardo di propagazione Î Ritardo di propagazione
Questi ritardi determinano
la probabilità di perdere pacchetti Questi ritardi determinano
la probabilità di perdere pacchetti
Ritardi Ritardi
elaborazione elaborazione
codacoda
propagazione propagazione
trasmissione trasmissione
A A B B
Questi ritardi determinano
il ritardo totale al router A
Questi ritardi determinano
il ritardo totale al router A
Ritardo di elaborazione Ritardo di elaborazione
Î Tempo necessario ad esaminare il pacchetto e a determinarne
l’instradamento
Î Tempo necessario ad esaminare il pacchetto e a determinarne
l’instradamento
Î Comprende anche il controllo degli errori
Î Comprende anche il controllo degli errori
Î Il pacchetto viene poi inviato alla coda di trasmissione
Î Il pacchetto viene poi inviato alla coda di trasmissione
Î Ordine di grandezza:
microsecondi (o inferiore) Î Ordine di grandezza:
microsecondi (o inferiore)
Î Tempo di attesa prima della trasmissione
Î Tempo di attesa prima della trasmissione
Î Dipende da quanto pacchetti precedenti sono già in coda Î Dipende da quanto pacchetti
precedenti sono già in coda
Î È zero se non ci sono pacchetti né in coda né in trasmissione
Î È zero se non ci sono pacchetti né in coda né in trasmissione
Î Dipende dall’intensità e dalla natura del traffico
Î Dipende dall’intensità e dalla natura del traffico
Î Ordine di grandezza:
dai microsecondi ai millisecondi
Î Ordine di grandezza:
dai microsecondi ai millisecondi
Ritardo di coda
Ritardo di coda
Î Tempo necessario a trasmettere tutti i bit del pacchetto
Î Tempo necessario a trasmettere tutti i bit del pacchetto
Î Dipende dalla velocità R del link e dalla lunghezza L del pacchetto Î Dipende dalla velocità R del link
e dalla lunghezza L del pacchetto
Esempio:
Esempio:
L = 1500 byte = 12000 bit L = 1500 byte = 12000 bit
R = 100 Mb/s R = 100 Mb/s
d
tras= L/R = 120 ms d
tras= L/R = 120 ms
Ritardo di trasmissione
Ritardo di trasmissione
Î Tempo necessario al segnale per transitare lungo l’intera lunghezza del link fisico
Î Tempo necessario al segnale per transitare lungo l’intera lunghezza del link fisico
Î Dipende dalla lunghezza l del link e dalla velocità di propagazione s sul mezzo (circa 2 ·10
8m/s)
Î Dipende dalla lunghezza l del link e dalla velocità di propagazione s sul mezzo (circa 2 ·10
8m/s)
l = 1 km (LAN), s = 2 ·10
8m/s l = 1 km (LAN), s = 2 ·10
8m/s
d
prop= l/s = 5 ms d
prop= l/s = 5 ms
l = 72000 km (satellite), l = 72000 km (satellite),
s = 3 ·10
8m/s s = 3 ·10
8m/s
d
prop= l/s = 0.24 s d
prop= l/s = 0.24 s
Ritardo di propagazione Ritardo di propagazione
Esempio:
Esempio:
Ritardo totale al nodo Ritardo totale al nodo
A seconda del tipo di collegamento alcuni valori possono essere
trascurabili
A seconda del tipo di collegamento alcuni valori possono essere
trascurabili
d d
nodonodo= = d d
elabelab+ + d d
codacoda+ d + d
trastras+ + d d
proppropÎ d
codanon è costante:
varia da pacchetto a pacchetto Î d
codanon è costante:
varia da pacchetto a pacchetto Î A causa della lunghezza finita
dei buffer di memoria può
determinare la perdita di pacchetti Î A causa della lunghezza finita
dei buffer di memoria può
determinare la perdita di pacchetti
Ritardo di coda
e perdita dei pacchetti Ritardo di coda
e perdita dei pacchetti
Ritardo di coda
e intensità di traffico Ritardo di coda
e intensità di traffico
a a = velocità media di arrivo = velocità media di arrivo
dei pacchetti (pacchetti/s) dei pacchetti (pacchetti/s)
L L = lunghezza dei pacchetti (in bit) = lunghezza dei pacchetti (in bit) Si accodano L · a bit/s
Si accodano L · a bit/s
Ritardo di coda
e intensità di traffico Ritardo di coda
e intensità di traffico
R R = velocità di trasmissione (b/s) = velocità di trasmissione (b/s)
L · a/R = intensità di traffico se L · a/R>1 la lunghezza
della coda cresce senza limiti ed il ritardo tende ad infinito L · a/R = intensità di traffico se L · a/R>1 la lunghezza
della coda cresce senza limiti
ed il ritardo tende ad infinito
Anche se L · a/R<1 è possibile
la perdita
di pacchetti perché la distribuzione dei tempi di arrivo
è casuale
(possono arrivare a gruppi)
Anche se L · a/R<1 è possibile
la perdita
di pacchetti perché la distribuzione dei tempi di arrivo
è casuale
(possono arrivare
a gruppi) L · a/R L · a/R ritardo media di coda
ritardo media di coda
11