Lezione 14 · Canale 1 · mercoledì 28 ottobre 2026
Stop and wait con errori e Go-Back-N
FCI · Reti
Lezione 14 · Canale 1 · mercoledì 28 ottobre 2026
FCI · Reti
Nello stop and wait A numera la trama con , poi calcola il CRC, che copre anche il numero, trasmette e aspetta l'ACK , il numero della prossima trama attesa da B. A va avanti solo con . Se l'ACK è errato o non arriva, lo sblocca solo il timeout, e A ritrasmette con lo stesso numero.
Il timeout deve lasciare all'ACK il tempo di tornare. Contato dalla fine della trasmissione della trama,
con l'elaborazione trascurata; contato dall'inizio, . Il valore ideale è proprio il minimo: più breve, A ritrasmette trame il cui ACK sta arrivando; molto più lungo, il protocollo funziona, ma dopo una perdita A aspetta più del necessario.
Sia la probabilità che una trama arrivi con errori, indipendente da trama a trama. Ogni tentativo riesce con probabilità , quindi una trama richiede in media
trasmissioni, la prima compresa. Con il timeout minimo ogni tentativo occupa un ciclo : il tempo medio per trama è e l'efficienza diventa
Se ogni bit è errato con probabilità (il tasso d'errore sul bit, BER), una trama di bit è corretta con probabilità . Con trame di 10 000 bit, 200 bit di intestazione e ACK, Mbit/s e ms, senza errori :
Gli errori pesano quando si avvicina a 1. Lo stop and wait è semplice, ma conviene poco con un prodotto banda-ritardo alto o con molti errori, come nei collegamenti senza fili disturbati da interferenze.
Nel Go-Back-N A invia fino a trame di seguito senza aspettare i riscontri. è la finestra di trasmissione. Gli ACK portano ancora : quando A riceve l'ACK , la finestra scorre e va da a , sempre lunga (sliding window). A invia le trame della finestra che non ha ancora inviato. Lo stop and wait è il caso .
Se la finestra copre il ciclo, A trasmette senza pause e il canale è sempre occupato: l'efficienza, come rapporto fra tempo di trasmissione e tempo totale, vale 1.
Go-Back-N con
A tiene , la trama più vecchia non ancora riscontrata, e può avere inviato le trame da a . Avvia un timeout per ogni trama. Quando arriva un ACK con maggiore, pone . Se scade il timeout di , torna indietro e ritrasmette tutte le trame inviate da in poi: da qui il nome.
B ha una finestra di ricezione : accetta solo la trama corretta con numero e scarta le trame errate e quelle fuori sequenza. Nella figura, con la trama 2 persa, A invia ancora 3 e 4, che la finestra 2–4 consente; B le riceve corrette ma le scarta, perché manca la 2. Scade il timeout della 2 e A ritrasmette 2, 3 e 4, che ora B accetta in ordine. La sequenza resta corretta; il prezzo è ritrasmettere trame già arrivate bene.
L'ACK conferma tutte le trame fino a , perché B accetta solo in sequenza: è un riscontro cumulativo. Così un ACK perso non costa nulla, se il successivo arriva prima del timeout. Con , A invia le trame da 1 a 4 e l'ACK 2 si perde; arriva l'ACK 3, prima che scada il timeout della 1. La finestra scatta da 1–4 a 3–6, la trama più vecchia non riscontrata: A ha già inviato 3 e 4, quindi invia la 5. Se l'ACK 3 arrivasse dopo il timeout, A ritrasmetterebbe la finestra dalla 1.
Quando A e B si scambiano dati nei due versi, ognuno mette nelle proprie trame di dati anche il riscontro per l'altro: è il piggybacking. Il riscontro vale per ciò che è arrivato quando la trama viene formata. Con trame di B molto più lunghe di quelle di A, , timeout molto lungo e nessun errore:
| Trama di B | Ricevute da B | Finestra di A | A invia | |
|---|---|---|---|---|
| prima | nessuna | 1 | 1–4 | niente |
| seconda | 1 | 2 | 2–5 | 5 |
| terza | 1, 2, 3, 4 | 5 | 5–8 | 6, 7, 8 |
All'inizio A ha già inviato le trame da 1 a 4, quindi il primo riscontro non lo fa avanzare; il terzo conferma tre trame in un colpo, e A procede a singhiozzo, al ritmo dei riscontri.
Se B ritarda i riscontri, la finestra di A scorre più lentamente e A rallenta. Il ricevitore regola così la velocità del trasmettitore: è il controllo di flusso, che il protocollo fa da sé, purché i riscontri arrivino prima dei timeout.
A non si ferma se le trame della finestra coprono il ciclo della prima, cioè se :
con l'elaborazione trascurata. Allora, senza errori, l'ultima di trame parte a e il suo ACK torna dopo: .
Con una finestra più piccola A esaurisce le trame prima che torni il primo ACK e resta fermo. Con una molto più grande il canale resta occupato, ma ogni errore costa una finestra intera. Se ogni trama sbagliata fa ripetere trame, il tempo medio per trama e l'efficienza sono
per una finestra non minore della minima: più grande è , più pesa ogni errore.
Efficienza e dimensione della finestra
Con e ACK trascurabile la finestra minima è 6; con l'efficienza è con e scende a circa con .
Un canale via satellite va a 1 Mbit/s, con ritardo di propagazione di 250 ms e trame di 2000 bit; ACK trascurabili, nessun errore. Una trama dura ms e il ciclo ms. La finestra minima del Go-Back-N è
Con 100 trame A resterebbe fermo per 302 ms a ogni ciclo; con 600 il canale resterebbe occupato, ma ogni errore farebbe ritrasmettere molte più trame. Con lo stop and wait, una trama per ciclo:
cioè lo 0,4 %.
Il Selective Repeat evita di ripetere le trame già arrivate bene: B conserva le trame corrette fuori sequenza e A ritrasmette solo quelle mancanti. Nella figura con la trama 2 persa, B terrebbe 3 e 4 e A ritrasmetterebbe solo la 2.
Timeout, dall'inizio della trama
Trasmissioni medie per trama
Stop and wait con errori
Finestra di A
Finestra minima
trame, finestra minima
Efficienza del Go-Back-N