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版本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章