Resumo

  • Uma sonda TCP Keep-Alive pede que um par ocioso responda com base em seu estado de sequência; ela não verifica a saúde geral da aplicação.
  • Segmentos formados apenas por ACK não são transmitidos de forma confiável, portanto uma sonda sem resposta não basta para concluir que a conexão falhou.

Quando nenhum segmento chega por um intervalo longo e não há dados novos ou não confirmados para enviar, uma conexão TCP pode permanecer quieta. Isso pode significar que a aplicação está saudável e não tem nada a transmitir, ou que o caminho ou o par deixaram de estar acessíveis. O Keep-Alive atua nesse limite para obter mais uma observação do estado de sequência já estabelecido.

O mecanismo não substitui a retransmissão. Enquanto houver dados enviados ainda sem confirmação, o TCP já usa retransmissão e User Timeout para decidir se a entrega pode continuar. O Keep-Alive só começa quando a conexão está ociosa nos demais aspectos.

A RFC 1122 descreve uma sonda cujo número de sequência geralmente é SND.NXT-1, imediatamente antes do próximo octeto que seria usado para dados novos. Um par que ainda mantenha seu estado TCP pode responder com base nele. A sonda deveria ser enviada sem dados; para implementações defeituosas que não tratam corretamente essa forma, pode haver uma forma de compatibilidade com um octeto. Trata-se de uma troca de controle do transporte, não de uma mensagem comum da aplicação.

O suporte a Keep-Alive é opcional. Se implementado, a aplicação deve poder ativá-lo ou desativá-lo por conexão, e o padrão deve ser desligado. A sonda só pode ser enviada quando não houver dados enviados pendentes e nenhum dado ou reconhecimento tiver chegado durante o intervalo configurado. O intervalo precisa ser configurável, com valor padrão normativo de pelo menos duas horas.

A RFC 9293 mantém a limitação central da RFC 1122: o TCP não entrega de modo confiável segmentos que contêm apenas ACK. O par pode receber a sonda e gerar o reconhecimento esperado, mas esse reconhecimento pode desaparecer no caminho. Assim, a ausência de resposta a uma sonda específica não é, sozinha, prova de falha. A consolidação das regras também não transformou o mecanismo em um serviço universal de disponibilidade.

Fontes