《HTTP權威指南》讀書筆記(6) 實體和編碼

2021-06-28 16:01:33 字數 2043 閱讀 4544

一、實體首部

http實體首部描述了http報名的內容。http/1.1版定義了以下10個基本字型首部字段。

二、內容編碼

內容編碼的過程如下:

1、**伺服器生成原始響應報文,其中有原始的content-type和content-length首部

2、內容編碼伺服器(也可能就是原始的伺服器或下行的**)建立編碼後的報文。編碼後的報文有同樣的content-type,但content-length可能不同(例如主體被壓縮)。內容編碼伺服器在編碼後的報文中增加content-encoding首部,這樣接收的應用程式就可以進行解碼了。

3、接收程式得到編碼後的報文,進行解碼,獲得原始報文。

常用的內容編碼型別有:gzip(效率最高)、compress、deflate、identity(前三者是無失真壓縮,不會導致資訊損失)

同時,為了避免伺服器使用客戶端不支援的編碼方式,客戶端就把自己支援的內容編碼方式列表放在請求的accept-encoding首部裡發出去。如果客戶端http請求沒有accept-encoding首部,那麼伺服器可以假設客戶端可以接受任何編碼方式(等價於傳送accept-encoding:*)

客戶端可以給每種編碼附帶q(質量)值引數來說明編碼的優先順序。q值範圍從0.0到1.0,0.1說明客戶端不想接受所說明的編碼,1.0則表示最希望使用的編碼。*表示任何其它方法。

三、傳輸編碼和分塊編碼

http協議中只定義了下面兩個首部來描述和控制傳輸編碼。

transfer-encoding:告知接收方為了可靠地傳輸報文,已經對其進行了何種編碼。

te:用在請求首部中,告知伺服器可以使用哪些傳輸編碼擴充套件。

最新的http規範只定義了一種傳輸編碼:分塊編碼

分塊編碼

分塊編碼把報文分割為若干個大小已知的塊。塊之間是緊挨著傳送的,這樣就不需要在傳送之前知道整個報文的大小了。它是一種傳輸編碼,因此是報文的屬性,而不是文體的屬性。

分塊報文的拖掛:拖掛中可以包含附帶的首部字段,它們的值在報文開始的時候可能是無法確定的(例如必須要先生成主體的內容)。content-md5首部就是乙個可以在拖掛中傳送的首部,因為在文件生成之前,很難算出它的md5。

四、範圍請求

並不是所有的伺服器都接受範圍請求,但很多伺服器可以。伺服器可以通過在響應中包含accept-ranges首部的形式向客戶端說明可以接受的範圍請求,這個首部通常以位元組計算的。

四、差異編碼

如果伺服器有頁面更新的例項,當客戶端請求該過期的副本時,哪怕頁面上只有一小部分發生了改變,也要把完整的新頁面例項發給客戶端。若改變的地方比較少,與其傳送完整的新頁面給客戶端,客戶端更願意伺服器只傳送頁面發生改變的部分,這樣就可以更快地得到最新的頁面。差異編碼是http協議的乙個擴充套件,它通過交換物件改變的部分而不是完整的物件來優化傳輸效能。

如果客戶端想告訴伺服器它願意接受該頁面的差異,只要傳送a-im首部就可以了。a-im是accept-instance-manipulation(接受例項操控)的縮寫。服務端傳送回下面這些內容:乙個特殊的響應**--226 im used,告知客戶端它正在傳送的是所請求物件的例項操控,而不是那個完整的物件自身;乙個im首部,說明用於計算差異的演算法,新的etag首部和delta-base首部,說明用於計算差異的基線文件的etag,整個過程由例項操控、差異生成器、差異應用器共同完成。

etag:由伺服器在響應中傳送,客戶端在後繼請求中可以使用它。

if-none-match:客戶端傳送請求首部,當且僅當客戶端的文件版本與伺服器不同時,才向伺服器請求該文件。

a-im:客戶端請求首部,說明可以接受的例項操控型別

im:伺服器響應首部,說明作用在響應上的例項操控的型別。當響應**是226 im used時,會傳送這個首部。

delta-base:伺服器響應首部,說明用於計算差異的基線文件的etag值(應該與客戶端請求中的if-none-match首部裡的etag相同)

Http權威指南讀書筆記

1.1 http使用的是可靠的資料傳輸協議。1.3 型別 mime型別 multipurpose internet mail extension多用途網際網路郵件擴充套件 是為了解決在不同的電子郵件系統之間搬移報文時存在的問題。mime在電子郵件系統中工作得非常好,因此http也採納了它,用它來描述...

《HTTP權威指南》讀書筆記(二)

get 向伺服器請求資源 post 向伺服器請求資源並提交資料 head 請求伺服器,但僅返回首部,不包含主體內容 put 向伺服器寫入文件 向伺服器的資源中儲存資料 options 詢問伺服器支援的方法有哪些 trace 跟蹤請求,環迴 診斷 最後一站的伺服器會返回一條trace響應,包含伺服器接...

《HTTP權威指南》讀書筆記 快取

web快取是可以自動儲存常見文件副本的http裝置 包括瀏覽器?減少冗餘資料傳輸 緩解頻寬瓶頸 很多網路為本地網路客戶端提供的頻寬比為遠端伺服器提供的頻寬要寬 緩解瞬時擁塞 不會所有的請求都奔著一台伺服器去 降低距離時延 就近訪問麼 命中率 請求命中快取的比例 位元組命中率 請求命中快取的文件,其文...