TCP - Slow start

TCP uses a mechanism called congestion control to control the rate at which packets are sent. This is done to avoid overwhelming the network, which can lead to packet loss, and to ensure that the network is utilized efficiently.

"Slow start" is a part of the congestion control mechanism used by TCP. When a TCP connection is first established, the sending host does not know how much data the network or the receiver can handle at once, so it starts by sending a small amount of data. This is the "congestion window" (cwnd) and is usually set to the maximum segment size (MSS) of the network.

In the slow start phase, the sender starts by sending a small amount of data and then doubles the size of the cwnd with each acknowledgment received from the receiver. This means that the amount of data being sent grows exponentially until either a timeout occurs, or until the cwnd reaches a threshold called the "slow start threshold" (ssthresh).

At this point, the algorithm transitions to the "congestion avoidance" phase, where the cwnd is increased more slowly, typically by one MSS for each round-trip time.

This approach allows the sender to quickly discover the capacity of the network (hence the "slow start" name, which is a bit of a misnomer) and to avoid sending data too fast and causing congestion.

The "slow start" algorithm is specified in RFC 5681, which describes the TCP congestion control algorithms.