A fast sender can overwhelm a slow receiver by sending data faster than the receiver can process it, causing buffer overflow and packet loss even when the network is fine.
A mechanism that prevents a sender from transmitting data faster than the receiver can accept it, typically by having the receiver advertise its available buffer space.
- Receiver advertises its available receive buffer size in each ACK packet
- Sender maintains a sending window limited by receiver’s advertised window
- Sender stops sending when window is exhausted
- As receiver processes data and frees buffer, it sends ACKs with larger window advertisements
- Sender resumes transmission within the new window
- Receiver-driven: receiver controls transmission rate
- Prevents receiver buffer overflow
- Implemented via sliding window with receiver-advertised limits
- Distinct from congestion control (which responds to network conditions)
- Built from: Sliding Window Protocol — mechanism for window management
- Built from: Receiver Buffer — the resource being protected
- Builds into: TCP — implements flow control via receive window
- Related: Connection-Oriented Service — key feature
- Contrasts with: Congestion Control — receiver vs network limited
- Zero-window condition: receiver advertises window=0, sender must probe periodically
- Silly window syndrome: small window updates can cause inefficient small transmissions
- Flow control doesn’t prevent network congestion — that’s congestion control’s job