Aktivieren systemweiter TCP-Keepalives auf einem Windows-System

Aktivieren systemweiter TCP-Keepalives auf einem Windows-System

KeepAliveTimeKann ich die und zugehörigen Registrierungsvariablen ändern/hinzufügen, damit ein Windows-Computer bei einer inaktiven Verbindung TCP-Keepalive-Pakete sendet?

Ich möchte wissen, ob das bei jemandem erfolgreich funktioniert hat. Insbesondere, wenn die Anwendung, die auf der TCP-Verbindung im Leerlauf ist, nichts Besonderes tut (setsockopt), um die Verbindung aufrechtzuerhalten.

Diese Microsoft TechNet-Details zuSystemweite Keep-Alives konfigurierenmit demKeepAliveTimeund zugehörige Registrierungsvariablen.

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

Es scheint, als ob dieLinux-systemweite Konfiguration für die Verwendung von Keep-Alive.
Dafür müssen die Programme jedoch Keep-Alive verwenden setsockopt()und anfordern (richtig?).

Denken Sie daran, dass Keepalive-Unterstützung, selbst wenn sie im Kernel konfiguriert ist, nicht das Standardverhalten in Linux ist. Programme müssen Keepalive-Steuerung für ihre Sockets über die Schnittstelle setsockopt anfordern. Es gibt relativ wenige Programme, die Keepalive implementieren...

Antwort1

Ihre Einschätzung, dass die TCP-Keepalive-Funktionalität unter Windows der von Linux ähnelt, ist richtig.

Sie können die Registrierungsparameter, die sich auf TCP-Keepalives beziehen, beliebig manipulieren. Sofern die Anwendung jedoch keine setsockopt()Keepalives anfordert, werden standardmäßig keine gesendet.

Wenn Sie Keepalives tatsächlich in Aktion unter Windows sehen möchten und keinen Code schreiben möchten, aktivieren Sie die Option "TCP-Keepalives aktivieren (SO_KEEPALIVE)" in den "Verbindungs"-Eigenschaften imKittSSH/TELNET/usw.-Client, Verbindung herstellen, im Leerlauf warten und den Datenverkehr abhören. (Das ist die erste App, die mir einfiel und von der ich wusste, dass sie bewusst so konfiguriert werden könnte, dass sie SO_KEEPALIVE verwendet ...)

verwandte Informationen