HTTP/3 与 QUIC
作为现代 Web 的未来,HTTP/3 和其底层协议 QUIC 正在改变我们与万维网的互动方式。它们特别致力于解决 HTTP/2 时代暴露出的延迟和多路复用相关问题。
什么是 HTTP/3?
HTTP/3 是 HTTP 协议的第三个主要版本。它并没有改动 HTTP 的基本语义(如方法、状态码和头部字段),但彻底改变了其实现 底层传输协议。
什么是 QUIC (Quick UDP Internet Connections)?
QUIC 是由 Google 开发的一种基于 UDP 的新型多路复用传输协议。HTTP/3 就是运行在 QUIC 之上的。
核心特性
- 基于 UDP: 弃用了 TCP。
- 低延迟连接建立: 合并了传输握手与加密握手 (TLS 1.3),通常只需 1 个 RTT (Round Trip Time)。
- 连接迁移 (Connection Migration): 如果您的网络连接从 Wi-Fi 切换到 4G,连接也不会断开,因为它不以 IP 为标识。
- 改进的多路复用: 各个流之间互不重叠。
为什么要换成 HTTP/3?
HTTP/2 虽然提高了效率,但仍然依赖 TCP,这导致了两个主要问题:
1. 线头阻塞 (Head-of-Line Blocking, HOL)
在 HTTP/2 中,如果 TCP 连接中的一个数据包丢失,整个连接都会被阻塞,直到该包被重传。QUIC 解决了这个问题:即使某个流的数据丢失,其他流仍然可以独立传输。
2. TLS 握手延迟
HTTP/3 将 TLS 1.3 深度集成到了握手过程中。
HTTP/1.1 vs HTTP/2 vs HTTP/3 对比
| 特性 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 传输协议 | TCP | TCP | UDP (QUIC) |
| 多路复用 | 串行 (或连接池) | 二进制流 (存在 HOL) | 完全并发 (无 HOL) |
| 连接建立 | TCP 握手 + TLS 握手 | TCP 握手 + TLS 握手 | 1-RTT 组合握手 |
| 安全性 | 可选 TLS | 事实上强制 TLS | 强制内置 TLS 1.3 |
| 移动支持 | 较弱 | 较弱 | 连接迁移 (IP 改变不断开) |
结论
HTTP/3 提供了极佳的网络稳定性,尤其是在弱网(丢包率高)或移动端切换网络的环境下。目前,大部分现代浏览器(如 Chrome, Edge, Safari)和知名 CDN(如 Cloudflare)均已默认支持。