HTTP詳解(三)——HTTP報文內的HTTP信息

轉載自個人博客0pt1mus

HTTP通信過程包括從客戶端發往服務器端的請求及從服務器端返回客戶端的響應。

HTTP報文

用於HTTP協議交互的信息被稱爲HTTP報文。請求端(客戶端)的HTTP報文叫做請求報文,響應端(服務器端)的叫做響應報文。

HTTP報文本身是由多行(用CR+LF作換行符)數據構成的字符串文本。

HTTP報文大致可分爲報文首部和報文主體兩塊。兩者由最初出現的空行(CR+LF)來劃分。通常,並不一定要有報文主體。

請求報文及響應報文的結構

編碼提升傳輸速率

HTTP在傳輸數據時可以按照數據原貌直接傳輸,但也可以在傳輸過程中通過編碼提升傳輸速率。通過在傳輸時編碼,能有效地處理大量的訪問請求。但是,編碼的操作需要計算機來完成,因此會消耗更多的CPU資源。

報文主體和實體主體的差異

  • 報文(message)

    是HTTP通信中的基本單位,由8位組字節流(octet sequence,其中octet爲8個比特)組成,通過HTTP通信傳輸。

  • 實體(entity)

    作爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。

HTTP報文的主體用於傳輸請求或響應的實體主體。

通常,報文主體等於實體主體。只有當傳輸中進行編碼操作時,實體主體的內容發生變化,猜到是它和報文主體產生差異。

我們可以理解爲實體是想要傳輸的信息,實體通過報文的形式來進行傳輸。

獲取部分內容的範圍請求

下載中間暫停後,繼續下載不用重新開始的問題,叫做範圍請求(Range Request)。

針對範圍請求,響應會返回狀態碼爲206 Partial Content的響應報文。另外,對於多重範圍的範圍請求,響應會在首部字段Content-Type標明multipart/byteranges後返回響應報文。

如果服務器端無法響應範圍請求,則會返回狀態碼200 OK和完整的實體內容。

內容協商返回最合適的內容

當瀏覽器的默認語言爲英語或中文,訪問相同URI的Web頁面時,則會顯示對應的英語版或中文版的Web頁面。這樣的機制稱爲內容協商(Content Negotiation)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章