1. 程式人生 > 實用技巧 >圖解HTTP《三》:HTTP報文內的HTTP資訊

圖解HTTP《三》:HTTP報文內的HTTP資訊

HTTP報文:

用於HTTP協議互動的資訊被稱為HTTP報文。HTTP報文字身是由多行資料構成的字串文字。HTTP報文大致可分為報文首部和報文主體兩塊,兩者由最初出現的空行來劃分。通常,並不一定要有報文主體。

客戶端的HTTP報文叫做請求報文,伺服器端的叫做響應報文。

在這裡插入圖片描述

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

請求報文和響應報文的首部內容由以下資料組成:請求行(包含用於請求的方法、請求URI和HTTP版本)、狀態行(包含表明響應結果的狀態碼、原因短語和HTTP版本)、首部欄位(包含表示請求和響應的各種條件和屬性的各類首部。一般有4種首部:通用首部、請求首部、響應首部和實體首部)、其他(可能包含HTTPde RFC裡未定義的首部,比如Cookie等)。

在這裡插入圖片描述
在這裡插入圖片描述

編碼提升傳輸速率:

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

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

報文(message):是HTTP通訊中的基本單位,由8位組位元組流組成,通過HTTP通訊傳輸。
實體(entity):作為請求或響應的有效荷載資料被傳輸,其內容由實體首部和實體主體組成。

HTTP報文的主體用於傳輸請求或響應的實體主體。通常,報文主體等於實體主體;只有當傳輸中進行編碼操作時,實體主體的內容發生變化,才會導致它和報文主體產生差異。

壓縮傳輸的內容編碼:

在這裡插入圖片描述

向待發送郵件內增加附件時,為了使郵件容量變小,回先用zip壓縮檔案之後再新增附件傳送。HTTP協議中有一種被稱為內容編碼的功能也能進行類似的操作。

內容編碼指明應用在實體內容上的編碼格式,並保持實體資訊原樣壓縮。內容編碼後的實體由客戶端接收並負責解碼。常用的內容編碼有以下幾種:

  1. gzip;
  2. compress;
  3. deflate;
  4. identity;
分割傳送的分塊傳輸編碼:

在這裡插入圖片描述
在HTTP通訊過程中,請求的編碼實體資源尚未全部傳輸完成之前,瀏覽器無法顯示請求頁面。在傳輸大容量資料時,通過把資料分割成多塊,能夠讓瀏覽器逐步顯示頁面。這種把實體主體分塊的功能稱為分塊傳輸編碼。

分塊傳輸編碼會將主體主體分成多個部分(塊),每一塊都會用十六進位制來標記塊的大小,而實體主體的最後一塊會使用"0"來標記。

使用分塊傳輸編碼的實體主體會由接收的客戶端負責解碼,恢復到編碼前的實體主體。

傳送多種資料的多部分物件集合: