http(hypertext transfer protocol)超文字傳輸協議,是乙個應用層的通訊協議。
http協議版本介紹:
http/0.9 :只接受get一種請求方法,沒有在通訊中指定版本號,且不支援請求頭。由於該版本不支援post方法,因此客戶端無法向伺服器傳遞太多資訊。
http/1.0 :第乙個在通訊中指定的版本號,至今被廣泛採用,特別是在**伺服器中。
http/1.1 :當前版本號,持久連線被預設採用,並能很好地配合**伺服器工作。還支援以管道方式在同時傳送多個請求,以便降低線路負載,提高傳輸速度。
http/2.0 正在開發中······
http/1.1與http/1.0的區別:
1.persistent connection(持久連線)
http/1.0中,每對請求/ 響應都使用乙個新的連線。
http/1.1則支援持久連線(預設)。
2.host域
http/1.1在請求訊息頭多乙個host域;http/1.0 則沒有這個域,建立tcp連線的時候已經指定了ip位址,而且預設乙個ip位址只對應乙個主機名,ip位址上只有乙個host。
3.頻寬優化
http/1.1中在請求訊息中引入了range頭域,它允許只請求資源的某個部分。在響應訊息中content-range頭域宣告了返回的這部分物件 的偏移值和長度。如果伺服器相應地返回了物件所請求範圍的內容,則響應碼為206(partial content),它可以防止cache將響應誤以為是完整的乙個物件。請求訊息中如果包含比較大的實體內容,但不確定伺服器是否能夠接收該請求(如是否有許可權),此時若貿然發出帶實體的請求,如果被拒絕也會浪費頻寬。 http/1.1加入了乙個新的狀態碼100(continue)。客戶端事先傳送乙個只帶頭域的請求,如果伺服器因為許可權拒絕了請求,就回送響應碼 401(unauthorized);如果伺服器接收此請求就回送響應碼100,客戶端就可以繼續傳送帶實體的完整請求了。注意,http/1.0的客戶 端不支援100響應碼。
節省頻寬資源的乙個非常有效的做法就是壓縮要傳送的資料。content-encoding是對訊息進行端到端(end-to-end)的編碼,它可能是 資源在伺服器上儲存的固有格式(如jpeg格式);在請求訊息中加入accept-encoding頭域,它可以告訴伺服器客戶端能夠解碼的編碼方 式。而transfer-encoding是逐段式(hop-by-hop)的編碼,如chunked編碼。在請求訊息中加入te頭 域用來告訴伺服器能夠接收的transfer-coding方式。
4.請求方法和狀態碼
http1.1增加了options, put, delete, trace, connect這些request方法
http/1.0中只定義了16個狀態響應碼,對錯誤或警告的提示不夠具體。http/1.1引入了乙個warning頭域,增加對錯誤或警告資訊的描述。
在http/1.1中新增了24個狀態響應碼,如409(conflict)表示請求的資源與資源的當前狀態發生衝突;410(gone)表示伺服器上的某個資源被永久性的刪除。
5.內容協商
為 了滿足網際網路使用不同母語和字符集的使用者,一些網路資源有不同的語言版本(如中文版、英文版)。http/1.0定義了內容協商 (content negotiation)的概念,也就是說客戶端可以告訴伺服器自己可以接收以何種語言(或字符集)表示的資源。例如如果伺服器不能明確 客戶端需要何種型別的資源,會返回300(multiple choices),幷包含乙個列表,用來宣告該資源的不同可用版本,然後客戶端在請求訊息中包含accept-language和accept- charset頭域指定需要的版本。
6.狀態碼
100(continue)繼續傳送
200~299:成功狀態碼,表示成功接收請求並已完成整個處理過程,常用200(ok)成功接收
400~499:客戶端的請求有錯誤,常用404(not found),403(fobidden)
500~599:伺服器端出現錯誤,常用 500
http協議以及各版本之間的區別
影響乙個http網路請求的因素主要有兩個 頻寬和延遲。頻寬已經不是問題延遲 https與http的一些區別證書 載體 連線方式 埠 劫持 https協議需要到ca申請證書 證書 http協議執行在tcp之上,所有傳輸的內容都是明文,https執行在ssl tls之上,ssl tls執行在tcp之上,...
http各版本之間的區別
http版本 value 缺點0.9 僅支援請求方式get,並且僅能請求訪問html格式的資源。1.0請求方式post和head 每次tcp連線只能傳送乙個請求,當伺服器響應後就會關閉這次連線,下乙個請求需要再次建立tcp連線,就是不支援keepalive 1.11.tcp連線預設不關閉,可以被多個...
HTTP各版本比較
想深入了解http,奈何每個書籍都是三四百頁。持久連線 塊編碼狀態碼100的使用 持久連線 connection keep alive 塊編碼 傳送方必須告訴接收方必須在不知道傳送內容長度的情況下如何解析 transfer encoding的特殊請求頭,指明位元組流塊傳送 1d r n i m as...