Go-Back-N ARQ is a sliding-window error-control protocol in which the sender may send up to N frames without waiting for acknowledgements; if a frame is lost or damaged, the sender goes back and retransmits that frame and all frames sent after it.
Working
- Frames are numbered with \(m\)-bit sequence numbers (0 to \(2^m - 1\)).
- Sender window size \(W_s \le 2^m - 1\); receiver window size = 1 (it accepts frames only in order).
- The receiver sends cumulative ACKs (an ACK for frame \(n\) confirms all frames before it). Out-of-order frames are discarded.
- The sender keeps a timer for the oldest unacknowledged frame. On timeout (or NAK), it resends all outstanding frames from that one.
Example (window 4): sender sends frames 0, 1, 2, 3. Frame 1 is lost.
Sender Receiver
F0 ----------> accepted, ACK
F1 ----X (lost)
F2 ----------> discarded (expecting F1)
F3 ----------> discarded
timeout for F1
F1 ----------> accepted
F2 ----------> accepted
F3 ----------> accepted
Frames 2 and 3 are sent twice even though they arrived safely the first time.
Why \(W_s \le 2^m - 1\)? With \(m = 2\) (numbers 0–3) and a window of 4, if all ACKs are lost the receiver cannot tell new frame 0 from a retransmitted old frame 0. A window of 3 avoids this confusion.
Advantages: better link utilisation than stop-and-wait (pipelining); simple receiver with one buffer.
Disadvantages: wastes bandwidth on noisy links by retransmitting correctly received frames. Selective Repeat ARQ fixes this by resending only the lost frames, at the cost of a more complex receiver.