A TCP sender finds out the available receive buffer space through the ‘receive window’ header field of packets/acknowledgments sent by the receiver to the sender. The flaw in this approach is that if the receiver has no space, it will send a receive window of 0. This indicates that the sender should not send any more data as there is no space in the receiver’s buffer. However, if the sender does not send data, the receiver may never send a packet to tell the sender when there is space. Assuming we do not want the receiver to gratuitously send packets to the sender just to tell it about window space (ie the receiver should only send packets to the sender if it either has data to send or if it is sending an acknowledgement), what can the sender do resolve this problem?
Try an answer before revealing the guidance below.
Key Concepts
- Zero receive window
- Persist timer
- Window probe
- ACK carries updated rwnd
Answer Approach
- The receiver only replies with ACKs, so the sender must give it something to ACK.
- Decide what small segment the sender can send.
- Decide when the sender sends it.
Full Answer
Answer status: Verified against study notes. Revision notes, not an official marking scheme.
The sender keeps a persist timer and, while the advertised window is 0, periodically sends a small probe segment (one data byte) to the receiver. The receiver must acknowledge it, and that ACK carries the current receive window. Once buffer space frees up, an ACK advertises a non-zero window and the sender resumes sending.
Shortcuts: K concepts · A approach · F answer · R reviewed · B bookmark · ← / → previous / next