案例库 · 工程与运营 · 技术决策 · 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
那一手
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.
为什么管用
- Cumulative ACK hides which later segments survived.
- SACK names the blocks received, exposing only the true holes.
- Retransmitting just the gaps cuts wasted bandwidth.
可以搬走什么
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.
后来呢
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.
资料来源
- RFC 2018: TCP Selective Acknowledgment Options
- RFC 6675: A Conservative Loss Recovery Algorithm Based on Selective Acknowledgement
发现哪里写错了?告诉我们。