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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HTTP/2 协议入门

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


? 一、2015年, HTTP/2發(fā)布。


二、二進(jìn)制協(xié)議

HTTP/2是一個(gè)二進(jìn)制協(xié)議,頭信息和數(shù)據(jù)體都是二進(jìn)制,并且統(tǒng)稱為“幀”(frame),頭信息幀和數(shù)據(jù)幀。

二進(jìn)制協(xié)議的一個(gè)好處是,可以定義額外的幀。HTTP/2定義了近10種幀,為將來(lái)的高級(jí)應(yīng)用打好了基礎(chǔ)。


三、多工

HTTP/2復(fù)用TCP連接,在一個(gè)連接里,客戶端和瀏覽器都可以同時(shí)發(fā)送多個(gè)請(qǐng)求東或回應(yīng),而不用按照順序一一對(duì)應(yīng),這樣就避免了“隊(duì)頭堵塞”。

舉個(gè)例來(lái)說(shuō),在一個(gè)TCP連接里面,服務(wù)器同時(shí)收到了A請(qǐng)求和B請(qǐng)求,于是先回應(yīng)A請(qǐng)求,結(jié)果發(fā)現(xiàn)處理過(guò)程非常耗時(shí),這時(shí)就可以發(fā)送A請(qǐng)求已經(jīng)處理好的部分,接著回應(yīng)B請(qǐng)求,完成后,再發(fā)送A請(qǐng)求剩下的部分。這樣雙向的實(shí)時(shí)的通信就叫做多工(Multiplexing)。


四、數(shù)據(jù)流

因?yàn)?span style="white-space:pre">HTTP/2的數(shù)據(jù)包是不按順序發(fā)送的,同一個(gè)連接里面連接的數(shù)據(jù)包,可能屬于不同的回應(yīng)。因此必須要對(duì)數(shù)據(jù)包作標(biāo)記,指出它屬于哪個(gè)回應(yīng)。

HTTP/2每個(gè)請(qǐng)求或回應(yīng)的所有數(shù)據(jù)包稱為一個(gè)數(shù)據(jù)流(stream)。每個(gè)數(shù)據(jù)流都有獨(dú)一無(wú)二的編號(hào)。數(shù)據(jù)包發(fā)送的時(shí)候都必須標(biāo)記數(shù)據(jù)流ID,用來(lái)區(qū)分它屬于哪個(gè)數(shù)據(jù)流。另外還規(guī)定,客戶端發(fā)出的數(shù)據(jù)流ID一律為奇數(shù),服務(wù)器發(fā)出的一律為偶數(shù)。

數(shù)據(jù)流發(fā)送到一半的時(shí)候客戶端和服務(wù)端都可以發(fā)送信號(hào)(RST_STREAM幀),取消這個(gè)數(shù)據(jù)流。1.1版本取消數(shù)據(jù)流的唯一方法就是關(guān)閉TCP連接。這就是說(shuō)HTTP/2可以取消某一次請(qǐng)求,同時(shí)保證TCP連接還打開(kāi)著,可為其它請(qǐng)求所用。

客戶端還可以指定數(shù)據(jù)流的優(yōu)先級(jí),優(yōu)先級(jí)越高,服務(wù)器就會(huì)越早回應(yīng)。


五、頭信息壓縮

HTTP協(xié)議不 帶有狀態(tài),每次請(qǐng)求都必須附上所有信息。所以,請(qǐng)求的很多字段都是重復(fù)的,比如 Cookie 和 User Agent , 一模一樣的內(nèi)容,每次請(qǐng)求都必須附帶,這會(huì)浪費(fèi)很多帶寬,也影響速度。

HTTP/2對(duì)這一點(diǎn)作了優(yōu)化,引入了頭信息壓縮機(jī)制(header compression)。 一方面,頭信息使用 gzip 或 compress 壓縮后再發(fā)送;另一方面,客戶端和服務(wù)端同時(shí)維護(hù)一張頭信息表,所有字段都會(huì)存入這個(gè)表,生成一個(gè)索引號(hào),以后就不發(fā)送同樣字段了,只發(fā)送索引號(hào),這樣就提高速度了。


六、服務(wù)器推送

HTTP/2允許服務(wù)器未經(jīng)請(qǐng)求,主動(dòng)向客戶端發(fā)送資源,這叫做服務(wù)器推送(server push)。

常見(jiàn)場(chǎng)景是客戶端請(qǐng)求一個(gè)網(wǎng)頁(yè),這個(gè)網(wǎng)頁(yè)里面包含很多靜態(tài)資源。正常情況下,客戶端必須收到網(wǎng)頁(yè)后,解析 HTML 源碼,發(fā)現(xiàn)有靜態(tài)資源再發(fā)出靜態(tài)資源請(qǐng)求。其實(shí),服務(wù)器可以預(yù)期到客戶端請(qǐng)求網(wǎng)頁(yè)后,很可能會(huì)再請(qǐng)求靜態(tài)資源,所以就主動(dòng)把這些靜態(tài)資源隨著網(wǎng)頁(yè)一起發(fā)送給客戶端了。



原文參見(jiàn):程序員的那些事






總結(jié)

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

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