The Data Link Layer

go-back-N

Stop-and-wait wastes a link by sending only one frame at a time. Go-back-N fixes the waste with pipelining: the sender is allowed to have up to N frames outstanding at once, without waiting for each one's ACK before sending the next. Picture firing off a stream of numbered frames into the pipe, then ACKs flowing back, while you keep the pipe full. The N is the window size — how many unacknowledged frames you may have in flight.

What makes it go-back-N is how it handles a loss with a deliberately simple receiver. The receiver accepts frames only strictly in order and discards anything out of order; it sends a cumulative ACK, meaning ACK k confirms everything up through frame k. So if frame 5 is lost but 6, 7, and 8 still arrive, the receiver throws 6, 7, and 8 away and keeps ACKing up to 4. When the sender's timer for frame 5 expires, it goes back and retransmits frame 5 AND every frame after it — 5, 6, 7, 8 — even though some of those already arrived once. The receiver stays cheap because it never has to buffer out-of-order frames.

The trade-off is honest: go-back-N keeps the pipe busy and uses a tiny receiver, but a single lost frame can trigger the resending of a whole window's worth of frames, wasting bandwidth when the loss rate is high. Selective repeat is the cousin that fixes this by buffering out-of-order frames and resending only the missing ones, at the cost of a more complex receiver and per-frame ACKs.

Window N=4. Sender ships frames 4, 5, 6, 7. Frame 5 is lost; 6 and 7 arrive but the receiver, accepting only in order, discards them and keeps ACKing 4. On timeout the sender goes back and resends 5, 6, and 7 — all three, even though 6 and 7 had already arrived once.

One lost frame forces resending it and everything after it in the window.

Go-back-N's receiver is dead simple (no out-of-order buffering, just cumulative ACKs), but that simplicity means one loss can cost a whole window of retransmissions. It shines when losses are rare, and is wasteful when they are common.

Also called
GBNgo-back-n ARQ回溯 N