Resumo

  • TIME-WAIT mantém estado depois do fechamento para impedir que segmentos atrasados da conexão anterior sejam confundidos com os de uma nova conexão usando a mesma quádrupla.
  • RFC 1337 descreveu a sequência: segmento antigo inaceitável, ACK emitido por TIME-WAIT, RST devolvido por um par sem conexão e remoção prematura do estado.
  • Ignorar RST em TIME-WAIT foi a proposta F1 de um documento Informational, não uma exigência universal das implementações atuais.
  • RFC 6191 permite algumas reutilizações antecipadas somente quando marcas de tempo e números de sequência indicam uma nova instância da conexão.

O custo é também uma barreira

Depois de um fechamento ativo, o TCP normalmente mantém o bloco de controle por 2×MSL. Esse intervalo permite que duplicatas antigas desapareçam antes da reutilização dos mesmos endereços e portas. TIME-WAIT não controla retransmissões nem prazos de entrega da aplicação; ele separa duas histórias da conexão.

A cadeia que mata a espera

No exemplo de RFC 1337, A está em TIME-WAIT e B já está em CLOSED. Um segmento antigo de dados ou ACK chega a A e é considerado inaceitável. A envia um ACK. B não tem uma conexão correspondente e responde com RST. A processa o RST, apaga o bloco de controle e deixa TIME-WAIT antes do prazo.

As regras locais parecem razoáveis, mas a combinação é perigosa. O RST remove a memória destinada a conter os segmentos antigos. O pacote que causar o problema seguinte pode ser outro duplicado, não o RST que apagou o estado.

Evidência, não desaparecimento

A solução F1 de RFC 1337 era ignorar RST em TIME-WAIT. O documento a chamou de solução simples de curto prazo, condicionada à observância do MSL, e pediu testes prolongados em produção. Já RFC 9293 ainda descreve, no processamento básico, a transição para CLOSED e a remoção do bloco quando um RST validado chega em TIME-WAIT. Portanto, F1 não deve ser apresentada como regra incorporada universalmente.

RFC 6191 aborda a alta taxa de novas conexões examinando SYNs recebidos. Marcas de tempo e números de sequência precisam fornecer evidência de uma instância posterior; caso contrário, o SYN é descartado e TIME-WAIT permanece. RFC 9293 só permite a reabertura direta com suas salvaguardas de número de sequência e com o retorno a TIME-WAIT se o SYN for um duplicado antigo; para taxas elevadas, recomenda o algoritmo de marcas de tempo de RFC 6191. Reutilização protegida não é o mesmo que apagar o estado por causa de um reset.

Fontes