1. 程式人生 > >http協議各版本差異

http協議各版本差異

mage lin 應用 分享圖片 安全性 ram 信息 網絡 服務器

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協議各版本差異