奧推網

選單
科技

HTTP3 釋出!

整理 | 蘇宓

出品 | CSDN(ID:CSDNnews)

6 月 6 日,IETF QUIC(Internet Engineering Task Force,網際網路工程任務組,簡稱 IETF)、比利時的 HTTP 工作組成員 Robin Mark 在 Twitter 上宣佈“歷時 5 年,HTTP/3 終於被標準化為 RFC 9114。將與 RFC 9204(QPACK header 壓縮)和 RFC 9218 (可擴充套件的優先順序)一起開啟 Web 的新篇章!”,這意味著該協議已經進入了穩定的狀態,而 HTTP/3 是 HTTP 超文字傳輸協議的第三個主要版本。

同時 HTTP/2 也更新為新的 RFC 9113 標準。

基於 QUIC 的 HTTP/3

據官方介紹,HTTP/3 是基於 QUIC 的,那麼,QUIC 究竟是什麼?

正如 IEFT 在簡介中寫道:

QUIC 傳輸協議具有 HTTP 傳輸所需的幾個特性,例如多路複用、流量控制、每個流的流控制和低延遲連線建立。

簡單來看,QUIC 是一個通用的傳輸層網路協議,是由 Google 在 2012 年實現並部署,最後在 2013 年向公眾公開發布。之所以開發 QUIC,Google 的初衷是解決傳輸控制協議(TCP)需要幾次來回才能建立連線並開始傳輸資料的事實。原有的協議產生的連線和傳輸延遲時間較長,帶來了較差的使用者體驗。QUIC 改為使用使用者資料報協議 (UDP) 來傳輸流量。UDP 減少了客戶端和伺服器之間的往返次數,因此可以加快傳輸速度,這一點在行動網路上非常重要。

當前,業界已經陸續有不少公司用上了 QUIC 協議。其中,谷歌就非常喜歡 QUIC,以至於在 2020 年其將 QUIC 應用到了 Chrome 瀏覽器中,並在 Google 伺服器所有的連線中,有一半以上使用了 QUIC。

此外,Cloudflare 在 2018 年也將 QUIC 作為網路協議選項。微軟也非常喜歡 QUIC,它不僅建立了自己的版本,還將其開源出來(https://techcommunity。microsoft。com/t5/networking-blog/msquic-is-open-source/ba-p/1345441)。NGINX 增加了 HTTP/3 支援。

為什麼放著大流行的 HTTP/2 不用,而選擇 HTTP/3?

雖然 HTTP/3 作為新一代超文字傳輸協議,要比第二代更為先進一些,但 HTTP/2 在 2015 年才被標準化,且據 Cloudflare 資料顯示,HTTP/2 仍然是應用最為廣泛的 HTTP 版本,排在第二的 HTTP/3 流行度要比 HTTP/2 差了很多。那麼,IETF 為什麼如此緊急地推出了 HTTP/3 來代替?

對此,HTTP 工作組成員 Robin Mark 專門寫了一篇稿件解釋道,「一開始我們並不需要一個新的 HTTP 版本,而是要讓底層傳輸控制協議(TCP)實現升級」。

其表示,幾十年來,TCP 作為網路基石,是網際網路上使用和部署最廣泛的協議之一,但是在網際網路早期就已經出現的 TCP 並沒有真正考慮到最大效率的問題。相較之下,新傳輸協議 QUIC 便被眾人賦予期望。

然而,如果把 QUIC 直接執行在 HTTP/2 上有一定難度,因為其在很多特性上與 TCP 有著很大的不同。於是,HTTP 工作組便在幾個關鍵領域進行了調整,使其與 QUIC 相容。這個調整後的版本最終被命名為 HTTP / 3,之所以如此命名,主要原因是出於營銷和方便使用者更加清晰地識別出來區別。

簡單來看,HTTP/3 本身就是對 HTTP/2 相對較小的改編,以使其與新的 QUIC 協議相容。因此,HTTP/1。1 和 HTTP/2 之間的差異要比 HTTP/2 和 HTTP/3 之間的差異要大得多。

這樣一來,HTTP/3 也被很多人詬病,如 Apache 推遲了將協議新增到其 Web 伺服器,它認為自己的 HTTPD 做得很好。也有部分隱私倡導者擔心 QUIC,他們發現 QUIC 承諾的速度提升難以捉摸。

不過,無論如何,HTTP/3 進入標準化,也是 HTTP 發展歷程中重要的一個里程碑事件。如果你對 HTTP/3 也感興趣,不妨透過官方介紹瞭解更多內容:https://www。rfc-editor。org/info/rfc9114

參考:

https://www。theregister。com/2022/06/07/http3_rfc_9114_published/

https://www。smashingmagazine。com/2021/08/http3-core-concepts-part1/