HTTP/3 為什麼正迅速吞噬世界?

2023-11-14     InfoQ

原標題:HTTP/3 為什麼正迅速吞噬世界?

作者 | Robin Marx

譯者 | 核子可樂

策劃 | 丁曉昀

超文本傳輸協議(HTTP)作為網際網路的基石,一直在網頁加載、視頻流傳輸、應用獲取數據等方方面面發揮重要作用。

去年,負責定義網際網路技術的網際網路工程任務組(IETF)將該協議的最新版本 HTTP/3 定為標準。在此之後,HTTP.3 及相關 QUIC 協議在公共網絡上迅速普及。儘管不同來源和測量方法給出的結果略有差別,但目前普遍認為全球 19% 到 50% 的 Web 伺服器和網絡均已支持 HTTP/3。

由於這些新協議得到谷歌和 Meta 等大公司的廣泛應用,我們認為,當前網際網路流量中已經有很大一部分在使用 HTTP/3。

在本篇文章中,我將介紹一些背景信息,介紹 HTTP/3 解決了哪些問題、它是如何執行的、為什麼能夠得到迅速普及,以及 HTTP/3 仍然面臨哪些有待克服的障礙。

1我們為什麼需要 HTTP/3?

網絡協議所描述的,是數據如何在網絡上的兩個實體之間(通常是用戶設備和 Web 伺服器)進行通信。因為市場上有多家公司在為網絡開發軟體,因此通信協議必須確保標準化,以便所有軟體之間都可以「互操作」。換句話說,各軟體能夠在遵循相同規則的基礎之上相互理解。

在實踐當中,我們往往不會使用單一某種協議,而是同時使用多種協議的組合。其中各項協議都有自己的作用和規則(詳見圖一)。這樣的設計是為了保障靈活性和可復用性——無論大家使用的是 Wi-Fi、固網還是 4G/5G,都能使用完全相同的 HTTP 邏輯。

圖 1 HTTP/2 與 HTTP/3 的協議棧,如何將多項協議組合起來以提供完整的網際網路功能

不少初期網際網路協議早在上世紀 80、90 年代就已經被定為標準,這意味著它們在設計上考慮的是幾十年前的需求和限制。雖然其中一些協議經受住了時間的考驗,但也有不少已經明顯有些過時了。大多數問題倒是可以通過變通和一些小技巧進行解決,可也有一些到了不得不變的時候。其中最典型的就是傳輸控制協議(TCP),它的作用是確保數據能夠可靠地在網際網路上往來傳輸。

2為什麼說 TCP 已經不適合如今的 Web

HTTP/1.1 和 HTTP/2 正常運作的前提,就是以 TCP 為基礎。具體來講,在客戶端和伺服器間交換 HTTP 請求 / 響應之前,必須先建立起 TCP 連接。

隨著時間推移,人們做出了不少努力來更新 TCP,並解決其中一些影響效率的問題——例如,TCP 會將網頁視為單個文件,而非由數百個獨立文件構成的集合。雖然部分更新已經取得成功,但多數影響較大的更新(例如 TCP 多路徑和 TCP Fast Open)花了近十年時間才在公共網際網路上實際落地。

革新 TCP 的主要挑戰,在於網際網路上成千上萬的設備各有各的 TCP 協議實現。除了大家第一時間能想到的手機、筆記本電腦和伺服器,還有路由器、防火牆、負載均衡器等其他類型的「中間裝置」。也就是說,如果我們想要更新 TCP,就必須等待這些設備中的大部分都對自己的協議實現做更新,而這明顯是個需要耗時數年的艱辛過程。

QUIC 解決方案

面對這個幾乎無解的問題,最靠譜的辦法反而是直接出台一種全新方案、直接替換掉 TCP。這套替代方案就是 QUIC 協議,但也有不少人半開玩笑地將其稱為 TCP 2.0。這個暱稱其實並無不妥,因為 QUIC 中確實包含許多與 TCP 相同的高級功能,只是做了一系列關鍵性調整。

