Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
LEZIONE 3
IL S E R V I Z I O DI T R A S F E R I M E N T O
AFFIDABILE
Principi generali
Lo strato di rete implementa u n servizio di trasferimento che non affidabile i n quanto possibile
che vengano persi dei segmenti o si generino degli errori: compito dello strato di trasporto attuare
meccanismi che permettano d i eliminare i problemi presenti agli strati inferiori a esso.
Un servizio d i trasferimento si dice affidabile se:
t u t t i i messaggi sono consegnati a destinazione e giungono privi di errori;
ciascun messaggio consegnato una e una sola volta;
i messaggi sono consegnati nello stesso ordine i n cui sono stati trasmessi.
La trasmissione deve essere:
priva di errori;
senza d i perdita d i dati;
senza duplicazioni nella consegna dei segmenti.
L'obiettivo principale del livello d i trasporto quello d i offrire u n servizio d i trasferimento affidabile
dei messaggi ai livelli superiori da affiancare al protocollo UDP. Introduciamo la definizione d i u n
parametro che sar utile nel seguito della trattazione: sappiamo che i n una rete si definisce Round
Trip Time (RTT) l'intervallo di tempo che intercorre tra l'istante i n cui u n segmento inizia a essere
trasmesso dalla sorgente e l'istante i n cui la sorgente ne riceve i l relativo messaggio di riscontro,
cio i l tempo di andata e ritorno tra mittente e ricevente. A questo parametro viene generalmente
affiancato u n altro parametro chiamato ^ Retransmission Time O u t (RTO).
^ Retransmission Time O u t (RTO) Indica il m a s s i m o i n t e r v a l l o d i t e m p o c h e p u i n t e r c o r r e r e t r a l'i-
177
Se i l mittente non riceve i l segnale di ricezione (ACK) entro u n fissato tempo limite RTO avviene la
ritrasmissione dei segmenti da parte del mittente.
Il d i m e n s i o n a m e n t o d e l timeout un a s p e t t o critico nelle prestazioni d e l p r o t o c o l l o :
v a l o r e t r o p p o p i c c o l o : p o t r e b b e r o essere c o n s i d e r a t i persi alcuni s e g m e n t i in r i t a r d o a c a u sa d i c o n g e s t i o n e e venire ritrasmessi c o n c o n s e g u e n t e p e r d i t a d i efficienza;
valore t r o p p o g r a n d e : v e r r e b b e ritrasmesso c o n n o t e v o l e r i t a r d o un s e g m e n t o c o n s i d e r a t o
perso i n t r o d u c e n d o q u i n d i r a l l e n t a m e n t i e c o n s e g u e n t e p e r d i t a d i efficienza.
In questa lezione verranno descritti i meccanismi implementati dallo strato d i trasporto e utilizzati
nel protocollo TCP che permettono a due socket d i scambiare segmenti i n modo affidabile mediante
un canale logico.
I meccanismi impiegati
Per rendere affidabile u n canale necessario che venga effettuata la rivelazione degli errori i n ricezione e quindi avvenga la ritrasmissione dei segmenti persi o quelli i n cui sono stati rivelati errori; i meccanismi impiegati per realizzare un trasferimento di segmenti affidabile possono essere riassunti i n :
I numerazione dei segmenti trasmessi e trasmissione di messaggi di riscontro con numero di sequenza;
impiego di u n temporizzatore (timer) i n trasmissione;
impiego d i finestre i n trasmissione e i n ricezione.
32
32
32
Lo standard TCP non richiede che ogni sistema inizi a numerare i byte partendo da uno specifico
numero; ogni sistema sceglie liberamente i l numero da cui iniziare la numerazione. Inoltre si aspetta
di ricevere i l segmento successivo all'ultimo segmento ricevuto i n ordine, ovvero quello il cui numero
di sequenza pari al numero d i sequenza dell'ultimo segmento ricevuto i n ordine pi la dimensione
178
Lezione 3
del carico utile dello stesso segmento (cio del suo campo Data). Quando viene ricevuto un segmento, si controlla se i l numero di sequenza ricevuto quello atteso e i n caso affermativo i l destinatario
pu inviare direttamente i l carico utile al processo di livello applicativo e liberare i propri buffer di
ricezione: se invece riceve un numero di sequenza maggiore d i quello atteso, memorizza temporaneamente i dati nel buffer di ricezione nell'attesa che giungano i segmenti mancanti andati persi oppure
in ritardo sulla rete. Se i l numero di sequenza ricevuto inferiore a quello atteso significa che questo
segmento gi stato ricevuto e quindi si tratta di un duplicato che viene scartato.
In ogni segmento inviato presente u n Acknowledgment Number, o numero di riscontro, che riguarda il flusso di dati nella direzione opposta: i l numero che i l mittente invia al destinatario i l
numero del primo byte che i l mittente si attende di ricevere e quindi i l numero che deve avere i l
dato i n risposta a quella trasmissione.
Il protocollo TCP adotta la politica d i conferma cumulativa: i l numero d i riscontro che viene trasmesso indica al ricevente che i l mittente ha ricevuto e inoltrato al processo applicativo di livello
superiore i l segmento avente numero di sequenza uguale al numero di riscontro indicato (-1) e
anche tutti i segmenti a esso precedenti.
e W
Quindi i l segmento d i acknowledgment svolge due funzioni, cio quella di segnalare l'avvenuta r i cezione (positive acknoledgment) e quella di controllare la sequenza e quindi l'ordine dei segmenti
(flow control).
ESEMPIO
Se i l primo byte spedito ha ISN=1 e sono stati trasferiti correttamente 567 byte,
l'Acknowledgment Number 568.
Tempo
Tempo
179
HostB
^ ^ H o s t A
ACKr> = 568_
Tempo
Tempo
Non richiesta la trasmissione di u n messaggio di AGK a ogni segmento ricevuto: i l riscontro che
arriva alla sorgente di tipo cumulativo.
C o n N A C K si i n t e n d o n o i m e s s a g g i d i A C K n e g a t i v i , c i o i m e s s a g g i c h e i n d i c a n o un riscont r o n e g a t i v o : i p r o t o c o l l i d i t r a s p o r t o n o n p r e v e d o n o l ' i m p i e g o d i tali m e s s a g g i , in q u a n t e
al loro p o s t o si utilizzano i m e s s a g g i N A C K d i t i p o i m p l i c i t o , d e d u c e n d o d a i valori d i
il
c o m p o r t a m e n t o da intraprendere.
Host A
^ ^ H o s t B
= 72, 28
byte di dati
RTO
Perdita
RTO
ACKn=J00_
t
Tempo
180
Tempo
Host B
RTO
1
1
"3
o
a>
E
l^d[dati
"
5
byte_dii 'dati
^ S e q ^
'
RTO
'
yte di de
La corretta impostazione d i questo timer diffcile ma molto importante, i n quanto u n timer troppo
breve comporta ritrasmissioni inutili ( i l timer scatta mentre i l riscontro o i l pacchetto sono ancora
in viaggio), mentre u n timer troppo lungo comporta attese i n caso d i perdita di pacchetti.
Timer d i keepalive
Una ulteriore temporizzazione viene effettuata mediante i l timer di keepalive: inizia i l conteggio alla
ricezione di ogni pacchetto e quando scade dichiara la connessione caduta per eccessiva inattivit.
Quindi questo timer interviene per individuare le situazioni i n cui cade la connessione.
Per evitare che il t i m e r scada i n o p p o r t u n a m e n t e , il
v u o t i se il m i t t e n t e n o n ha nulla da inviare.
si o c c u p a d i m a n d a r e d e i p a c c h et t i
Tlmed wait
I l timed wait invece i l tempo che viene atteso prima di disconnettere effettivamente una connessione ed pari al doppio del tempo d i vita d i u n comune pacchetto: questo evita che dei pacchetti
possano rimanere circolanti per la rete anche dopo la chiusura.
Timer di persistenza
Come descritto successivamente, i l TCP utilizza i l metodo della finestra scorrevole per gestire i l
flusso di dati che i l ricevente i n grado di accettare, e tra i valori validi d i questo campo v i anche
lo zero, a significare che i l ricevente richiede l'interruzione momentanea dell'invio di dati.
Se viene perso proprio i l pacchetto che riapre la finestra, i l mittente del canale TCP rimarr per
in attesa indefinita: per evitare questa situazione i l TCP avvia u n timer, detto timer d i persistenza,
ogni qual volta i l ricevente chiude la finestra.
Finestra di trasmissione La finestra di trasmissione ha dimensione W e in essa veng o n o memorizzati tutti i numeri di sequenza
dei byte che la sorgente pu trasmettere
senza bisogno di ricevere alcun messaggio
ACK da parte della destinazione.
s
181
La finestra di trasmissione viene gestita come una struttura a coda, utilizzando 2 variabili (2 puntatori):
s e n d b a s e : rappresenta i l numero d'ordine del byte pi vecchio tra quelli trasmessi ma non ancora
riscontrati positivamente dalla destinazione;
I nextseqnum: rappresenta i l numero d'ordine del prossimo byte che cade nella finestra corrente e
che deve ancora essere trasmesso per la prima volta.
send base
e la lar-
nextseqnum
ACK ricevuto
window size
Non ancora
ricevuto
Byte fuori
ancora ricevuto
finestra
Ws(byte)
Alla ricezione d i u n ACK i l mittente aggiorna i l valore d i sendbase con i l valore che gli viene comunicato se tale valore risulta essere superiore al valore corrente, altrimenti lo lascia inalterato. Aggiornando i l valore inferiore la finestra viene spostata collocandosi pi a destra dello stesso numero
di byte.
La finestra d i ricezione, avente dimensioni W pari al numero d i byte che i l ricevente i n grado
di ricevere i n quel momento, una struttura d i dati che viene mantenuta aggiornata nell'host d i
destinazione.
D
i
i
i
Fuori sequenza
ma memorizzati
e confermati con ACK
window size
W (byte)
Byte ricevibili,
non ancora
pervenuti
Attesi e non
Byte fuori
ancora ricevuti
finestra
rcv base
Nella finestra d i ricezione vengono memorizzati i numeri d'ordine dei byte che la destinazione
disposta a ricevere consecutivamente, prima d i dover inviare alcun messaggio ACK alla sorgente. La
gestione di questa finestra viene effettuata con un'unica variabile, rcv_base, che contiene i l minimo
valore che i l destinatario si attende sia perch quel byte non lo ha ancora ricevuto oppure perch
lo ha ricevuto errato.
Se per esempio viene ricevuto u n segmento con numero d i sequenza maggiore, se privo d i errori
e cade nella finestra d i ricezione viene memorizzato ma non si aggiorna i l rcvbase e si rimane i n
attesa della parte d i messaggio antecedente che ancora non pervenuta.
La d i m e n s i o n e d e l l e d u e finestre g e n e r a l m e n t e diversa in q u a n t o le v e l o c i t d i e l a b o r a z i o n e
d i m i t t e n t e e d e s t i n a t a r i o p o s s o n o essere a n c h e m o l t o diverse: affinch il m i t t e n t e n o n saturi
il d e s t i n a t a r i o , necessario c h e q u e s t o invi al p r i m o la d i m e n s i o n e della m e m o r i a d i ricezione
in m o d o che il m i t t e n t e si possa r e g o l a r e m o d i f i c a n d o i flussi d i t r a s m i s s i o n e : v e d r e m o c o m e
nel p r o t o c o l l o :
il r i c e v e n t e c o m u n i c a al t r a s m i t t e n t e la d i m e n s i o n e o p p o r t u n a d e l l a f i n e stra attraverso il c a m p o W i n d o w p r e s e n t e n e l l ' h e a d e d e i s e g m e n t i
f