1. Inicio lento: Esta es la fase inicial del control de congestión. Cuando se establece una conexión TCP, el remitente comienza a transmitir paquetes con un pequeño tamaño de la ventana de congestión (generalmente 1 mss, donde MSS es el tamaño máximo del segmento). Cada vez que se recibe un reconocimiento (ACK) para un paquete transmitido, el tamaño de la ventana de congestión aumenta en 1 mss. Esto conduce al crecimiento exponencial de la tasa de transmisión. Slow Start ayuda al remitente a encontrar rápidamente la tasa de transmisión adecuada sin abrumar a la red.
2. Evitación de congestión: Una vez que la ventana de congestión alcanza un cierto umbral (generalmente el umbral de inicio lento, sshresh), el remitente ingresa a la fase de evitación de congestión. En esta fase, la ventana de congestión se incrementa más lentamente, en 1 mss por cada tiempo de ida y vuelta (RTT) de reconocimientos recibidos. Este aumento aditivo tiene como objetivo sondear gradualmente la capacidad de la red sin causar congestión. El algoritmo continúa aumentando la ventana de congestión hasta que se detecta la congestión.
3. Detección y recuperación de congestión: Este componente se activa cuando se detecta la congestión. Esta detección generalmente ocurre cuando se produce la pérdida de paquetes (por ejemplo, debido a paquetes o tiempos de espera caídos). Al detectar la congestión, el algoritmo toma medidas drásticas para reducir la velocidad de transmisión. El mecanismo de recuperación más común es reducir a la mitad el tamaño de la ventana de congestión (disminución multiplicativa). Esta reducción repentina ayuda a aliviar rápidamente la congestión. El umbral de inicio lento (SSTHRESH) también generalmente se actualiza a la mitad del tamaño de la ventana de congestión en el momento de la detección de congestión, para evitar que el remitente aumente agresivamente su tasa de transmisión nuevamente demasiado rápido.
Es importante tener en cuenta que existen muchas variaciones y refinamientos dentro de estos tres componentes centrales en diferentes algoritmos de control de congestión TCP (por ejemplo, Tahoe, Reno, New Reno, Cúbico). Estas variaciones se centran principalmente en cómo se detecta la congestión, cómo se ajusta la ventana de congestión y cómo se actualiza el umbral de inicio lento.