其中最大的變化就是 QUIC 與傳輸層安全(TLS)協議的深度集成。TLS 負責加密網絡上的敏感數據,也就是 HTTPS 中的 S(安全)。在 TCP 協議下,TLS 僅加密實際 HTTP 數據(參見圖二);對於 QUIC,TLS 還會對 QUIC 協議本身的大部分內容進行加密。也就是說,TCP 當中對所有中間件均可見(且可更改)的元數據(例如數據包編號、連接關閉信號等),在現在的 QUIC 中將僅供客戶端和伺服器使用。

圖 2 TCP+TLS 與 QUIC 之間的加密差異。可以看到,QUIC 中被加密的不僅僅是 HTTP 數據

此外,由於 QUIC 的加密程度更高,所以對它的變更或新功能添加要比 TCP 簡單得多——即只需要更新客戶端和伺服器,因為中間件無論如何也無法解密元數據。這就讓 QUIC 成為一種面向未來的協議,能幫助我們快速解決種種新興挑戰。

當然,這種額外的加密機制也有助於增強新協議的總體安全性和隱私性。雖然 TCP+TLS 非常適合保護信用卡或電子郵件內容等個人敏感數據,但卻仍容易受到複雜(隱私)攻擊的影響。而且隨著 AI 技術的快速發展,這些攻擊的實施門檻也越來越低。通過進一步加密此類元數據,QUIC 協議無疑能夠更好地應對精心策劃的惡意攻擊。

QUIC 還包含諸多其他與安全相關的功能,包括防禦分布式拒絕服務(DDoS)攻擊、以及防放大和 RETRY 數據包等功能。

最後,與 TCP 相比,QUIC 還帶來了大量效率和性能改進,包括更快的連接握手(參見圖三)、消除「隊頭阻塞」問題、更好的數據包丟失檢測 / 恢復,以及處理用戶切換網絡的方法(我們將在後續文章中具體介紹)。

圖 3 QUIC 在設置上擁有更快的連接速度,因為它能將「傳輸」三向握手與 TLS 加密會話相結合,性能優於 TCP+TLS 中的兩個獨立過程

3我們真正需要的並不是 HTTP/3,而是 QUIC

最初,我們也曾嘗試保留 HTTP/2 並進行增量式調整,希望能在底層用上 QUIC(畢竟當初保留這麼多協作元素和可復用協議,意義也就在於此)。但很明顯,QUIC 與 TCP 之間存在著巨大差異,HTTP/2 根本無法全部兼容。因此,網際網路工程任務組才決定專門為 QUIC 製作新的 HTTP 版本,這就是現在的 HTTP/3。

HTTP/3 與 HTTP/2 幾乎相同,二者的主要區別就體現在 QUIC/TCP 之上各項功能的技術實現。但由於 HTTP/3 能夠使用 QUIC 的全部新功能,因此在加載網頁和流媒體視頻時將帶來更好的性能表現。也正是這個優勢,讓 HTTP/3 得到了市場的廣泛認可和快速接納。

原文連結:

https://blog.apnic.net/2023/09/25/why-http-3-is-eating-the-world/

相關閱讀:

HTTP/3 發布了,我們來談談 HTTP/3

從 HTTP 到 HTTP/3 的發展簡史

HTTP/3 與 HTTP/2 的性能對比

基於 QUIC 協議的 HTTP/3 正式發布 (https://www.infoq.cn/article/SOtQV5xLEI6KBdjYyI0y?utm_campaign)

聲明:本文由 InfoQ 翻譯,未經許可禁止轉載。

點擊底部閱讀原文訪問 InfoQ 官網,獲取更多精彩內容!

今日好文推薦

丟掉 LangChain、像 Docker一樣編排大模型應用程式:這支十餘人的年輕創業團隊如何在2個月做出一個LLMOps平台?

僅憑 7 頁 PPT 拿下 1 億美元融資、半年後估值超 10 億!「歐洲 OpenAI」殺瘋了

易鯨捷否認貼牌 Oracle;鴻蒙進教材:「純血」版不再兼容安卓應用;大叔們遭AI女友「斷崖式分手」 | Q 資訊

向量資料庫失寵了?OpenAI 力捧檢索增強生成(RAG)技術,對行業來說意味著什麼?

文章來源: https://twgreatdaily.com/zh-hk/f0a19b45357c7801e7f64228dc32c847.html