【讀書筆記】圖解 HTTP Chapter 03 HTTP 訊息內的 HTTP 訊息

訊息分為兩部分,Header 跟 Body。

HTTP 訊息

訊息分為兩部分,Header 跟 Body。

HTTP 請求訊息與回應訊息結構

客戶端發送為請求訊息,伺服端有回應訊息。

請求訊息的 Header:

  • 請求列:包含請求方法,請求 URI 和 HTTP 協議版本。
  • 請求 Header

回應訊息的 Header:

  • 狀態列:回應結果的狀態碼,原因字串和 HTTP 協議版本。
  • 回應 Header

共同部分:

  • 通用 Header
  • 實體 Header

編碼提升傳輸速率

HTTP 在傳輸資料可以直接傳輸或透過編碼來提升速率,透過編碼可以大量處理請求訪問,但編碼需要電腦來完成,因此會消耗更多效能。

訊息主體和實體主體的差異

  • 訊息:HTTP 通訊的基本單位,以八位元組成。
  • 實體:請求或回應的補充數據,內容是有 Header 和 Body 組成。

壓縮傳輸的內容編碼

在發 email 需要夾帶檔案,我們會將其檔案壓縮。HTTP 協議中有一種被稱為內容編碼的功能,指名應用在實體內容的編碼格式,保持訊息原本的壓縮,伺服端內容編碼後,由客戶端接收並解碼。

常用的內容編碼:

  • gzip
  • compress
  • deflate
  • identity

分割發送的分塊傳輸編碼

HTTP 協議在傳訊息的過程中,請求的資料還沒全部被傳送完,瀏覽器沒辦法顯示請求頁面。在傳送大容量資料的時候會把資料分割成多塊,這樣才能讓瀏覽器逐步顯示,稱之為分塊傳輸編碼。

分塊傳輸編碼會將 Body 分割成多塊,並以十六進制來標記大小,一樣由客戶端進行解碼恢復到原本檔案的樣子。

發送多種資料的多物件集合

發送郵件可以在郵件裡面寫文字和夾帶多個檔案,因為採用了 MIME 機制,允許郵件處理多個不同類型的檔案。比如圖片是使用 ASCII 碼的字串編碼標示,利用 MIME 來描述資料類型,而 MIME 會用一種多部分物件集合(multipart) 方法來容納不同類型的資料。

  • multipart / form-data:在網頁表單文件上傳時使用。
  • multipart / byteranges:狀態碼 206,回應訊息的 Body 包含請求資料的數據區間。

獲取部分內容的範圍請求

以前如果下載一個大容量的圖片,只要被中斷了就要重新載入,為了解決這個問題需要一個可以恢復的機制,這種恢復機制是從上次的中斷點再開始恢復下載。

要實作這個需要指定下載的範圍,指定範圍發送的請求叫做範圍請求。

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

一個網站可能存在很多相同內容的頁面,例如中英文版網站,以瀏覽器默認語言為主,訪問 URI 的網頁會顯示對應語言的頁面,這樣稱之為內容協商。

內容協商機制指客戶端和伺服端就回應的內容進行交涉,然後給客戶端最適合的資料,內容協商會以回應資源的語言、字串等等為判斷基準。

內容協商的技術有三種:

  • 伺服器驅動協商:以請求 header 為參考,篩選最好的內容。
  • 客戶端驅動協商:從瀏覽器顯示的可選項中手動選擇。
  • 透明協商:結合體。

資料來源:《圖解 HTTP》 上野宣 人民郵電出版社
筆記純屬推廣及分享,如有侵權,請告知。
Please advise to remove immediately if any infringement caused.

【讀書筆記】圖解 HTTP Chapter 04 返回結果的 HTTP 狀態碼 【讀書筆記】圖解 HTTP Chapter 02 簡單的 HTTP 協議

評論

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×