Explain TCP congestion control.
TCP congestion control keeps the sender from overwhelming the network. The sender maintains a congestion window, cwnd, and sends at most the minimum of cwnd and the receiver's advertised window.
Classic four phases:
- Slow start: cwnd starts small and doubles each round trip until the slow-start threshold.
- Congestion avoidance: cwnd grows by roughly one segment per round trip, additive increase.
- Fast retransmit: three duplicate ACKs imply one lost segment, so resend it without waiting for a timeout.
- Fast recovery: halve cwnd and continue.
cwnd ^ /| AIMD sawtooth
| / |
| / |\__
+-----------------> time
On timeout cwnd drops to one and slow start restarts. This additive-increase, multiplicative-decrease behaviour is why TCP is fair and stable. Modern algorithms differ: CUBIC uses a cubic growth function, and BBR models bandwidth and round-trip time instead of treating loss as the only signal.