HTTP權威指南(四)

2021-08-19 16:22:23 字數 4913 閱讀 2931

1.報文是箱子,實體是貨物

報文實體由報文首部和實體主體組成

2.content-length:實體的大小

該首部指示出報文中實體主體的位元組大小

(1)檢測截尾

(2)錯誤的長度資訊

(3)對於持久連線必不可少

(4)如果進行了內容編碼,則是編碼後的位元組長度

(5)確定實體主體長度的規則

http/1.1建議對於沒有content-length首部的請求,傳送400/411響應

3.實體摘要

為檢測實體主體的資料是否被不經意地修改,傳送方可以在生成初始的主體時,生成乙個資料的校驗和,這樣接收方就可以通過檢查這個校驗和來捕獲所有意外的實體修改

伺服器使用content-md5首部傳送對實體主體執行md5演算法的結果,只有產生響應的原始伺服器可以計算並傳送content-md5首部

4.**型別和字符集

content-type首部說明了實體主體的mime型別,還支援可選的引數來進一步說明內容的型別,諸如charset等

5.內容編碼

(1)內容編碼過程

(2)內容編碼型別

content-encoding值

描述gzip

表明採用gnu zip編碼

compress

表明實體採用unix的檔案壓縮程式

deflate

表明實體是用zlib格式壓縮的

identity

表明沒有對實體進行編碼

以上三種編碼都是無損,gzip效率最高,使用最多

(3)accept-encoding首部:表明客戶端可以接收的編碼方式

6.傳輸編碼和分塊編碼

經過內容編碼的報文,只是對報文的實體主體部分進行了編碼;經過傳輸編碼的報文,編碼作用於整個報文,報文自身的結構發生了變化

(1)可靠傳輸

(2)transfer-encoding首部:用於告知接收方為了可靠的傳輸報文,已經對其進行了傳輸編碼;te首部:用於請求首部中,告知伺服器可以使用那些傳輸編碼擴充套件

(3)分塊編碼:把報文分割成若干個大小已知的塊;分塊編碼是一種傳輸編碼,因此是報文的屬性,而不是主體的屬性

(4)內容編碼和傳輸編碼的結合

(5)傳輸編碼的規則

7.隨時間變化的例項

8.驗證碼和新鮮度

(1)新鮮度:伺服器應當告知客戶端能夠將內容快取多長時間,在這個時間之內就是新鮮的;可以使用expires和cache-control首部

cache-control首部

指令報文型別

描述no-cache

請求在重新向伺服器驗證之前,不要返回文件的快取副本

no-store

請求不要返回文件的快取副本,不要儲存伺服器的響應

max-age

請求快取中的文件不能超過指定的使用期

max-stale

請求文件允許過期,但是不能超過指令中的指定的過期值

min-fresh

請求響應必須在指定的這段時間保持新鮮

no-transform

請求文件在傳送之前不允許轉換

only-if-cached

請求只有當文件在快取中才傳送,不要聯絡原始伺服器

public

響應響應可以被任何伺服器快取

private

響應響應可以被快取,但是只能被單個客戶端訪問

no-cache

響應有首部列表,可以快取並提供給客戶端,但要刪除首部列表;沒有指定首部,快取中的副本在沒有重新向伺服器驗證之前不能提供給客戶端

no-store

響應響應不允許被快取

no-transform

響應響應在提供給客戶端之前不能做任何形式的修改

must-revalidate

響應響應在提供給客戶端之前必須重新向伺服器驗證

proxy-revalidate

響應共享的快取在提供給客戶端之前必須向原始伺服器驗證

max-age

響應指定文件可以被快取的時間以及新鮮度的最長時間

s-max-age

響應指定文件作為共享快取的最長使用時間

(2)有條件的請求和驗證碼

僅當資源改變時才請求副本,這種特殊請求稱為有條件的請求

請求型別

驗證碼描述

if-modified-since

last-modified

如果在前一條響應的last-modified中說明的時間之後,資源的副本發生了變化,就傳送其副本

if-unmodified-since

last-modified

如果在前一條響應的last-modified中說明的時間之後,資源的副本沒有變化,就傳送其副本

if-match

etag

如果實體的標記與前一次響應首部中etag相同,就傳送資源副本

if-none-match

etag

如果實體的標記與前一次響應首部中etag不同,就傳送資源副本

http把驗證碼分為兩類:弱驗證碼和強驗證碼

弱驗證碼不一定能唯一標識乙個資源,而強驗證碼必須唯一標識

9.範圍請求

客戶端可以通過range首部來請求某個範圍的資料;伺服器通過accept-ranges向客戶端說明可以接受的範圍請求

10.差異編碼:通過交換物件改變的部分而不是完整的物件來優化傳輸效能

1.http對國際性內容的支援

伺服器通過content-type和content-language告知客戶端文件的字母表和語言

客戶端傳送accept-charset和accept-language告知伺服器它理解哪些字符集編碼和語言以及優先順序

2.字符集和http

