EN
Back to the archive

The encyclopedia · Engineering & Operations · Technical decision · 1996

TCP SACK retransmits only the blocks actually missing after a loss

Selective Acknowledgement lets a receiver report exactly which segments arrived, so a sender retransmits just the gaps instead of everything after a loss.

University of Southern California

the move

When one TCP segment is lost, cumulative acknowledgements are blind: the receiver only names the boundary of the contiguously received data, so the sender has no idea which of the later segments actually got through and retransmits the entire tail.

RFC 2018 added a selective-acknowledgement option in which the receiver lists the edge blocks it holds. The sender can then build a map of the holes and transmit only those, which matters when losses affect separate segments rather than a contiguous run.

The effect is that the sender stops wasting bandwidth on data the receiver already has, and recovery from multi-segment loss becomes a matter of filling the gaps rather than redoing the whole transfer.

why it works

  • Cumulative ACK hides which later segments survived.
  • SACK names the blocks received, exposing only the true holes.
  • Retransmitting just the gaps cuts wasted bandwidth.
the payoffTell the sender what you got; send only the gapsneat

what transfers

When you announce only the total, you hide useful detail; reporting the actual set of what arrived lets the other side act on the true gap instead of a pessimistic guess.

what came after

SACK became a staple of modern TCP stacks and was refined by loss-recovery algorithms such as RFC 6675, which use the selective-ack map to recover from bursty loss far more efficiently.

references

spotted an error? The archive wants to know.

same kind of clever