Os três principais componentes dos algoritmos de controle de congestionamento do TCP são:
1.
Início lento: Esta é a fase inicial do controle de congestionamento. Quando uma conexão TCP é estabelecida, o remetente começa a transmitir pacotes com um pequeno tamanho de janela de congestionamento (normalmente 1 MSS, onde MSS é o tamanho máximo do segmento). Cada vez que um reconhecimento (ACK) é recebido por um pacote transmitido, o tamanho da janela de congestionamento é aumentado em 1 ms. Isso leva ao crescimento exponencial da taxa de transmissão. O início lento ajuda o remetente a encontrar rapidamente a taxa de transmissão apropriada sem sobrecarregar a rede.
2. Evitar a congestionamento: Uma vez que a janela de congestionamento atinge um certo limite (geralmente o limite de início lento, o SSTHREH), o remetente entra na fase de prevenção de congestionamento. Nesta fase, a janela de congestionamento é aumentada mais lentamente-em 1 MSS para cada tempo de ida e volta (RTT) dos reconhecimentos recebidos. Esse aumento aditivo visa investigar gradualmente a capacidade da rede sem causar congestionamento. O algoritmo continua aumentando a janela de congestionamento até que o congestionamento seja detectado.
3.
Detecção e recuperação de congestionamento: Este componente é acionado quando o congestionamento é detectado. Essa detecção normalmente acontece quando a perda de pacotes ocorre (por exemplo, devido a pacotes ou tempo limite caído). Ao detectar congestionamento, o algoritmo toma medidas drásticas para reduzir a taxa de transmissão. O mecanismo de recuperação mais comum é reduzir pela metade o tamanho da janela de congestionamento (diminuição multiplicativa). Essa redução repentina ajuda a aliviar rapidamente o congestionamento. O limite de partida lento (SSTHREH) também é geralmente atualizado para metade do tamanho da janela de congestionamento no momento da detecção de congestionamento, para impedir que o remetente aumente agressivamente sua taxa de transmissão novamente rapidamente.
É importante observar que muitas variações e refinamentos existem dentro desses três componentes principais em diferentes algoritmos de controle de congestionamento do TCP (por exemplo, Tahoe, Reno, New Reno, cúbico). Essas variações se concentram principalmente em como o congestionamento é detectado, como a janela de congestionamento é ajustada e como o limite de início lento é atualizado.