(1)字符集是把字元轉換為二進位製碼的編碼:charset引數用來告知客戶端如何把內容中的二進位製碼轉換為字元

(2)工作過程:根據編碼方案解碼,使用編碼後的字符集找到字元,最後顯示

(3)字符集不對,字元就不對

(4)標準化的mime charset值

(5)content-type首部和charset首部以及meta標誌:如果首部中沒有標明字符集,html中的meta中也可能會有字元相關的資訊

(6)accept-charset首部:客戶端明確告知伺服器它支援哪些字元系統

其餘略內容協商技術:客戶端驅動、伺服器驅動以及透明驅動

技術概要

技術工作原理

優點缺點

客戶端驅動

客戶端發起請求,伺服器傳送可選項的列表,客戶端選擇

在伺服器端的實現最容易,客戶端可以選擇合適的內容

增加了時延:為了獲得正確的內容,至少要傳送兩次請求

伺服器驅動

伺服器檢查客戶端的請求首部集並決定提供哪個版本的頁面

比客戶端驅動要快,提供q值機制,允許伺服器近似匹配,還提供vary首部告知下游裝置如何對請求估值

如果結論不明確,伺服器要猜測

透明某個中間裝置代表客戶端進行請求協商

免除了web伺服器的協商開銷,比客戶端驅動要快

沒有正式規範

內容協商首部集

accept首部

實體首部

accept

content-type

accept-language

content-language

accept-charset

content-type

accept-encoding

content-encoding

1.主機託管服務

2.虛擬主機託管

(1)虛擬伺服器請求缺乏主機資訊:http/1.0中只傳送了url的路徑部分

(2)設法讓虛擬主機託管正常工作

通過埠號進行虛擬主機託管:使用者不願意

通過host首部進行虛擬主機託管

(3)http/1.1的host首部

3.使**更可靠

(1)映象的伺服器集群:伺服器集群是一排配置相同的web伺服器,互相可以替換。有乙個主原始伺服器和多個複製原始伺服器

(2)內容分發網路cdn:對特定內容進行分發的專門網路

(3)cdn中的反向**快取

(4)cdn中的**快取

4.讓**更快

伺服器集群和分布式**快取或反向**伺服器分散了網路流量,可以避免擁塞

略1.為什麼要重定向:可靠的執行http事務、最小化時延、節約網路頻寬

2.重定向到何地:web伺服器會根據每個ip來處理請求。將請求分攤到複製的伺服器中去,就意味著應該把對某特定url的每條請求都傳送到最佳的web伺服器上去

3.重定向協議概覽:重定向的目標是盡快將http報文傳送到可用的web伺服器上去

4.通用的重定向方法

(1)http重定向:處理重定向的伺服器找到可用的負載最小的內容伺服器,並將瀏覽器重定向到那台伺服器上去;http重定向的優點之一就是重定向伺服器知道客戶端的ip位址

缺點:需要原始伺服器進行大量處理來判斷要重定向到哪台伺服器上去;增加了使用者時延,因為訪問介面要進行兩次往返;如果重定向伺服器出故障,站點就會癱瘓

(2)dns重定向:dns輪轉,在web伺服器集群中平衡負載;大多數dns客戶端只會使用多位址集中的第乙個位址,為了均衡負載,大多數dns伺服器都會在每次完成查詢之後對位址進行輪轉;其他演算法包括負載均衡演算法、鄰接路由演算法以及故障遮蔽演算法

(3)任播定址

(4)ip mac **

(5)ip位址**

(6)網元控制協議

5.**的重定向方法

(1)顯式瀏覽器配置

(2)**自動配置

(3)web**自動發現協議

6.快取的重定向方法

7.網際網路快取協議(icp)

icp允許快取在其兄弟快取中查詢命中內容,避免查詢原始伺服器帶來的更多開銷

8.快取陣列路由協議

9.超文字快取協議

《HTTP權威指南》學習筆記 四

http權威指南 學習筆記 四 第四部分 實體 編碼和國際化 涵蓋http報文主體和web標準 第15章 實體和編碼 內容 報文實體由實體首部和實體主體組成。分塊密碼 報文 圖15.6 第16章 國際化 內容 國際化方面的兩個主要問題 字符集編碼 和 語言標記。http字符集的值說明如何把實體內容的...

HTTP權威指南

web 伺服器會為所有 http 物件資料附加乙個 mime 型別,content type image jpeg,content length 12984 伺服器資源名被稱為統一資源識別符號 uniform resource identifier,uri uri 就像網際網路上的郵政位址一樣,在世...

HTTP權威指南 HTTP報文

在開始學習本章之前,先來提一些問題,什麼是報文?如何建立報文?怎麼去理解報文?以及報文的用處有哪些?什麼是報文?可以這麼去理解,如果說http是網際網路的信使,那麼http報文就是它用來搬東西的包裹了。一 報文流 http報文是在http應用程式之間傳送的資料塊。這些資料塊以一些文字形式的元資訊開頭...