# HTTP/3與HTTP/2的比較
HTTP/3面向QUIC設計,QUIC是一個自己處理數據流的傳輸層協議。
HTTP/2面向TCP設計,因此數據流在HTTP層處理。
## 相似之處
這兩個協議為客戶端提供了幾乎相同的功能集。
- 兩者都提供數據流
- 兩者都提供服務器推送
- 兩者都有頭部壓縮,QPACK與HPACK的設計非常類似
- 兩者都通過單一連接上的數據流提供復用
- 兩者都提供數據流的優先度設置
## 不同之處
兩個協議的主要不同點在于細節,不同之處主要由HTTP/3使用的QUIC帶來。
- 得益于QUIC的0-RTT握手,HTTP/3可以提供更好的早期數據支持,而TCP快速打開和TLS通常只能傳輸更少的數據,且經常存在問題。
- 得益于QUIC,HTTP/3的握手速度比TCP+TLS快得多。
- HTTP/3不存在明文的不安全版本。盡管在互聯網上很少見,HTTP/2還是可以不配合HTTPS來實現和使用。
- 通過ALPN拓展,HTTP/2可以直接在TLS握手時進行協商。HTTP/3基于QUIC,所以需要憑借響應中的 `Alt-Svc:` 頭部來向客戶端宣告。