http協議各版本的區別


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~199:信息狀態碼,表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程

100(continue)繼續發送

200~299:成功狀態碼,表示成功接收請求並已完成整個處理過程,常用200(OK)成功接收

300~399:重定向狀態碼,例如,請求的資源已經移動一個新地址,常用302、307和304

400~499:客戶端的請求有錯誤,常用404(Not Found),403(Fobidden)

500~599:服務器端出現錯誤,常用 500


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM