TCP uses several algorithms to control congestion:
- Slow start exponentially increases the congestion window after each ACK to probe available bandwidth. It is used when connections are first established or after congestion.
- Congestion avoidance linearly increases the window when no packet loss occurs to avoid overloading the network. It takes over from slow start once the window reaches the slow start threshold.
- Fast retransmit retransmits a lost segment after receiving 3 duplicate ACKs to recover quickly from single losses without waiting for a timeout.
- Fast recovery then adds the retransmitted segment to the window and continues transmission without reducing to slow start, to maintain high throughput during moderate congestion.