Slow start, fast retransmit, and why the whole Internet doesn't melt
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 why a sender limits itself with cwnd even when the receiver's window is huge
▸Watch slow start double the sending rate every round trip
▸See three duplicate ACKs trigger a fast retransmit — no timeout needed
▸Follow ssthresh and the multiplicative decrease after loss (AIMD)
Flow control protects the computer at the other end. But nothing so far protects the *network in between* — the routers whose queues fill up when everyone sends at once. In 1986 the early Internet discovered what happens without that protection: throughput collapsed to a fraction of capacity while traffic kept rising, because every lost packet was met with more sending. Congestion control is the fix: each sender keeps a private guess about how much the path can carry, raises it while things arrive, and cuts it hard when they don't.
✗ 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.