Summary
- A TCP receiver may hold the acknowledgment for one ordinary in-order segment so a second segment or an outbound response can share the feedback cost.
- The wait is bounded: a second full-sized segment, timer expiry, or loss-related evidence releases an ACK before batching becomes silence without control.
The first full-sized segment arrives in order. TCP accepts its bytes and advances the next sequence number it expects, yet no ACK leaves immediately. If another full-sized segment follows, one cumulative acknowledgment can confirm both. If it does not, a timer ends the wait. Nothing about receipt is uncertain inside the receiver; only the moment at which that receipt becomes visible to the sender has changed.
RFC 1122 turned this behavior into a host rule in 1989. A TCP should implement delayed acknowledgments because fewer standalone ACK segments can improve efficiency in both hosts and the network. But the permission came with two limits: the delay must remain below half a second, and a stream of full-sized segments should receive an ACK at least every second segment. Delay was therefore never an open-ended licence to suppress feedback.
The same section described why waiting could be useful beyond packet counting. During character-mode remote login, the receiving application might consume the byte, update its window and echo a character. A short pause could combine an ACK, a window update and the reply into one segment. The receiver was not merely saving a header; it was giving nearby state changes a chance to travel together.
RFC 5681 later clarified the frequency rule. RFC 1122 had expressed the every-second-full-sized-segment requirement inconsistently; RFC 5681 states it unambiguously as a SHOULD and repeats that waiting for the second segment must never exceed 500 milliseconds. It also exposes a practical ambiguity. A receiver can count two times its announced receive MSS, but the sender may transmit smaller segments because of a lower path MTU. Waiting for two receive-MSS units can then cover more than two actual segments. A receiver is advised to avoid that stretch, for example by acknowledging at least every second segment regardless of size.
The batching rule yields immediately when the ACK carries different operational evidence. A segment arriving above a gap should trigger an immediate duplicate ACK so the sender can detect missing data. A segment filling all or part of a gap should also trigger an immediate ACK. The receiver does not wait for prettier batching while loss recovery needs a current map of sequence-space progress.
RFC 2525 catalogued the failure mode called a stretch ACK: one acknowledgment covers more than the expected two full-sized segments because an implementation does not generate ACKs often enough. The consequence is not simply a sparse trace. ACK arrival participates in the sender's control clock, so excess batching can slow window growth or encourage burstier release. The historical record shows why the delay needed an observable boundary.
Member Briefing
Deeper Profile Context
Sign in with the right membership level to unlock the full briefing and source notes.
Only for Strategic Circle
Strategic Circle
Open to all readers. Unlock profile briefings after joining and signing in.
Join Strategic CircleOnly for Leadership Alliance
Leadership Alliance
For qualified IP-asset owners and management; sign in to unlock alliance briefings.
Join Leadership Alliance
