2010-06-19 79 views
0

讓我試着澄清一下我的問題,我不知道該如何標題。這純粹是出於我的好奇心。中斷HTTP流時會發生什麼?

在通過互聯網連接和瀏覽器傳輸的原始字節之間,有許多圖層。每層爲數據添加更多結構,最終以HTML標記結束。我假定HTML數據的最終長度是未知的,字節正在流入,直到文檔完成。如果這個假設是錯誤的,請糾正我。

你變得急躁,你在瀏覽器中點擊「停止」。這些層次會發生什麼?套接字是否在客戶端關閉,並允許異常情況通過圖層上升?在這個鏈條的至少一個點上,必須有一個阻塞操作,它正在等待它下面的層,並且不再阻塞,那麼這是如何發生的?

如果不明確,我很抱歉。我在整理照片時遇到了麻煩。

回答

0

由於HTTP通過TCP進行操作,因此應用程序知道連接何時終止,並可能呈現其接收的內容。

當然,您可能總是不正確地終止連接,例如通過物理刪除將您連接到Internet的電纜。在這種情況下,任何TCP應用程序都會等待幾秒鐘,然後聲明連接已超時 - 對於瀏覽器,通常不顯示任何內容。

至於處理異常,取決於應用程序。從套接字讀取被阻塞,當它完成時,應用程序應該檢查它已經收到了什麼,並且沒有發生錯誤。

+0

HTTP 1.0肯定是有內容長度標頭(RFC 1945第10.4節)。它沒有的是默認的持久連接(例如'Connection:keep-alive'頭部不被假設)像HTTP 1.1一樣。 HTTP 1.0回覆的默認行爲是在發送數據後關閉套接字,除非客戶端在其請求中明確要求持久連接。 – 2010-06-23 22:43:44

+0

哦,對不起,我沒記錯。 – Mewp 2010-06-23 23:01:14