This document discusses TCP congestion control. It begins by defining congestion as "too many sources sending too much data too fast for the network to handle". It then describes TCP's three-phase approach to congestion control: slow start, congestion avoidance, and congestion detection. Slow start exponentially increases the congestion window initially. Congestion avoidance then incrementally increases the window size to avoid congestion. When packet loss is detected via timeouts or duplicate ACKs, the window size is reduced to address the detected congestion. The document provides details on how each phase operates and how TCP adapts its window size in response to congestion.