HTTP/3 在野外的应用:为什么它在最关键的方面胜过 HTTP/2
2025-06-24 15:13:16 +0000 UTC
Art
简介
HTTP/3 是 HTTP 协议的下一个主要版本,它利用了 QUIC(一种新的基于 UDP 的传输协议),与依赖于 TCP 的前身(HTTP/1.1 和 HTTP/2)相比,它在性能和可靠性方面实现了显著的改进。本文探讨了 HTTP/3 的现实世界采用情况、其关键优势以及在哪些场景下它能提供最大的价值。
HTTP/3 为何因其回退机制而具有弹性
HTTP/3 的设计考虑了弹性,确保了在不支持新协议的网络中也能保持无缝的用户体验。这是通过一种优雅的回退机制实现的,该机制透明地切换到 HTTP/2,而不会中断用户连接。
浏览器和服务器通过以下方式协商 HTTP/3:
- DNS HTTPS/SVCB 记录:浏览器可以查询 DNS 记录,以发现服务器是否支持 HTTP/3。
- Alt-Svc 标头:服务器可以在 HTTP/2 响应中包含
alt-svc
(备用服务)标头,向浏览器宣告其对 HTTP/3 的支持。 - 机会性 QUIC 连接:当浏览器连接到已知支持 HTTP/3 的服务器时,它会尝试机会性地建立 QUIC 连接。如果 QUIC 连接失败(例如,由于 UDP 阻塞或 NAT 问题),浏览器会默默地回退到基于 TCP 的 HTTP/2,而不会影响用户体验。
- TLS 握手中的 ALPN:在 TLS 握手期间,应用层协议协商(ALPN)用于协商 HTTP 版本。如果服务器支持 HTTP/3,它会通告
h3
ALPN 字符串。QUIC 握手可实现 1-RTT 连接(如果使用会话恢复,则为 0-RTT)。如果服务器不支持h3
,客户端会自动回退到 HTTP/2。 - 回退流程(通过 Wireshark 观察):
- 浏览器发送 A/AAAA 记录(也可能是 HTTPS/SVCB 或服务绑定记录)的 DNS 查询。
- 它尝试与目标 IP 和端口进行 QUIC 握手。
- 如果在短暂的超时窗口(通常为 300-500 毫秒)内未收到 QUIC 响应,浏览器会并行启动 TCP 握手。
关键洞察:浏览器会竞争 QUIC 和 TCP 连接。首先完成握手的连接将被使用:如果 QUIC 成功,则使用 HTTP/3。如果 QUIC 被阻塞或超时,则使用基于 TCP 的 HTTP/2。这种双重握手模型确保了机会性地尝试 HTTP/3,但在需要时能优雅地回退到 HTTP/2,而不会影响用户。
技术比较表
特性 | HTTP/1.1 | HTTP/2 | HTTP/3 |
传输协议 | TCP | TCP | UDP + QUIC |
多路复用级别 | 无(每个连接 1 个请求) | 应用层(多个流) | 传输层(QUIC 原生流) |
并发请求/域 | 约 6 个(浏览器限制) | 通过流无限 | 通过流无限 |
队头阻塞 | 在应用/浏览器级别 | 是(TCP 级别的队头阻塞影响所有流) | 否(QUIC 避免了传输级别的队头阻塞) |
性能(许多资产) | 排队和阻塞 | 并行加载 | 并行 + 在较差网络中表现更佳 |
TLS 支持 | 可选/基于 TCP | 强制(TLS 1.2/1.3) | 内置(仅 TLS 1.3) |
握手 RTT | 2-3 RTT(TCP + TLS) | 2-3 RTT | 1 RTT(恢复时为 0-RTT) |
0-RTT 支持 | 否 | 否 | 是(在恢复的连接上) |
IP 移动性/NAT 重新绑定 | 否 | 否 | 是(通过 QUIC 连接 ID) |
连接恢复 | TLS 会话 ID/票证 | TLS 会话恢复 | QUIC 原生连接 ID |
连接重用 | 有限 | 是 | 是 |
流优先级 | 否 | 是 | 是 |
加密要求 | 否 | 通常强制执行 | 始终(QUIC 设计为加密) |
浏览器/CDN 支持 | 通用 | 完全支持 | 快速增长(Chrome、Safari 等) |
丢包行为 | 影响整个连接 | 影响所有多路复用流 | 隔离到单个流 |
最佳用例 | 旧系统、向后兼容性 | 稳定网络上的通用 Web 流量 | 现代应用、移动、有损或高延迟网络 |
现实世界采用:HTTP/3 正在加速
根据行业数据(HTTP Archive、W3Techs):
年份 | HTTP/2 采用率 | HTTP/3 采用率 |
2022 | 约 63% | 约 22%(作为 QUIC) |
2023 | 约 64% | 约 28% |
2024 | 约 50% | 约 34% |
2025(预计) | 约 62.5% | 约 41.5% |
2026(预计) | 约 52.5% | 约 57.5% |
像 Cloudflare、Fastly 和 Akamai 这样的 CDN 现在默认启用 HTTP/3。Chrome、Firefox、Safari 和 Edge 都支持 HTTP/3。启用 HTTP/3 的网站呈增长趋势,尤其是在注重性能的地区。
HTTP/3 在哪些方面最重要
根据我们的经验和现实世界测试,HTTP/3 在以下方面提供了最大的影响:
- 高延迟和高丢包率地区:非洲、东南亚、拉丁美洲偏远城市。
- 移动网络:在 LTE 和 Wi-Fi 之间频繁切换。
- API 密集的应用:多个并发的
fetch
调用受益于非阻塞多路复用。 - 性能至上的团队:致力于毫秒级改进的团队(例如核心 Web 指标)。
HTTP/3 的主要改进
指标 | 中位数改进 | 99 百分位改进 |
最大内容绘制 (ms) | 10.40% | 9.60% |
视觉上完成 (ms) | 10.50% | 8.60% |