Quiz Entry - updated: 2026.07.05
What is SACK in TCP?
SACK = Selective Acknowledgment - the receiver tells the sender exactly which bytes (including discontinuous ones) it got, so only the truly missing segments are retransmitted.
SACK = Selective Acknowledgment
SACK allows the receiver to tell the sender exactly which bytes were received, so only missing segments are retransmitted.
Without SACK: Lost segment 5 → Retransmit 5, 6, 7, 8, 9, 10
With SACK: Lost segment 5 → Retransmit only segment 5
Benefits:
- Reduces unnecessary retransmissions
- Improves efficiency on lossy networks
- Negotiated during three-way handshake
Memory tip: SACK stands for Selective ACKnowledgment - the receiver is selective about which bytes it acknowledges, so only the missing pieces get resent.
Go deeper:
RFC 2018 — TCP Selective Acknowledgment Options — the spec that lets the receiver name discontinuous received blocks so only lost bytes are resent.
TCP — Selective acknowledgments — Wikipedia's summary of how SACK improves loss recovery.