Retransmission-on-timeout answers drop. But a timeout can only fire on silence, and silence is ambiguous β€” the data may have arrived with the ACK lost, or everything arrived late and the timer was impatient. So retransmission manufactures duplicates on top of the ones IP already creates.

Acknowledgments must therefore name what is acknowledged, and the receiver must detect duplicates and place early arrivals. One mechanism solves all three: label each byte with its position in the stream.

Why positions and not timestamps β€” this is the crux. Timestamps are sparse: transmissions stamped are ambiguous (was there a , or nothing to send?). Byte positions are dense: bytes –, –, – prove – are missing and must exist, because position 300 is unreachable without passing 299.

Because positions in a stream are dense, a gap in positions is proof of loss, and it names precisely what was lost.

Three of IP’s failure modes collapse into this one mechanism:

  • drop β€” a gap reveals it; retransmit exactly those bytes
  • reorder β€” an early arrival sits past the gap; buffer until it fills
  • duplicate β€” positions already held are discarded

Ordering and deduplication were never separately designed β€” that’s the compression.

See also

References

Questions

flashcards/software-engineering/networking

Why does labeling bytes by stream position (not timestamps) let a receiver prove and name loss?::Positions are dense β€” a gap in positions must exist and names exactly which bytes are missing; timestamps are sparse and ambiguous

Which three IP failure modes collapse into the single sequence-number mechanism?::Drop (a gap β†’ retransmit those bytes), reorder (early arrival buffered past the gap), and duplicate (already-held positions discarded)

Retransmission itself manufactures duplicates, because a timeout fires on ambiguous silence β€” the data may have arrived with only the ACK lost.