《圖解HTTP》讀書筆記三:HTTP 報文內的 HTTP 資訊
3.1 HTTP 報文
用於 HTTP 協議互動的資訊被稱為 HTTP 報文。請求端(客戶端)的HTTP 報文叫做請求報文,響應端(伺服器端)的叫做響應報文。HTTP 報文字身是由多行(用 CR+LF 作換行符)資料構成的字串文字。
HTTP 報文大致可分為報文首部和報文主體兩塊。兩者由最初出現的空行(CR+LF)來劃分。通常,並不一定要有報文主體。
3.2 請求報文及響應報文的結構
請求報文(上)和響應報文(下)的例項:
請求報文和響應報文的首部內容由以下資料組成。現在出現的各種首
部欄位及狀態碼稍後會進行闡述。
請求行
包含用於請求的方法,請求 URI 和 HTTP 版本。
狀態行
包含表明響應結果的狀態碼,原因短語和 HTTP 版本。
首部欄位
包含表示請求和響應的各種條件和屬性的各類首部。
一般有 4 種首部,分別是:通用首部、請求首部、響應首部和實體首部。
其他
可能包含 HTTP 的 RFC 裡未定義的首部(Cookie 等)。
3.3.3 分割傳送的分塊傳輸編碼
在 HTTP 通訊過程中,請求的編碼實體資源尚未全部傳輸完成之前,瀏覽器無法顯示請求頁面。在傳輸大容量資料時,通過把資料分割成多塊,能夠讓瀏覽器逐步顯示頁面。
這種把實體主體分塊的功能稱為分塊傳輸編碼(Chunked Transfer Coding)。
分塊傳輸編碼:
分塊傳輸編碼會將實體主體分成多個部分(塊)。每一塊都會用十六進位制來標記塊的大小,而實體主體的最後一塊會使用“0(CR+LF)”來標記。
使用分塊傳輸編碼的實體主體會由接收的客戶端負責解碼,恢復到編碼前的實體主體。
HTTP/1.1 中存在一種稱為傳輸編碼(Transfer Coding)的機制,它可以在通訊時按某種編碼方式傳輸,但只定義作用於分塊傳輸編碼中。
3.4 傳送多種資料的多部分物件集合
傳送郵件時,我們可以在郵件裡寫入文字並新增多份附件。這是因為採用了MIME(Multipurpose Internet Mail Extensions,多用途因特網郵件擴充套件)機制,它允許郵件處理文字、圖片、視訊等多個不同型別的資料。例如,圖片等二進位制資料以 ASCII 碼字串編碼的方式指明,就是利用 MIME 來描述標記資料型別。而在 MIME 擴充套件中會使用一種稱為多部分物件集合(Multipart)的方法,來容納多份不同型別的資料。
相應地,HTTP 協議中也採納了多部分物件集合,傳送的一份報文主體內可含有多型別實體。通常是在圖片或文字檔案等上傳時使用。
多部分物件集合包含的物件如下:
- multipart/form-data
在 Web 表單檔案上傳時使用。 - multipart/byteranges
狀態碼 206(Partial Content,部分內容)響應報文包含了多個範圍的內容時使用。 - multipart/form-data
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="field1"
Joe Blow
--AaB03x
Content-Disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain
...(file1.txt的資料)...
--AaB03x--
- multipart/byteranges
HTTP/1.1 206 Partial Content
Date: Fri, 13 Jul 2012 02:45:26 GMT
Last-Modified: Fri, 31 Aug 2007 02:02:20 GMT
Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 500-999/8000
...(範圍指定的資料)...
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 7000-7999/8000
...(範圍指定的資料)...
--THIS_STRING_SEPARATES--
在 HTTP 報文中使用多部分物件集合時,需要在首部欄位里加上Content-type。
使用 boundary 字串來劃分多部分物件集合指明的各類實體。在boundary 字串指定的各個實體的起始行之前插入“–”標記(例如:–AaB03x、–THIS_STRING_SEPARATES),而在多部分物件集合對
應的字串的最後插入“–”標記(例如:–AaB03x–、–THIS_STRING_SEPARATES–)作為結束。
多部分物件集合的每個部分型別中,都可以含有首部欄位。另外,可以在某個部分中巢狀使用多部分物件集合。
3.5 獲取部分內容的範圍請求
以前,使用者不能使用現在這種高速的頻寬訪問網際網路,當時,下載一個尺寸稍大的圖片或檔案就已經很吃力了。如果下載過程中遇到網路中斷的情況,那就必須重頭開始。為了解決上述問題,需要一種可恢復的機制。所謂恢復是指能從之前下載中斷處恢復下載。
要實現該功能需要指定下載的實體範圍。像這樣,指定範圍傳送的請求叫做範圍請求(Range Request)。
《圖解HTTP》下載地址:
http://download.csdn.net/download/xunzaosiyecao/10252084
個人微信公眾號:
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- 03 前端HTTP協議(圖解HTTP) 之 HTTP報文內的HTTP資訊前端HTTP協議圖解
- 《圖解 HTTP》 讀書筆記圖解HTTP筆記
- HTTP 讀書筆記HTTP筆記
- 《圖解HTTP》閱讀筆記(上)圖解HTTP筆記
- 《圖解HTTP》閱讀筆記(下)圖解HTTP筆記
- 《圖解http》筆記圖解HTTP筆記
- 終、《圖解HTTP》讀書筆記 - 彙總篇(總結)圖解HTTP筆記
- 讀《圖解HTTP》圖解HTTP
- 全面解讀Http(HTTP內容分發)HTTP
- 《HTTP/2 基礎教程》 讀書筆記HTTP筆記
- HTTP讀書筆記——瞭解Web及網路基礎HTTP筆記Web
- 精讀《圖解HTTP》圖解HTTP
- 《圖解http》閱讀筆記--web及網路基礎圖解HTTP筆記Web
- 圖解HTTP,閱讀分享圖解HTTP
- HTTP/1.1報文詳解HTTP
- HTTP協議圖文簡述--HTTP/HTTPS/HTTP2HTTP協議
- HTTP協議-HTTP響應報文HTTP協議
- 一文讀懂 HTTP/1HTTP/2HTTP/3HTTP
- http報文簡單記錄HTTP
- HTTP 報文結構和內容HTTP
- 05 前端HTTP協議(圖解HTTP) 之 HTTP首部前端HTTP協議圖解
- 《圖解HTTP》——簡單的HTTP協議圖解HTTP協議
- 一文讀懂HTTP/2及HTTP/3特性HTTP
- 一文讀懂HTTP/2 及 HTTP/3特性HTTP
- 解讀HTTP/3HTTP
- 02 前端HTTP協議(圖解HTTP) 之 簡單的HTTP協議前端HTTP協議圖解
- 04 前端HTTP協議(圖解HTTP) 之 HTTP狀態碼前端HTTP協議圖解
- HTTP請求報文HTTP
- HTTP報文 概覽HTTP
- 圖解 HTTP 的快取機制 | 實用 HTTP圖解HTTP快取
- HTTP從入門到入土(5)——HTTP報文格式HTTP
- 圖解HTTP(1)圖解HTTP
- 圖解HTTP(2)圖解HTTP
- 圖解HTTP(4)圖解HTTP
- http學習筆記HTTP筆記
- 筆記:網路基礎TCP、HTTP、HTTPS(HTTP+SSL)筆記TCPHTTP
- 圖解HTTP《四》:返回結果的HTTP狀態碼圖解HTTP
- HTTP圖解學習記錄(七)HTTP圖解
- 圖解HTTP快取圖解HTTP快取