Posso alterar/adicionar as KeepAliveTime
variáveis de registro relacionadas para fazer com que uma máquina Windows envie pacotes TCP keep-alive em uma conexão inativa?
Quero saber se alguém conseguiu fazer isso funcionar com sucesso. Especificamente, quando o aplicativo ocioso na conexão TCP não está fazendo nada específico (setsockopt) para manter a conexão ativa.
Este Microsoft TechNet detalhaConfigurando Keep-Alives em todo o sistemacom oKeepAliveTimee variáveis de registro relacionadas.
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parâmetros\KeepAliveTime
Parece que oConfiguração de todo o sistema Linux para usar keep-alive.
Mas, isso requer que os programas usem setsockopt()
e solicitem keep-alive (certo?).
Lembre-se de que o suporte keepalive, mesmo que configurado no kernel, não é o comportamento padrão no Linux. Os programas devem solicitar controle de manutenção de atividade para seus soquetes usando a interface setsockopt. Existem relativamente poucos programas implementando keepalive...
Responder1
Sua avaliação da funcionalidade de manutenção de atividade do TCP no Windows como o Linux está correta.
Você pode manipular os parâmetros de registro relacionados às manutenções de atividade TCP o quanto quiser, mas a menos que o aplicativo use setsockopt()
para solicitar manutenções de atividade, nenhuma será enviada por padrão.
Se você quiser realmente ver os keepalives em ação no Windows e não quiser escrever código, marque "Ativar keepalives TCP (SO_KEEPALIVE)" nas propriedades "Conexão" na seçãoMassaCliente SSH/TELNET/etc, inicie uma conexão, deixe-a ficar ociosa e detecte o tráfego. (É o primeiro aplicativo que pensei que poderia ser configurado conscientemente para usar SO_KEEPALIVE...)