← Lessons

quiz vs the machine

Platinum1700

Networking

TCP Selective Acknowledgments

See how SACK tells a sender exactly which segments arrived so it retransmits less.

5 min read · advanced · beat Platinum to climb

The Limit Of Cumulative Acknowledgments

Basic TCP uses cumulative acknowledgments: an acknowledgment number means every byte below it arrived. If one segment is lost but later ones arrive, the receiver can only keep acknowledging the gap. The sender learns a byte is missing but not which later segments are already safe.

What Selective Acknowledgment Adds

Selective acknowledgment, or SACK, is a TCP option that lets the receiver report non contiguous blocks of data it already holds.

  • The receiver lists ranges of bytes that arrived beyond the gap.
  • The sender retransmits only the truly missing segments.
  • Already delivered segments are not sent again, saving bandwidth.

Why It Matters

Without SACK, a sender recovering from loss may resend data the receiver already has, wasting capacity exactly when the network is stressed. With SACK the sender rebuilds a precise picture of the receiver buffer and fills only the holes.

  • It improves recovery when multiple segments are lost in one window.
  • It pairs with fast retransmit to react before a timeout.
  • It is negotiated during the handshake and used only if both sides agree.

Key idea

Selective acknowledgment reports the exact ranges a receiver already holds so the sender retransmits only missing segments instead of everything after a gap.

Check yourself

Answer to earn rating on the learn ladder.

1. What problem does SACK solve over plain cumulative acknowledgments?

2. When is SACK most valuable?