TCP Congestion Control Algorithms (Slow Start, Congestion Avoidance)

Why TCP Has to "Guess" the Network's Capacity

A TCP sender has no direct way to ask a router "how much traffic can you currently handle?" Instead, it starts cautiously and gradually increases its sending rate, using packet loss as an indirect signal that it's pushed too far.

Slow Start: A Cautious Beginning

Round 1:  send 1 segment
Round 2:  send 2 segments   (doubled)
Round 3:  send 4 segments   (doubled again)
Round 4:  send 8 segments   (doubled again)

Despite the name, "slow start" actually grows exponentially - doubling the amount sent each round - until either a loss is detected, or a threshold is reached, at which point TCP switches to a more cautious growth strategy.

Congestion Avoidance: A More Cautious Climb

Once past the initial threshold, TCP switches from doubling to a much gentler, linear increase - adding roughly one additional segment per round trip, rather than doubling. This trades speed of growth for greater stability, avoiding another sudden burst of loss.

What Happens When Loss Is Detected

When a lost segment is detected, TCP interprets that as a sign of network congestion and dramatically reduces its sending rate - often cutting it in half - before cautiously beginning to climb again through slow start and congestion avoidance.

The Bigger Picture: Fairness Among Many Connections

This "grow cautiously, back off sharply on loss" pattern is deliberately designed so that many independent TCP connections sharing the same network path naturally settle into roughly fair shares of the available bandwidth over time, without any of them needing to coordinate directly with each other.

Written by Lorens Mishra

Software Engineer Notes Management System Administrator

Discussion

0 comments
Sign in to join the discussion.

No comments yet. Be the first to say something.