HTTP Keep Alive如何實現?它是否在內部使用TCP Keep Alive?如果不是,服務器如何檢測客戶端是否已經死亡或活着?HTTP Keep Alive和TCP保持活動狀態
回答
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完全沒有關係。
我知道這是一個老問題,但仍:
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連接發送請求。
http保持活動只是讓TCP生活更長,以便傳輸多個http請求。保持活動超時後,tcp連接將被關閉。 tcp keep-alive只是一個保持tcp連接的機制,或者檢查tcp連接沒有關閉
- 1. HTTP保持活動狀態超時
- 2. 有關TCP連接和TCP的查詢保持活動狀態?
- 3. 如何激活保持活動狀態,http://www.webpagetest.org表示保持活動狀態未激活
- 4. Tomcat,HTTP Keep-Alive和Java的HttpsUrlConnection
- 5. TCP Keep Alive連接託管在WCF中
- 6. 讓Curl和PHP保持活動狀態
- 7. 什麼時候TCP套接字需要保持活動狀態?
- 8. TCP Keep-Alive是雙向的嗎?
- 9. TCP Keep-Alive PDO連接參數
- 10. Android保持活動狀態
- 11. Keep-Alive Dropwizard
- 12. Adobe Air是否支持KEEP ALIVE /持久HTTP連接
- 13. Apache HttpClient 4.3不保持活動狀態
- 14. REST Web服務和Keep-Alive
- 15. 上保持活動狀態的HTTP標頭
- 16. EventMachine :: HttpRequest和Keep-alive連接
- 17. 保持TCP連接保持活動狀態並僅循環GET命令
- 18. 配置保持活動狀態始終保持連接狀態
- 19. 爲了支持CoAP的Keep-alive功能
- 20. 如何使Flask /保持Ajax HTTP連接處於活動狀態?
- 21. Http keep-alive conncetion - 響應分隔符
- 22. HTTP Keep-Alive每1秒呼叫<1KB
- 23. netty client + keep-alive = true
- 24. Go如何處理HTTP保持活動狀態?
- 25. 爲什麼tcp-keep-alive會影響tcp-close進去?
- 26. jQuery保持活動狀態與動作
- 27. 使連接保持活動狀態
- 28. HTTP Keep-Alive - 如果保持輪詢 - 是否允許連接的最大值?
- 29. 如何結合使用cytoscape.js和vue.js動態組件的keep-alive?
- 30. 保持活動狀態的Python流http客戶端