新年新技術 HTTP 2

2022-02-06 07:42:36 字數 950 閱讀 3371

新的一年,專案也要帶著發展的眼光往前走,得跟上潮流,當然前提是自己真的用的上。 用的上用不上都得先簡單了解下。

2月下旬google發布了首個基於http/2的rpc框架grpc,它是基於http/2的,所以先了解下它,後續等深入研究了再回頭說說grpc。

http/2基於二進位制而不是文字,二進位制協議解析起來效率會更高,而且不那麼容易出錯,此外原來基於http/1.x協議程式可以用多種方式解析訊息體, 但是http/2只有一種方式,這點對實現者來說負擔更輕點。

http/1.x實際上是乙個請求乙個連線,因此瀏覽器為了提高頁面的載入速度都會開多個連線,但是這也是有限制的(不同的瀏覽器不一樣)。 太多的連線帶來的是網際網路上更多的擁塞和占用了更多的資源,這本身是低效而且是不公平的(對其他協議來說)。

http/2的乙個重要目的是讓瀏覽器和伺服器之間只建立乙個連線,用乙個連線實現了並行的請求處理,這就是multiplexing。

因為基於二進位制所以telnet無法使用http/2。

上面已經提到了,http/2只允許瀏覽器和伺服器之間建立乙個連線,用乙個連線實現並行,減少tcp連線數。

現在網頁載入是資源密集型的,乙個頁面通常有很多資源要載入,每次請求的頭部資料不可忽視(尤其是cookies), 加上tcp的slow start機制(一種擁塞控制機制)會導致往返次數加大。壓縮可以有效的減少包分組的數量,從而減少延遲,尤其是在移動端上。

因為gzip壓縮有安全性隱患,所以http/2自己實現了一套壓縮演算法——hpack。

目前伺服器需要瀏覽器解析頁面後再傳送新請求來獲取js,css,等資源。http/2為了優化這個開銷,可以提前將這些資源「推送」到客戶端的快取中。

github上專門有乙個wiki頁跟蹤了有哪些http/2的實現。我們比較關心的是google發布的grpc。

上述內容都是官方文件的內容,深入了解最好方式還是看官方的文件。

公升級HTTP 2協議

首先只有使用https協議的站點可以公升級http 2協議 nginx如果想要公升級http 2需要滿足以下要求 nginx版本要高於1.9.5 with http ssl module 跟 with http v2 module 必帶 因為http2.0協議需要使用https協議。yum inst...

http2的除錯方法

http2怎麼除錯?關於http2的除錯工具 說到這裡,個人喜歡chrome和firefox。直接上圖,不想說太多,1.chrome chrome從40版本開始支援http2,所以無需任何外掛程式安裝。訪問普通的https如圖所示 訪問http2如圖所示,會多一些首部資訊 chrome net in...

HTTP 2的前世今生

前世 的前生是 google 開發的基於 tcp的傳輸層協議 spdy。spdy是對http 協議的增強。用以最小化網路延遲,提公升網路速度,優化使用者的網路使用體驗。spdy 並不用於取代 它只是修改了 的請求與應答在網路上傳輸的方式 這意味著只需增加乙個 spdy 傳輸層,現有的所有服務端應用均...