快速入門http2 0

2022-09-06 21:33:25 字數 2004 閱讀 8960

**自:

想要了解乙個事物,首先就要知道它是什麼。

簡單來說,http/2(超文字傳輸協議第2版,最初命名為http2.0),是http協議的第二個主要版本。http/2是http協議自2023年http1.1發布後的首個更新,主要基於spdy協議。

http2.0的特點是:在不改動http語義、方法、狀態碼、uri及首部欄位的情況下,大幅度提高了web效能。

剛剛對http2.0的介紹中引出了乙個名詞 —— spdy協議,這又是什麼呢?

spdy是speedy的暱音,意為「更快」。它是google開發的基於tcp協議的應用層協議。目標是優化http協議的效能,通過壓縮、多路復用和優先順序等技術,縮短網頁的載入時間並提高安全性。spdy協議的核心思想是儘量減少tcp連線數。spdy並不是一種用於替代http的協議,而是對http協議的增強。

任何事物的更新都是為了彌補或修復上個版本的某些問題,那麼我們來看看http1.x都有哪些缺點以至於我們要使用http2.0。

http1.x有以下幾個主要缺點:

http/1.0一次只允許在乙個tcp連線上發起乙個請求,http/1.1使用的流水線技術也只能部分處理請求併發,仍然會存在佇列頭阻塞問題,因此客戶端在需要發起多次請求時,通常會採用建立多連線來減少延遲。

單向請求,只能由客戶端發起。

請求報文與響應報文首部資訊冗餘量大。

資料未壓縮,導致資料的傳輸量大。

我們可以通過乙個鏈結來對比一下http2.0到底比http1.x快了多少。鏈結位址

通過以上內容,你應該已經對http2.0有了初步認識,並且了解了http1.x的缺點。那麼下面我們就來了解一下http2.0的特點。

http2.0中所有加強效能的核心是二進位制傳輸,在http1.x中,我們是通過文字的方式傳輸資料。基於文字的方式傳輸資料存在很多缺陷,文字的表現形式有多樣性,因此要做到健壯性考慮的場景必然有很多,但是二進位制則不同,只有0和1的組合,因此選擇了二進位制傳輸,實現方便且健壯。

在http2.0中引入了新的編碼機制,所有傳輸的資料都會被分割,並採用二進位制格式編碼。

為了保證http不受影響,那就需要在應用層(http2.0)和傳輸層(tcp or udp)之間增加乙個二進位制分幀層。在二進位制分幀層上,http2.0會將所有傳輸的資訊分為更小的訊息和幀,並採用二進位制格式編碼,其中http1.x的首部資訊會被封裝到headers幀,而request body則封裝到data幀。

在http1.0中,我們經常會使用到雪碧圖、使用多個網域名稱等方式來進行優化,都是因為瀏覽器限制了同乙個網域名稱下的請求數量,當頁面需要請求很多資源的時候,隊頭阻塞(head of line blocking)會導致在達到最大請求時,資源需要等待其他資源請求完成後才能繼續傳送。

http2.0中,有兩個概念非常重要:幀(frame)和流(stream)。

幀是最小的資料單位,每個幀會標識出該幀屬於哪個流,流是多個幀組成的資料流。

所謂多路復用,即在乙個tcp連線中存在多個流,即可以同時傳送多個請求,對端可以通過幀中的表示知道該幀屬於哪個請求。在客戶端,這些幀亂序傳送,到對端後再根據每個幀首部的流識別符號重新組裝。通過該技術,可以避免http舊版本的隊頭阻塞問題,極大提高傳輸效能。

在http1.0中,我們使用文字的形式傳輸header,在header中攜帶cookie的話,每次都需要重複傳輸幾百到幾千的位元組,這著實是一筆不小的開銷。

在http2.0中,我們使用了hpack(http2頭部壓縮演算法)壓縮格式對傳輸的header進行編碼,減少了header的大小。並在兩端維護了索引表,用於記錄出現過的header,後面在傳輸過程中就可以傳輸已經記錄過的header的鍵名,對端收到資料後就可以通過鍵名找到對應的值。

在http2.0中,服務端可以在客戶端某個請求後,主動推送其他資源。

可以想象一下,某些資源客戶端是一定會請求的,這時就可以採取服務端push的技術,提前給客戶端推送必要的資源,就可以相對減少一點延遲時間。在瀏覽器相容的情況下也可以使用prefetch。

http2.0使用了tls的拓展alpn做為協議公升級,除此之外,http2.0對tls的安全性做了近一步加強,通過黑名單機制禁用了幾百種不再安全的加密演算法。

HTTP 2 0 協議詳解

無需 作者修改任何內容 把部署複雜性降至最低,無需變更網路基礎設施 與開源社群合作開發這個新協議 收集真實性能資料,驗證這個實驗性協議是否有效。解決 http 中的 隊首阻塞 問題 並行操作無需與伺服器建立多個連線,從而改進 tcp 的利用率,特別是擁塞控制方面 保持 http 1.1 的語義,利用...

HTTP 2 0 的那些事

spdy協議是google提出的基於傳輸控制協議 tcp 的應用層協議,通過壓縮 多路復用和優先順序來縮短載入時間。該協議是一種更加快速的內容傳輸協議,於2009 年年中發布。也可以把spdy看作是http 2的前身。spdy並不是首字母縮略字,而僅僅是 speedy 的縮寫。spdy現為googl...

你了解HTTP2 0嗎?

作為乙隻前端開發?http是我們知識地圖裡面必不可少的一部分,也是面試必問知識點。http2號稱可以讓我們的應用更快 更簡單 更穩定,它完美解決了1.1版本的諸多問題,本文和大家一起聊聊http2的改進點。正式講http2之前我們先講一下http的發展史。現在我們先不聊http2,看一下http發展...