日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络:HTTP1.1和HTTP2区别

發(fā)布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络:HTTP1.1和HTTP2区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天,HTTP 1.1 已經(jīng)變成互聯(lián)網(wǎng)中主要的協(xié)議。但是在 HTTP 協(xié)議誕生初期卻被認為是簡單直接的協(xié)議。1996 年在 RFC 1945 中定義了 HTTP 1.0 規(guī)范,僅 60 頁,到 1999 年在 RFC 2616 定義了?HTTP 1.1,增長到了 176 頁。但是,隨著 web 技術的飛速發(fā)展。 HTTP 1.1 已經(jīng)無法滿足用戶對性能的要求,此后 Google 推出協(xié)議 SPDY,意在解決 HTTP 1.1 中廣為人知的性能問題。SPDY 得到了 Chrome、Firefox 和 Opera 的支持,很多大型網(wǎng)站(如谷歌、Twitter、Facebook)都對兼容客戶端使用 SPDY。SPDY 在被行業(yè)采用并證明能夠大幅提升性能之后,已經(jīng)具備了成為一個標準的條件。

?

HTTP/2?是 HTTP 協(xié)議自 1999 年 HTTP 1.1 發(fā)布后的首個更新,主要基于 SPDY?協(xié)議。它由互聯(lián)網(wǎng)工程任務組(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數(shù)據(jù)通信的最小單位。
  • 消息(Message):指 HTTP/2 中邏輯上的 HTTP 消息。例如請求和響應等,消息由一個或多個幀組成。
  • 流(流):存在于連接中的一個虛擬通道。流可以承載雙向消息,每個流都有一個唯一的整數(shù)ID。

?

HTTP/2 采用二進制格式傳輸數(shù)據(jù),而非 HTTP 1.x 的文本格式,二進制協(xié)議解析起來更高效。 ? ? ? ? ? ??

?

HTTP/1 的請求和響應報文,都是由起始行,首部和實體正文(可選)組成,各部分之間以文本換行符分隔。HTTP/2 將請求和響應數(shù)據(jù)分割為更小的幀,并且它們采用二進制編碼。?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

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

多路復用

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

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

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

  • 單個連接可以承載任意數(shù)量的雙向數(shù)據(jù)流。

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

?

這一特性,性能會有極大的提升,因為:

  • 同個域名只需要占用一個 TCP 連接,消除了因多個 TCP 連接而帶來的延時和內(nèi)存消耗。

  • 單個連接上可以并行交錯的請求和響應,之間互不干擾。

  • 在HTTP/2中,每個請求都可以帶一個31bit的優(yōu)先值,0表示最高優(yōu)先級, 數(shù)值越大優(yōu)先級越低。有了這個優(yōu)先值,客戶端和服務器就可以在處理不同的流時采取不同的策略,以最優(yōu)的方式發(fā)送流、消息和幀。

服務器推送

服務端可以在發(fā)送頁面HTML時主動推送其它資源,而不用等到瀏覽器解析到相應位置,發(fā)起請求再響應。例如服務端可以主動把JS和CSS文件推送給客戶端,而不需要客戶端解析HTML再發(fā)送這些請求。服務端可以主動推送,客戶端也有權利選擇接收與否。如果服務端推送的資源已經(jīng)被瀏覽器緩存過,瀏覽器可以通過發(fā)送RST_STREAM幀來拒收。主動推送也遵守同源策略,服務器不會隨便推送第三方資源給客戶端。

頭部壓縮

HTTP 1.1請求的大小變得越來越大,有時甚至會大于TCP窗口的初始大小,因為它們需要等待帶著ACK的響應回來以后才能繼續(xù)被發(fā)送。HTTP/2對消息頭采用HPACK(專為http2頭部設計的壓縮格式)進行壓縮傳輸,能夠節(jié)省消息頭占用的網(wǎng)絡的流量。而HTTP/1.x每次請求,都會攜帶大量冗余頭信息,浪費了很多帶寬資源。

?

HTTP 每一次通信都會攜帶一組頭部,用于描述這次通信的的資源、瀏覽器屬性、cookie 等,例如 ?

為了減少這塊的開銷并提升性能, HTTP/2會壓縮這些首部:

  • HTTP/2在客戶端和服務器端使用“首部表”來跟蹤和存儲之前發(fā)送的鍵-值對,對于相同的數(shù)據(jù),不再通過每次請求和響應發(fā)送;

  • 首部表在HTTP/2的連接存續(xù)期內(nèi)始終存在,由客戶端和服務器共同漸進地更新;

  • 每個新的首部鍵-值對要么被追加到當前表的末尾,要么替換表中之前的值。

?

例如:下圖中的兩個請求, 請求一發(fā)送了所有的頭部字段,第二個請求則只需要發(fā)送差異數(shù)據(jù),這樣可以減少冗余數(shù)據(jù),降低開銷。

我們來看一個實際的例子,下面是用WireShark抓取的訪問google首頁的包:?

上圖是是訪問https://www.google.com/抓到的第一個請求的頭部,可以看到頭部的內(nèi)容,總共占用了437 bytes,我們選中頭部的cookie,可以看到cookie總共占用了118 bytes。接下來我們看看第二個請求的頭部:

從上圖可以看到,得益于頭部壓縮,第二個請求中cookie只占用了1個字節(jié),我們來看看變化了的Accept字段:?

由于Accept字段與請求一中的內(nèi)容不同,需要發(fā)送給服務器,所以占用了29 bytes。

PS: 這里有個akamai的HTTP /2 的演示鏈接,有興趣的可以點擊看看:https://http2.akamai.com/demo

瀏覽器和網(wǎng)絡服務支持情況:http2支持清單??

結語

又拍云 CDN?當前已全平臺支持 HTTP/2,并已默認開啟。又因 HTTP/2 是在 HTTPS 協(xié)議的基礎上實現(xiàn)的,所以只要使用又拍云 HTTPS 加速服務的域名,都可免費享受 HTTP/2 服務,無需做任何特殊配置。而開啟HTTPS,只需完成證書申請與管理,無須繁雜流程,輕松實現(xiàn)網(wǎng)站與 Web 應用的 HTTPS 加密部署。

?

參考資料:

  • Jerry Qu blog?中的HTTP/2專題;

  • 維基百科:HTTP/2

  • RFC 7540 – 超文本傳輸協(xié)議第2版(HTTP / 2)

  • FC 7541 – HPACK:HTTP / 2的頭壓縮:http://httpwg.org/specs/rfc7541.html

  • http2講解:https://ye11ow.gitbooks.io/http2-explained/content/part2.html

  • http://www.cnblogs.com/yingsmirk/

  • ?

    附:

    如何快速啟用 HTTP2

    瀏覽器和網(wǎng)絡服務支持情況:http2支持清單

    HTTP/2 和 HTTP/1 速度對比:HTTP/2: the Future of the Internet

    為什么非全站升級HTTPS不可?https://zhuanlan.zhihu.com/p/26953410

    總結

    以上是生活随笔為你收集整理的网络:HTTP1.1和HTTP2区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。