2014-12-10 123 views
0

HTTP:The definitive guide如何HTTP客戶端檢測到Web服務器崩潰

但是,如果沒有內容長度,客戶端不能 連接成功之間密切的消息,並連接 接近年底由於服務器崩潰區分消息的中間。

我們假設爲此目的,「服務器崩潰」意味着服務器的硬件或操作系統崩潰,而不關閉TCP連接或可能的鏈接中斷。

如果Web服務器崩潰而沒有關閉TCP連接,客戶端如何檢測連接「已關閉」?

據我所知,如果沒有發送FIN段,客戶端將繼續等待數據,除非有定時器或它試圖發送一些數據(失敗時檢測到TCP連接關閉)。

這是如何在HTTP中完成的?

回答

0

如果Web服務器崩潰而未關閉TCP連接,客戶端如何檢測連接「已關閉」?由於關閉將由內核完成,這將意味着整個系統崩潰或連接在其他地方斷開(路由器崩潰,服務器端電源中斷或類似情況)。

如果您將數據發送到服務器並且沒有收到任何有用的響應,您只能檢測到此情況。我知道,如果沒有發送FIN段,客戶端將一直等待數據,除非有一個定時器或它試圖發送一些數據(失敗時檢測到TCP連接關閉)。

這是如何在HTTP中完成的?

HTTP使用TCP作爲底層協議,所以如果TCP檢測到連接關閉HTTP也會。另外,HTTP可以在大多數情況下檢測響應是否完成,通過使用來自Content-length頭部的信息或具有分塊傳輸編碼的類似信息。在少數情況下,響應的結束僅通過連接指示,HTTP只能依靠TCP來檢測問題。到目前爲止,理論,但實際上大多數瀏覽器只是忽略不完整的迴應,並顯示儘可能多的。

相關問題