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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HTTP/2 协议入门

發布時間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP/2 协议入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


? 一、2015年, HTTP/2發布。


二、二進制協議

HTTP/2是一個二進制協議,頭信息和數據體都是二進制,并且統稱為“幀”(frame),頭信息幀和數據幀。

二進制協議的一個好處是,可以定義額外的幀。HTTP/2定義了近10種幀,為將來的高級應用打好了基礎。


三、多工

HTTP/2復用TCP連接,在一個連接里,客戶端和瀏覽器都可以同時發送多個請求東或回應,而不用按照順序一一對應,這樣就避免了“隊頭堵塞”。

舉個例來說,在一個TCP連接里面,服務器同時收到了A請求和B請求,于是先回應A請求,結果發現處理過程非常耗時,這時就可以發送A請求已經處理好的部分,接著回應B請求,完成后,再發送A請求剩下的部分。這樣雙向的實時的通信就叫做多工(Multiplexing)。


四、數據流

因為HTTP/2的數據包是不按順序發送的,同一個連接里面連接的數據包,可能屬于不同的回應。因此必須要對數據包作標記,指出它屬于哪個回應。

HTTP/2每個請求或回應的所有數據包稱為一個數據流(stream)。每個數據流都有獨一無二的編號。數據包發送的時候都必須標記數據流ID,用來區分它屬于哪個數據流。另外還規定,客戶端發出的數據流ID一律為奇數,服務器發出的一律為偶數。

數據流發送到一半的時候客戶端和服務端都可以發送信號(RST_STREAM幀),取消這個數據流。1.1版本取消數據流的唯一方法就是關閉TCP連接。這就是說HTTP/2可以取消某一次請求,同時保證TCP連接還打開著,可為其它請求所用。

客戶端還可以指定數據流的優先級,優先級越高,服務器就會越早回應。


五、頭信息壓縮

HTTP協議不 帶有狀態,每次請求都必須附上所有信息。所以,請求的很多字段都是重復的,比如 Cookie 和 User Agent , 一模一樣的內容,每次請求都必須附帶,這會浪費很多帶寬,也影響速度。

HTTP/2這一點作了優化,引入了頭信息壓縮機制(header compression)。 一方面,頭信息使用 gzip 或 compress 壓縮后再發送;另一方面,客戶端和服務端同時維護一張頭信息表,所有字段都會存入這個表,生成一個索引號,以后就不發送同樣字段了,只發送索引號,這樣就提高速度了。


六、服務器推送

HTTP/2允許服務器未經請求,主動向客戶端發送資源,這叫做服務器推送(server push)。

常見場景是客戶端請求一個網頁,這個網頁里面包含很多靜態資源。正常情況下,客戶端必須收到網頁后,解析 HTML 源碼,發現有靜態資源再發出靜態資源請求。其實,服務器可以預期到客戶端請求網頁后,很可能會再請求靜態資源,所以就主動把這些靜態資源隨著網頁一起發送給客戶端了。



原文參見:程序員的那些事






總結

以上是生活随笔為你收集整理的HTTP/2 协议入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。