Включение общесистемных TCP-поддержек активности в системе Windows

Включение общесистемных TCP-поддержек активности в системе Windows

Могу ли я изменить/добавить KeepAliveTimeпеременные реестра и связанные с ними, чтобы заставить машину Windows отправлять пакеты TCP keepalive при неактивном соединении?

Я хочу знать, удалось ли кому-нибудь успешно заставить это работать. В частности, когда приложение, простаивающее на TCP-соединении, не делает ничего особенного (setsockopt) для поддержания соединения.

В этом материале Microsoft TechNet подробно описываетсяНастройка общесистемных Keep-AlivesсKeepAliveTimeи связанные с ними переменные реестра.

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime

Кажется, чтоКонфигурация всей системы Linux для использования keep-alive.
Но для этого программы должны использовать setsockopt()и запрашивать поддержку активности (верно?).

Помните, что поддержка keepalive, даже если она настроена в ядре, не является поведением по умолчанию в Linux. Программы должны запрашивать управление keepalive для своих сокетов с помощью интерфейса setsockopt. Существует относительно немного программ, реализующих keepalive...

решение1

Ваша оценка функциональности TCP keepalive в Windows, схожей с Linux, верна.

Вы можете манипулировать параметрами реестра, связанными с сообщениями TCP Keepalive, как вам угодно, но если приложение не setsockopt()запрашивает сообщения Keepalive, по умолчанию они отправляться не будут.

Если вы хотите увидеть, как работают сообщения Keepalive в Windows, и не хотите писать код, отметьте галочкой опцию «Включить TCP Keepalives (SO_KEEPALIVE)» в свойствах «Подключение» вШпатлевкаКлиент SSH/TELNET/и т. д., инициирует соединение, позволяет ему бездействовать и прослушивает трафик. (Это первое приложение, которое, как я могу вспомнить, можно было сознательно настроить на использование SO_KEEPALIVE...)

Связанный контент