Lezione 12 · Canale 2 · martedì 27 ottobre 2026
Go-Back-N: finestra scorrevole e riscontri cumulativi
FCI · Reti
Lezione 12 · Canale 2 · martedì 27 ottobre 2026
FCI · Reti
Il trasferimento dati affidabile chiede quattro cose: niente frame fuori sequenza, niente duplicati, niente perdite, e dati consegnati corretti. Ricevere un frame e consegnarlo al livello di rete sono due passi diversi: un frame ricevuto può anche essere scartato. Gli strumenti sono la ritrasmissione, gli ACK, il timer di ritrasmissione (RTO, Retransmission Timeout) e i numeri di sequenza.
Lo stop and wait ha un frame in volo per volta, quindi rende poco quando il prodotto banda-ritardo è grande rispetto a . Con una pipeline il trasmettitore invia frame senza aspettare i riscontri, e l'efficienza diventa volte quella dello stop and wait, fino al 100 %:
è la dimensione della finestra. Al 100 % l'ultimo bit dell'ultimo frame della finestra parte subito prima che arrivi l'ACK del frame più vecchio: il collegamento, come un tubo, è sempre pieno. Il protocollo che usa questa finestra è il Go-Back-N.
Con più frame in volo i numeri di sequenza non sono più solo 0 e 1, quindi il campo dell'intestazione usa più bit.
La finestra è una memoria del trasmettitore A, lunga frame. Comincia da un numero, la base, e contiene i numeri da base a base : quelli che A è autorizzato a inviare. Sono di due tipi:
Se la finestra è piena di frame inviati, A si ferma. Il ricevitore B tiene una variabile, l'expected sequence number (ESN), il numero del prossimo frame atteso: parte da 0 e aumenta di uno a ogni frame accettato. L'ACK porta l'ESN, non il numero del frame appena ricevuto: dopo il frame 0 dice ACK 1. Quando A riceve un ACK, la base diventa il numero scritto nell'ACK e la finestra scorre in avanti (sliding window), liberando posto per un frame nuovo.
Con , A invia i frame da 0 a 3 e si ferma. Arriva l'ACK 1: la finestra diventa 1–4 e A invia il 4. Con l'ACK 2 diventa 2–5 e A invia il 5, e così via.
Go-Back-N nel tempo
Con A invia i frame 0, 1 e 2, e il frame 1 si perde. B accetta lo 0 e risponde con l'ACK 1: la base di A passa a 1. Il frame 2 arriva, ma accettarlo creerebbe un fuori sequenza: B lo scarta e ripete l'ultimo ACK, ACK 1, come a dire «aspetto ancora l'1». La finestra di A non scorre.
Da qui si esce con l'RTO. A tiene un solo timer, per il frame più vecchio non ancora riscontrato della finestra. Quando arriva l'ACK di quel frame, A ferma il timer e ne avvia uno per il nuovo frame più vecchio: all'ACK 1 il timer passa al frame 1. Quando l'RTO scade, A torna indietro e ritrasmette tutti i frame della finestra ancora in attesa di riscontro, qui 1 e 2: da questo il nome Go-Back-N.
Il prezzo dell'efficienza è questo: dopo una perdita si ritrasmettono anche frame già arrivati, come il 2. Per questo la finestra migliore è la minima che dà il 100 %, cioè
Una finestra più grande non migliora l'efficienza, che è già al massimo, ma fa ritrasmettere più frame a ogni perdita.
Nel Go-Back-N un ACK con numero significa «ho ricevuto correttamente fino a , aspetto ». Con , A invia i frame da 0 a 3; gli ACK 1, 2 e 3 si perdono e arriva solo l'ACK 4. La base passa subito a 4 e la finestra diventa 4–7: l'ACK 4 garantisce che sono arrivati anche 0, 1 e 2, anche se i loro riscontri non si sono visti.
Con , se il frame 0 è molto in ritardo e i frame 1 e 2 arrivano prima:
I frame 1 e 2, scartati da B, ripartono allo scadere dell'RTO.
Efficienza con finestra
Finestra minima
Numeri nella finestra
ACK con ESN (cumulativo)