2017-05-29 132 views
1

我有一個關於連接和TCP以下查詢永葆:有關TCP連接和TCP的查詢保持活動狀態?

  1. 是保持TCP強制TCP連接的?
  2. 保持活動的持續時間是固定的還是可配置的?
  3. 假設保持活動間隔每15秒一次,那麼保持活動狀態總是每15秒發送一次,或者僅在15秒內沒有發送應用程序數據時才發送?
  4. 服務器(通過TCP與客戶端連接)如何確定與客戶端的連接是否完好 - 是否可以使用TCP keepalive完成 - 在這種情況下,它是否需要發送活着?另外,如果keepalive未啓用,那麼除了發送應用程序級別探測器之外,是否還有任何方法檢查連接狀態?

回答

1

對於TCP連接,TCP保持活動狀態是強制性的嗎?

不,它是可選的,並且通過RFC 1122-3它必須在默認情況下關閉。

保持活動的持續時間是固定的還是可配置的?

默認情況下至少需要兩個小時。它通常是可配置的,但通常只在全球範圍內適用於所有套接字。

假設keep alive時間間隔是每15秒一次,那麼保持活動狀態總是每15秒發送一次,或者僅在15秒內沒有發送應用程序數據時才發送?

我不確定這是否已定義,但很難看出它對您有什麼影響。

服務器(與客戶端通過TCP連接)如何能夠計算出,如果與客戶端的連接是否完好與否

通過觀察它是否得到流上接收或ECONNRESET結束,或連接超時。

是否可以使用TCP keepalive來完成 - 在這種情況下,它會是需要發送keepalive的服務器嗎?

需要找出的一面應該是發送keepalives的一面。如果兩者兼而有之。

另外,如果keepalive沒有啓用,那麼除了發送應用程序級別探測器之外,是否有任何方法檢查連接狀態?

參見上文。