Назад | Перейти на главную страницу

Включение общесистемных сообщений поддержки активности 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. Программы должны запрашивать контроль активности для своих сокетов с помощью интерфейса setsockopt. Существует относительно немного программ, реализующих поддержку активности ...

Ваша оценка функции поддержки активности TCP в Windows, аналогичной Linux, верна.

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

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