http協議各版本差異
一、http協議介紹
http(Hypertext transfer protocol)超文本傳輸協議,它是互聯網上應用最為廣泛的一種網絡協議,工作在應用層。
二、http協議發展
http協議目前有4個版本,其中1.0、1.1版本在互聯網上被廣泛使用,2.0版本目前應用很少,是下一代的http協議。
-
http/0.9版本:1991年,原型版本,功能簡陋,只有一個命令GET,只支持純文本內容,該版本已過時。
-
http/1.0版本: 1996年5月,支持cache, MIME, method等。
-
http/1.1版本: 1997年1月,默認建立持久連接,並能很好地配合代理服務器工作。還支持以管道方式在同時發送多個請求,以便降低線路負載,提高傳輸速度。
- http/2 版本: 2015年5月作為互聯網標準正式發布,頭部信息和數據體都是二進制,引入頭信息壓縮機制等。
三、1.x版本說明
http1.0版本:
-
任何格式的內容都可以發送,這使得互聯網不僅可以傳輸文字,還能傳輸圖像、視頻、二進制等文件。
-
除了GET命令,還引入了POST命令和HEAD命令。
- http請求和回應的格式改變,除了數據部分,每次通信都必須包括頭信息(HTTP header),用來描述一些元數據。
http1.1版本:
-
http1.1是目前最為主流的http協議版本,從1997年發布至今,仍是主流的http協議版本。
-
引入了持久連接( persistent connection),即TCP連接默認不關閉,可以被多個請求復用,不用聲明Connection: keep-alive。
-
引入了管道機制( pipelining),即在同一個TCP連接裏,客戶端可以同時發送多個
請求,進一步改進了HTTP協議的效率。 -
新增方法:PUT、 PATCH、 OPTIONS、 DELETE。
- http協議不帶有狀態,每次請求都必須附上所有信息。請求的很多字段都是重復的,浪費帶寬,影響速度。
http1.x版本問題:
-
http1.x在傳輸數據時,所有傳輸的內容都是明文,客戶端和服務器端都無法驗證對方的身份,無法保證數據的安全性。
-
1.1版本允許復用TCP連接,但是同一個TCP連接裏面,所有的數據通信是按次序進行的。服務器只有處理完一個回應,才會進行下一個回應,可能會造成Head-of-line blocking的問題。
- http1.x支持了keep-alive,來彌補多次創建連接產生的延遲,但是keepalive使用多了同樣會給服務端帶來大量的性能壓力,並且對於單個文件被不斷請求的服務(例如圖片存放網站), keep-alive可能會極大的影響性能,因為它在文件被請求之後還保持了不必要的連接很長時間。
四、http/2協議
http/2發布於2015年,目前應用還比較少,該版本主要有如下特點:
-
http/2是一個徹底的二進制協議,頭信息和數據體都是二進制,並且統稱為"幀"(frame):頭信息幀和數據幀。
-
復用TCP連接,在一個連接裏,客戶端和瀏覽器都可以同時發送多個請求或回應,且不用按順序一一對應,避免了隊頭堵塞的問題,此雙向的實時通信稱為多工( Multiplexing)。
-
HTTP/2 允許服務器未經請求,主動向客戶端發送資源,即服務器推送。
- 引入頭信息壓縮機制( header compression) ,頭信息使用gzip或compress壓縮後再發送。
五、查看網站http協議版本
打開瀏覽器,以百度首頁為例,按下F12鍵。點擊network項,然後刷新網頁。
從響應頭部信息可以看出,該網站使用的是http1.1版本。
http協議各版本差異