2012-02-17 63 views

回答

15

HTTP Keep-Alive是HTTP協議的一項功能。實現Keep-Alive功能的Web服務器必須定期檢查連接/套接字(對於傳入的HTTP請求),因爲它發送了最後一個HTTP響應(如果存在相應的HTTP請求)。如果在配置的保持活動時間(秒)內沒有收到HTTP請求,則Web服務器關閉連接。 Web Server完成「關閉」後,不會再有HTTP請求。另一方面,TCP Keep-Alive由TCP層中的OS管理。 HTTP Keep-Alive和TCP Keep-Alive完全沒有關係。

36

我知道這是一個老問題,但仍:

  • HTTP保持活動是一項功能,允許HTTP客戶端(通常是瀏覽器)和服務器(Web服務器),以在發送多個請求/響應對相同的TCP連接。這減少了第二,第三,... HTTP請求的延遲,減少了網絡流量等。

  • TCP keepalive是一個完全不同的野獸。它通過發送小包來保持TCP連接打開。另外,當發送數據包時,這將作爲一項檢查,以便在連接斷開後立即通知發送方(注意,除非我們嘗試通過TCP連接進行通信,否則我們不知道它是否正常)。

要獲得關於HTTP保持活動的問題:

How is HTTP Keep Alive implemented? 

簡單地說,HTTP服務器不關閉每個響應後TCP連接,而是等待一些時間,如果其他一些HTTP請求也會過來。經過一段時間後,無論如何都會關閉它。

Does it internally use TCP Keep Alive? 

沒有,至少我看到它沒有任何意義。

If not, how does the server detect if the client is dead or alive? 

它沒有 - 它不需要。如果客戶端發送請求,它會得到響應。如果客戶端不通過TCP連接發送任何東西(可能是因爲連接已經中斷),那麼超時將關閉連接;客戶端當然會注意到這一點,並會在需要時通過另一個TCP連接發送請求。

-2

http保持活動只是讓TCP生活更長,以便傳輸多個http請求。保持活動超時後,tcp連接將被關閉。 tcp keep-alive只是一個保持tcp連接的機制,或者檢查tcp連接沒有關閉