讀書筆記《圖解HTTP》——HTTP報文內的HTTP信息

1.HTTP報文

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

HTTP報文大體可分爲報文首部和報文主體兩塊。一般,不必定要有報文主體。、瀏覽器

  • 報文首部:服務器端或客戶端需處理的請求或響應的內容及屬性。
  • 報文主體:應被髮送的數據。

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

請求報文和響應報文的首部內容由一下數據組成。服務器

  • 請求行:請求方法、URL和HTTP版本。
  • 狀態行:響應結果的狀態碼、緣由短語和HTTP版本。
  • 首部字段:請求和響應的各類條件和屬性的各種首部(通用首部、請求首部、響應首部和實體首部)。
  • 其餘:RFC裏未定義的首部Cookie等。

3.編碼提高傳輸速率

HTTP在傳輸過程當中能夠按照原貌傳輸,也能夠在傳輸過程當中經過編碼來提高傳輸速率,能有效地處理大量的訪問請求,可是編碼會消耗更多的CPU資源。ide

3.1報文主體和實體主體的差別

  • 報文:HTTP通訊的基本單位,由8位組字節流組成。
  • 實體:做爲請求或響應的有效載荷數據被傳輸,由實體首部和實體主體組成。

HTTP報文的主體用於傳輸請求或響應的實體主體。一般,報文主體等於實體主體。只有當傳輸中進行編碼操做時,實體內容發生變化,才致使二者產生差別。編碼

3.2壓縮傳輸的內容編碼

內容編碼指明應用在實體內容上的編碼格式,並保持實體信息原樣壓縮。內容編碼後的實體由客戶端接收並負責解碼。 常見的內容編碼:gzip、compress、deflate、identity。orm

3.3分割發送的分塊傳輸編碼

在傳輸大容量數據時,經過把數據分割成多塊,可以讓瀏覽器逐步顯示頁面。這種把實體主體分塊的功能稱爲分塊傳輸編碼。對象

4.發送多種數據的多部分對象集合

HTTP協議中也採納了對部分對象集合,發送的一份報文主體內可含有多類型實體。一般是在圖片上或文本文件等上傳時使用。須要在首部字段加上Content-type。圖片

  • multipart/form-data:表單文件上傳時使用
  • multipart/byteranges:狀態碼206響應報文包含了多個範圍的內容時使用。

5.獲取部份內容的範圍請求

從以前下載中斷處恢復下載。 要實現該功能,須要指定下載的實體範圍。指定範圍發送的請求叫作範圍請求。 執行範圍請求時,會用到首部字段Range來指定資源的byte範圍。ip

  • 5001~10000字節 Range:byte=5001-10000
  • 從5001字節以後所有的 Range:byte=5001-
  • 從一開始3000字節和5000~7000字節的多重範圍 Range:bytes=0-3000,5000-7000

針對範圍請求,響應會返回206.多重範圍請求,響應會在首部字段Content-type標明multipart/byteranges後返回響應報文。 若是服務端沒法響應範圍請求,則返回200 OK 和完整的實體內容。資源

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

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

內容協商機制是指客戶端和服務端就響應的資源內容進行交涉,而後提供給客戶端最爲適合的資源。以語言、字符集、編碼方式等爲基準判斷響應的資源。

某些首部字段就是判斷的基準: Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。

內容協商技術有如下類型: 服務器驅動協商、客戶端驅動協商、透明協商。

相關文章
相關標籤/搜索