Habilitando keepalives TCP em todo o sistema em um sistema Windows

Habilitando keepalives TCP em todo o sistema em um sistema Windows

Posso alterar/adicionar as KeepAliveTimevariá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...)

informação relacionada