Skip to main content

Http3 與 Http2 的比較分析

比較分析

HTTP2和HTTP3都是HTTP協議的版本,分別代表了網路通信的不同階段。HTTP2在2015年被引入,而HTTP3則在2020年正式發布。這兩種協議各有其特點和優勢,但也有一些關鍵的不同。本文將對比分析這兩種協議的主要特性。

  1. 傳輸協議:HTTP2使用的是TCP傳輸協議,而HTTP3則選擇了QUIC(Quick UDP Internet Connections)作為其傳輸協議。QUIC是基於UDP的傳輸協議,它解決了TCP的一些問題,例如頭部阻塞,並且提供了更好的多路復用,並且可以更快地建立連接。

  2. 連接建立:HTTP2需要進行多輪的TCP握手以及TLS協商,這可能會導致連接建立的延遲。而HTTP3由於使用了QUIC協議,可以在一輪握手中完成連接建立和安全協商,大大提高了連接的建立速度。

  3. 頭部壓縮:HTTP2引入了HPACK頭部壓縮算法,用於減少請求和回應的頭部大小,以節省帶寬。而HTTP3則使用了新的QPACK頭部壓縮算法,它進一步改進了頭部壓縮,並且避免了HPACK的頭部阻塞問題。

  4. 服務器推送:HTTP2提供了服務器推送功能,允許服務器在客戶端請求之前就將資源推送到客戶端。然而,HTTP3並未保留這個功能,原因是實際使用中,服務器推送並未帶來預期的性能提升。

  5. 安全性:HTTP3由於使用了QUIC協議,因此在安全性上有所提升。QUIC協議內建了TLS 1.3,提供了更強的加密和身份驗證,並且對於連接的隱私保護也有所改進。

總結,HTTP3與HTTP2相比,提供了更快的連接建立、更高效的頭部壓縮、更強的安全性。然而,由於HTTP3還在早期階段,並且需要更多的支援和測試,因此目前HTTP2仍然是主流的HTTP協議。隨著時間的推移,我們期待看到HTTP3的更廣泛的應用和更多的優勢。

2019年9月,HTTP/3支援已添加到CloudflareGoogle Chrome(Canary build)。Firefox Nightly在2019年秋季之後添加支援。[4]

2022年6月6日,IETF正式標準化HTTP/3為RFC9114[5]

TCP頭部阻塞

TCP 頭部阻塞(Head-of-line blocking)是一種網路傳輸中的問題,這種情況下,一系列的資料包必須按照他們被發送的順序來被接收。如果一個資料包在傳輸過程中被延遲或丟失,後續的資料包即使已經到達,也必須等待丟失的資料包被重新傳輸並到達後才能被處理。這就像一個排隊的過程,即使後面的人已經準備好了,但是如果前面的人還沒有完成他們的事情,後面的人就必須等待。

這種情況在 TCP 協議中尤其明顯,因為 TCP 協議要求資料必須按照順序傳輸,如果一個資料包丟失,則需要等待這個資料包被重新傳輸並成功接收後,才能繼續處理後續的資料包,這就造成了 TCP 的頭部阻塞問題。

TCP 頭部阻塞的問題會導致網路傳輸效率降低,並可能導致延遲增加。為了解決這個問題,網路工程師們提出了許多解決方案,例如使用多個並行的 TCP 連接,或者使用支持非順序傳輸的協議,如 QUIC 協議等。

TCP 协议有哪些缺陷? - 小林coding - 博客园 在這篇文章中有提到 TCP 所遇到的缺點,明的蠻細的。 不只有 TCP 頭部阻塞的問題

QUIC

什么是 QUIC?它如何提升 HTTP/3? - CDNetworks 隨著物連網的發達,傳送資訊主要會是透過無限網路的方式,所以 TCP 的傳遞遇到了很多的問題。所以才改用到 QUIC 的 傳遞方式

QUIC(Quick UDP Internet Connections)是一種由 Google 提出的網路傳輸層協定,旨在解決網路傳輸速度的問題。QUIC 的主要特點是能夠提供比 TCP 更快的連接建立時間,並且能夠在網路狀態變化時保持連接。這是因為 QUIC 是基於 UDP 而非 TCP 實現的,因此可以避免 TCP 的一些問題,如頭塞問題,並且可以更好地適應網路狀態的變化。

QUIC 還支援多路徑傳輸,這意味著它可以同時使用多個網路接口(例如 Wi-Fi 和 4G)來傳輸數據。此外,QUIC 還內建了傳輸層安全性(TLS),因此可以提供與 HTTPS 相同的安全性,但是連接建立的延遲更少。

總的來說,QUIC 是一種新的網路傳輸協定,旨在提高網路傳輸的速度和效率,並且提供更好的安全性。

New – HTTP/3 Support for Amazon CloudFront | AWS News Blog

Site Unreachable