解HTTP讀書筆記(三)-------HTTP 報文內的 HTTP 信息

HTTP 報文

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

請求報文及響應報文的結構在這裏插入圖片描述

一般有 4 種首部,分別是:通用首部、請求首部、響應首部和實體首部。
其他可能包含 HTTP 的 RFC 裏未定義的首部(Cookie 等)。

編碼提升傳輸速率

HTTP可以在傳輸過程中通過編碼提高傳輸效率,但是,編碼的操作需要計算機來完成,因此會消耗更多的 CPU 等資源。

報文(message)是 HTTP 通信中的基本單位,由 8 位組字節流(octet sequence,其中 octet 爲 8 個比特)組成,通過 HTTP 通信傳輸。
實體(entity)作爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。

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

壓縮傳輸的內容編碼

內容編碼指明應用在實體內容上的編碼格式,並保持實體信息原樣壓縮。內容編碼後的實體由客戶端接收並負責解碼。
在這裏插入圖片描述
內容編碼的格式:
gzip(GNU zip)、compress(UNIX 系統的標準壓縮)、deflate(zlib)、identity(不進行編碼)

分割發送的分塊傳輸編碼

在這裏插入圖片描述

使用分塊傳輸編碼的實體主體會由接收的客戶端負責解碼,恢復到編
碼前的實體主體。
HTTP/1.1 中存在一種稱爲傳輸編碼(Transfer Coding)的機制,它可
以在通信時按某種編碼方式傳輸,但只定義作用於分塊傳輸編碼中。
HTTP 協議中也採納了多部分對象集合,發送的一份報文主體內可含有多類型實體。通常是在圖片或文本文件等上傳時使用。
Content-type:
multipart/form-data----在 Web 表單文件上傳時使用。
multipart/byteranges—狀態碼 206(Partial Content,部分內容)響應報文包含了多個範圍的內容時使用。

獲取部分內容的範圍請求

即可以通過bytes來獲取資源的指定範圍
如果服務器端無法響應範圍請求,則會返回狀態碼 200 OK 和完整的
實體內容。
在這裏插入圖片描述

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

多語言翻譯的時候可以用到
如下三種技術:
服務器驅動協商(Server-driven Negotiation)
由請求的首部字段爲參考,服務器端進行自動處理。但是瀏覽器發出的不一定能篩選的最合適的內容。
客戶端驅動協商(Agent-driven Negotiation)
例如根據OS 的類型或瀏覽器類型等,客戶端進行判斷,返回pc頁面或者手機版頁面
透明協商(Transparent Negotiation)
服務器驅動和客戶端驅動的結合體,是由服務器端和客戶端各自進
行內容協商的一種方法。

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