在 Windows 系統上啟用系統範圍的 TCP keepalive

在 Windows 系統上啟用系統範圍的 TCP keepalive

我可以更改/新增KeepAliveTime相關登錄變數以使 Windows 電腦在空閒連線上傳送 TCP keepalive 封包嗎?

我想知道是否有人成功地完成了這項工作。具體來說,當 TCP 連線上的應用程式空閒時,沒有執行任何特定操作 (setsockopt) 來保持連線活動。

此 Microsoft TechNet 詳細介紹了配置系統範圍的維持活動保持活動時間以及相關的註冊表變數。

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

似乎是使用 keep-alive 的 Linux 系統範圍配置
但是,這需要程式使用setsockopt()並請求保持活動狀態(對嗎?)。

請記住,即使在核心中配置了 keepalive 支持,也不是 Linux 中的預設行為。程式必須使用setsockopt 介面請求對其套接字進行保活控制。實作 keepalive 的程式相對較少...

答案1

您對 Windows 中的 TCP keepalive 功能與 Linux 類似的評估是正確的。

您可以隨意操作與 TCP keepalive 相關的註冊表參數,但除非應用程式用於setsockopt()請求 keepalive,否則預設不會發送任何內容。

如果您想實際查看 Windows 上的 keepalives 運行情況並且不想編寫程式碼,請在“連線”屬性中勾選“啟用 TCP keepalives (SO_KEEPALIVE)”油灰SSH/TELNET/etc 用戶端,啟動連接,允許其閒置,並嗅探流量。 (這是我能想到的第一個可以有意識地配置為使用 SO_KEEPALIVE 的應用程式...)

相關內容