Question

What is TCP congestion control, and why does one slow connection affect everything?

Vault Verified
Curated Intelligence
Definitive Source
Answer

The mechanism by which senders discover how fast the network can carry their data without overwhelming it — and it matters because the internet has no central traffic controller. Capacity is negotiated by every sender independently, using loss and delay as the only feedback.

The core problem. A sender cannot see the network. It does not know link speeds, how many others are competing, or where the bottleneck is. So it probes: send more, watch what happens, and back off when there are signs of trouble.

The classic algorithm:

Slow start. Begin cautiously and double the sending rate each round trip — which is exponential and not slow, despite the name.

Congestion avoidance. After a threshold, increase linearly.

On packet loss, cut the rate sharply, historically by half, and start growing again. This produces the characteristic sawtooth pattern.

Why loss is used as the signal. Historically, loss on a wired network almost always meant a full buffer somewhere — so loss meant congestion. This assumption breaks on wireless, where packets are lost to interference rather than congestion, causing the sender to slow down for no reason.

Bufferbloat, which is the answer to why one download ruins everything. Cheap routers and modems were given very large buffers on the assumption that dropping packets is bad. A bulk transfer fills that buffer completely, and every other packet — a video call, a game, a keystroke over SSH — then queues behind hundreds of milliseconds of backlog. Bandwidth is fine; latency has collapsed. This is why your connection feels broken during an upload even though the speed test passes.

What fixes it:

Modern queue management — algorithms that keep queues short by dropping or marking early, which is the real solution and is now in many consumer routers under labels like smart queue management.

Newer congestion control which models bandwidth and round-trip time rather than waiting for loss, and which behaves far better in buffered networks.

Explicit congestion notification, where routers mark rather than drop.

Fair queueing, so one flow cannot monopolise.

Related Questions