Sliding Window & Flow Control
How a receiver throttles a sender — down to a dead stop
Step 1 of 2 — understand the idea. Read this first and the packet trace will confirm what you already expect, instead of teaching you two things at once.
What you'll be able to do
- ▸Explain the receive window as advertised free buffer space
- ▸Watch a window shrink to zero and identify what that does to the sender
- ▸Explain how a window update restarts a stalled transfer
✗ Common misunderstanding: The window field advertises how fast the link is.
Why that's wrong: It advertises free space in the receiver's buffer, in bytes. It says nothing about the network between the two hosts.
Correct model: Window = free memory at the receiver. Speed is a consequence (window ÷ round-trip time), not the meaning.
The packets prove it: In the sliding-window trace the window falls to 0 while the link is completely idle — the receiver's application simply stopped reading.
✗ Common misunderstanding: Flow control and congestion control are two names for the same thing.
Why that's wrong: They protect different victims with different mechanisms. Flow control protects the RECEIVER's buffer using the advertised window; congestion control protects the NETWORK using the sender's private cwnd.
Correct model: Two independent brakes, always both active. The sender may have min(rwnd, cwnd) bytes in flight.
The packets prove it: In the rwnd-limited scenario cwnd is large but the 4 KB advertised window is the binding limit; in the congestion-collapse scenario the window is huge and the network is the problem.
Watch these fields in the lab: tcp.windowSize
- Receive buffer
- Memory at the receiver holding arrived data until the application reads it. Fixed size (here 4000 bytes).
- Receive window (rwnd)glossary
- The FREE space left in that buffer, advertised in every packet. Shrinks as data waits unread; grows when the app reads.
- Bytes in flight
- Data the sender has transmitted but not yet had acknowledged. This is the quantity the window limits.
- Zero windowglossary
- An advertisement of 0: 'stop completely'. Legal, common, and not an error.
- Window updateglossary
- A packet whose only purpose is announcing that space has freed up.
Watch these fields in the lab: tcp.windowSize · tcp.ackNumber
✓ Concept check — before you open the packets
These test the idea, not the trace. You should be able to answer them from the explanation above.
Now that you understand the concept, observe how it appears in the packet exchange.
The lab runs a real simulated capture — pause, step, click any packet, and inspect every byte.