天天看點

總結:TCP/IP 詳解(卷3:TCP 事務協定、HTTP、NNTP 和 UNIX 域協定)--第十三章 HTTP:超文本傳送協定第十三章  HTTP:超文本傳送協定

第十三章  HTTP:超文本傳送協定

HTTP 是一個簡單的協定。客戶程式與伺服器建立一個 TCP 連接配接,發送請求并讀回伺服器的響應。伺服器通過關閉連接配接來訓示它的響應結束。伺服器所傳回的檔案通常含有指針(超文本連結)指向一些位于其他伺服器的檔案。使用者可以輕松地跟随這些連結從一個伺服器到另外一個伺服器。

客戶請求是簡單的 ASCII 文本,伺服器的響應也是以 ASCII 文本開始(首部),後面跟着資料(可以是 ASCII 或二進制資料)。客戶程式軟體(浏覽器)分析伺服器的響應,并把它格式化輸出,同時以高亮顯示指向其他文檔的連結。

通過 HTTP 連接配接傳輸的資料量較小。客戶請求封包長度,為幾百位元組,伺服器響應封包的典型值也在幾百位元組至 10 000位元組間。因為一些大文檔(如圖像或大的 PostScript 檔案)會将伺服器響應封包長度的平均值拉大,是以 HTTP 統計通常報告中間值。許多研究表明,伺服器響應封包長度的中間值小于 3000 位元組。

HTTP 帶來的最大的性能問題是每個檔案使用一條 TCP 連接配接。13.4節中提到的例子,為了打開一個首頁,客戶程式建立了 8 條 TCP 連接配接。當客戶請求封包的長度超過伺服器通告的 MSS 時,緩慢的建立使每一個 TCP 連接配接增加了額外的時延,在一個繁忙的伺服器上可以看到很多這種待終止的連接配接。

我們比較一下幾乎與 HTTP 協定同時開發的 Gopher 協定。Gopher 協定的文檔号是 RFC 1436[Anklesaria et al. 1993]。從網絡的觀點來看,HTTP 與 Gopher 非常相似。客戶程式打開一條與伺服器的連接配接(Gopher 使用 70 号端口),并發起請求。伺服器傳回帶有應答的響應,并關閉連接配接。它們的主要差別在于伺服器送回給客戶的封包的内容。盡管 Gopher 協定允許伺服器傳回非文本資訊,如 GIF 檔案,但大多數 Gopher 客戶程式是為 ASCII 終端設計的。是以 Gopher 伺服器傳回的文檔,大多數是 ASCII 文本檔案。因為 HTTP 協定有明顯的優勢,是以作者寫作本書時,也有很多 Web 浏覽器能識别 Gopher 協定,并與這些 Gopher 伺服器通信。

希望我的總結可以幫助大家,感謝閱讀我的部落格!