HTTP/3是最新的超文本傳輸協(xié)議,它是基于QUIC(Quick UDP Inte.NET Connections)協(xié)議開發(fā)的。HTTP/3是HTTP/2的后繼者,可以有效地提高網頁加載速度、改善安全性,并提供更好的流控制功能。
HTTP/3是由Internet Engineering Task Force(IETF)標準化的,旨在通過重新設計協(xié)議來克服TCP協(xié)議的一些限制。QUIC協(xié)議可以提供比TCP更高的可靠性(盡管QUIC 基于 UDP,但它在應用層實現(xiàn)了可靠的傳輸機制,如數(shù)據(jù)包確認、重傳、擁塞控制等)和更好的性能(這是因為它是基于UDP協(xié)議而不是TCP協(xié)議構建的)。
相比于HTTP/2,HTTP/3有許多新的特性和改進。例如,HTTP/3使用QUIC協(xié)議中的快速連接建立機制,可以更快地建立連接。另外,HTTP/3可以同時處理多個請求和響應,從而提高了并發(fā)處理能力。
HTTP/3的特性
HTTP/3 在保留 HTTP/2 的許多優(yōu)點的基礎上,引入了一系列新特性和改進。以下是 HTTP/3 的主要特性:
- 基于 QUIC 協(xié)議:HTTP/3 放棄了基于 TCP 的底層傳輸協(xié)議,而選擇了 QUIC(Quick UDP Internet Connections)協(xié)議。QUIC 是一個基于 UDP 的可靠傳輸協(xié)議,設計用于解決 TCP 在高延遲和丟包率較高的網絡環(huán)境下的性能問題。QUIC 的引入使 HTTP/3 具有更低的延遲和更好的擁塞控制能力。
- 避免隊頭阻塞:TCP 傳輸中,一個連接的數(shù)據(jù)包丟失會導致后續(xù)的數(shù)據(jù)包被阻塞,即使它們屬于不同的請求。這稱為隊頭阻塞(Head-of-line blocking)。QUIC 通過在單個連接中多路復用請求來解決這個問題。在 QUIC 中,一個數(shù)據(jù)包的丟失不會影響其他獨立流的數(shù)據(jù)傳輸。
- 快速建立連接:TCP 需要一個三次握手過程來建立連接,而且在使用 TLS 時還需要額外的往返。QUIC 支持零往返時間(0-RTT)連接建立,可以顯著降低連接建立所需的時間,尤其是在高延遲的網絡環(huán)境下。
- 內置加密:QUIC 協(xié)議將加密作為其核心功能,不再依賴單獨的 TLS 層。這不僅可以提高安全性,而且可以簡化協(xié)議棧,提高傳輸性能。
- 更好的擁塞控制:QUIC 實現(xiàn)了更先進的擁塞控制算法,能夠更好地應對網絡擁塞,提高數(shù)據(jù)傳輸速率。
- 易于升級和擴展:QUIC 設計為模塊化和可擴展的協(xié)議,這使得在不改變底層網絡基礎設施的情況下,更容易地實現(xiàn)協(xié)議升級和添加新功能。
HTTP/3的實現(xiàn)
HTTP/3的實現(xiàn)基于QUIC(Quick UDP Internet Connections),這是一種基于UDP協(xié)議的新型傳輸協(xié)議。QUIC是由google于2012年開始開發(fā)的,旨在替代TCP協(xié)議,用于提高Web應用程序的性能和安全性。QUIC相比TCP協(xié)議,具有以下優(yōu)勢:
- 連接建立速度更快:QUIC會在連接建立時通過加密和認證的方式驗證服務器和客戶端之間的身份,避免了TLS握手的開銷,從而可以更快地建立連接。
- 抗丟包能力更強:QUIC可以在一個連接上并行傳輸多個數(shù)據(jù)流,其中一個數(shù)據(jù)流發(fā)生丟包并不會影響其他數(shù)據(jù)流的傳輸。
- 降低延遲:QUIC采用了類似于TCP Fast Open的機制,可以在第一次握手時傳輸數(shù)據(jù),從而降低了首次請求的延遲。
HTTP/3基于QUIC實現(xiàn)的主要目的是提高性能和安全性。QUIC協(xié)議的特點,如連接建立速度快、抗丟包能力強、降低延遲等,都可以通過HTTP/3來發(fā)揮。此外,HTTP/3在數(shù)據(jù)傳輸過程中采用了TLS 1.3協(xié)議加密數(shù)據(jù),更加安全可靠。
在實現(xiàn)上,HTTP/3使用了與HTTP/2相同的API接口,使得應用程序可以在不修改代碼的情況下切換到HTTP/3。但由于HTTP/3使用了不同的傳輸協(xié)議,所以底層的實現(xiàn)細節(jié)與HTTP/2有所不同。
目前,HTTP/3的實現(xiàn)主要是由谷歌和互聯(lián)網工程任務組(IETF)推進。IETF于2020年2月宣布QUIC進入正式標準化流程,HTTP/3也在2022年6月6號正式標準化。
HTTP/3 與 HTTP/2 的比較
- 底層傳輸協(xié)議
HTTP/2 依賴于 TCP 作為底層傳輸協(xié)議,而 HTTP/3 則選擇了基于 UDP 的 QUIC 協(xié)議。這使得 HTTP/3 具有更低的延遲和更好的擁塞控制能力,尤其是在不穩(wěn)定的網絡環(huán)境中。
- 多路復用
HTTP/2 和 HTTP/3 都支持多路復用,即允許在單個連接中同時傳輸多個請求和響應。然而,它們實現(xiàn)多路復用的方式有所不同。HTTP/2 使用基于幀的流來分隔不同的請求和響應,而 QUIC 使用完全獨立的流。這使得 HTTP/3 能夠避免隊頭阻塞問題,提高傳輸效率。
- 連接建立
HTTP/2 依賴于 TCP 的三次握手來建立連接,并在使用 TLS 時需要額外的往返。相比之下,QUIC 支持零往返時間(0-RTT)連接建立,可以顯著降低連接建立所需的時間。
- 加密
HTTP/2 通過單獨的 TLS 層來實現(xiàn)加密,而 HTTP/3 的 QUIC 協(xié)議將加密作為其核心功能,不再依賴單獨的 TLS 層。這不僅可以提高安全性,而且可以簡化協(xié)議棧,提高傳輸性能。
- 擁塞控制策略
HTTP/2 依賴于 TCP 的擁塞控制策略,而 HTTP/3 的 QUIC 協(xié)議實現(xiàn)了更先進的擁塞控制算法,能夠更好地應對網絡擁塞,提高數(shù)據(jù)傳輸速率。
以下是專業(yè)人士做的HTTP/2 和 HTTP/3 的單次請求性能對比:
|
小網站 |
內容網站 |
單頁面網站 |
HTTP/2 |
500ms |
1000ms |
600ms |
HTTP/3 |
100ms |
675ms |
300ms |
不過想用上HTTP/3還需要很長的時間,畢竟現(xiàn)在HTTP/2也還未全部推廣。