HTTP/2 是 HTTP 協(xié)議自 1999 年 HTTP 1.1 發(fā)布后的首個更新,主要基于 SPDY 協(xié)議。由互聯網工程任務組(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工作小組進行開發(fā)。該組織于2014年12月將HTTP/2標準提議遞交至IESG進行討論,于2015年2月17日被批準。HTTP/2標準于2015年5月以RFC 7540正式發(fā)表。

那 HTTP/2 到底有哪些具體變化呢?

二進制分幀

先來理解幾個概念:

幀:HTTP/2 數據通信的最小單位消息:指 HTTP/2 中邏輯上的 HTTP 消息。例如請求和響應等,消息由一個或多個幀組成。

流:存在于連接中的一個虛擬通道。流可以承載雙向消息,每個流都有一個唯一的整數ID。

HTTP/2 采用二進制格式傳輸數據,而非 HTTP 1.x 的文本格式,二進制協(xié)議解析起來更高效。 HTTP / 1 的請求和響應報文,都是由起始行,首部和實體正文(可選)組成,各部分之間以文本換行符分隔。HTTP/2 將請求和響應數據分割為更小的幀,并且它們采用二進制編碼。

HTTP/2 中,同域名下所有通信都在單個連接上完成,該連接可以承載任意數量的雙向數據流。每個數據流都以消息的形式發(fā)送,而消息又由一個或多個幀組成。多個幀之間可以亂序發(fā)送,根據幀首部的流標識可以重新組裝。

多路復用

多路復用,代替原來的序列和阻塞機制。所有就是請求的都是通過一個 TCP連接并發(fā)完成。 HTTP 1.x 中,如果想并發(fā)多個請求,必須使用多個 TCP 鏈接,且瀏覽器為了控制資源,還會對單個域名有 6-8個的TCP鏈接請求限制,如下圖,紅色圈出來的請求就因域名鏈接數已超過限制,而被掛起等待了一段時間:

在 HTTP/2 中,有了二進制分幀之后,HTTP /2 不再依賴 TCP 鏈接去實現多流并行了,在 HTTP/2中:

  • 同域名下所有通信都在單個連接上完成。

  • 單個連接可以承載任意數量的雙向數據流。

  • 數據流以消息的形式發(fā)送,而消息又由一個或多個幀組成,多個幀之間可以亂序發(fā)送,因為根據幀首部的流標識可以重新組裝。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式