Congestion Control·Lesson 1 of 11
Congestion Control
The Short Answer
Every network has a limit to how much data it can carry at once — think of it as the width of a road. When too many devices try to push too much data through that road at the same time, everything slows to a crawl and messages start getting lost. Congestion control is the set of techniques that keep the amount of data entering the network below what the network can actually handle, so traffic keeps flowing instead of jamming up.
The one idea to hold on to
Congestion control protects the shared middle of the network — the links and routers everyone's traffic passes through. It is about being a good citizen so the whole network stays healthy, not about protecting any single device.
A highway at rush hour
A road can only carry so many cars per minute. If everyone floors it onto the on-ramps at once, the highway doesn't move faster — it grinds to a standstill, and nobody gets anywhere. Congestion control is like ramp meters and speed limits: it deliberately slows how fast cars join, so the road keeps moving and more people actually get through in the end.
First, What Is Congestion?
happens when the demand for a network's capacity is greater than what it can supply. Data on a network travels in small chunks called , and those packets pass through devices called that forward them toward their destination. Each router has a small waiting area (a queue) for packets it hasn't sent yet. When packets arrive faster than the router can forward them, the queue fills up — and once it's full, new packets are simply dropped. That overload is congestion.
Two Ways to Fight Congestion
There are two broad strategies, and every technique falls into one of them. Open-loop congestion control tries to prevent congestion before it ever starts, using good policies and design. Closed-loop congestion control assumes congestion will happen anyway, so it watches for the warning signs and reacts to relieve it. Here's how they compare:
| Open-loop | Closed-loop | |
|---|---|---|
| When it acts | Before congestion starts | After congestion is detected |
| Main goal | Prevent it from happening | React to it and recover |
| How it works | Fixed policies and rules | Feedback and continuous adjustment |
| Everyday example | Limiting how many senders can join | A sender slowing down after losing packets |
Neither approach is enough on its own. Real networks lean on both: sensible policies to keep everyday load in check, plus reactive control for when traffic spikes anyway. We'll dedicate a full lesson to each family, so don't worry about the details yet.
How TCP Controls Congestion
The most important congestion control on the internet lives inside , the protocol that reliably delivers most web traffic, email, and file transfers. A TCP sender never knows the exact capacity of the path ahead, so it does something clever: it starts slow, speeds up gradually while things look healthy, and backs off the moment it senses trouble. It does this using four cooperating algorithms.
TCP's four congestion-control algorithms
- Slow start — begin by sending only a little, then roughly double the amount each round until you approach the limit
- Congestion avoidance — once near the limit, grow the sending rate slowly and carefully to avoid overshooting
- Fast retransmit — when a packet looks lost, resend it right away instead of waiting for a timer to expire
- Fast recovery — after a loss, dip the sending rate rather than dropping all the way back to the beginning
These four work together as a single feedback loop, and each one has its own lesson later in this topic. Together they let millions of independent senders share the internet without any central traffic controller telling them what to do.
Why It Matters
Without congestion control, a busy network can suffer a : senders lose packets, so they resend them, which adds even more traffic, which causes even more loss — a downward spiral where the network stays saturated but almost no useful data gets through. This actually happened to the early internet in 1986, when throughput on one link famously dropped by a factor of a thousand. The congestion-control algorithms we use today were invented precisely to stop that from ever happening again.
“"Congestion control and flow control are the same thing."”
Q:In one sentence, what is congestion control and why does the internet need it?
A: It's how senders regulate their sending rate to match what the network can carry, so that shared links and routers don't get overloaded — without it, the internet would collapse into a storm of dropped packets and retransmissions under heavy load.
Quick Revision Cheat Sheet
Congestion control: Keeping data entering the network below what it can carry
Protects: The shared network (links + routers), not one device
Open-loop: Prevent congestion before it starts
Closed-loop: Detect congestion and react to it
TCP's toolkit: Slow start, congestion avoidance, fast retransmit, fast recovery
Worst case: Congestion collapse — network full, almost nothing delivered