HTTP/3 在野外的应用:为什么它在最关键的方面胜过 HTTP/2


简介

HTTP/3 是 HTTP 协议的下一个主要版本,它利用了 QUIC(一种新的基于 UDP 的传输协议),与依赖于 TCP 的前身(HTTP/1.1 和 HTTP/2)相比,它在性能和可靠性方面实现了显著的改进。本文探讨了 HTTP/3 的现实世界采用情况、其关键优势以及在哪些场景下它能提供最大的价值。

HTTP/3 为何因其回退机制而具有弹性

HTTP/3 的设计考虑了弹性,确保了在不支持新协议的网络中也能保持无缝的用户体验。这是通过一种优雅的回退机制实现的,该机制透明地切换到 HTTP/2,而不会中断用户连接。

浏览器和服务器通过以下方式协商 HTTP/3:

  1. DNS HTTPS/SVCB 记录:浏览器可以查询 DNS 记录,以发现服务器是否支持 HTTP/3。
  2. Alt-Svc 标头:服务器可以在 HTTP/2 响应中包含 alt-svc(备用服务)标头,向浏览器宣告其对 HTTP/3 的支持。
  3. 机会性 QUIC 连接:当浏览器连接到已知支持 HTTP/3 的服务器时,它会尝试机会性地建立 QUIC 连接。如果 QUIC 连接失败(例如,由于 UDP 阻塞或 NAT 问题),浏览器会默默地回退到基于 TCP 的 HTTP/2,而不会影响用户体验。
  4. TLS 握手中的 ALPN:在 TLS 握手期间,应用层协议协商(ALPN)用于协商 HTTP 版本。如果服务器支持 HTTP/3,它会通告 h3 ALPN 字符串。QUIC 握手可实现 1-RTT 连接(如果使用会话恢复,则为 0-RTT)。如果服务器不支持 h3,客户端会自动回退到 HTTP/2。
  5. 回退流程(通过 Wireshark 观察)
  6. 浏览器发送 A/AAAA 记录(也可能是 HTTPS/SVCB 或服务绑定记录)的 DNS 查询。
  7. 它尝试与目标 IP 和端口进行 QUIC 握手。
  8. 如果在短暂的超时窗口(通常为 300-500 毫秒)内未收到 QUIC 响应,浏览器会并行启动 TCP 握手。

关键洞察:浏览器会竞争 QUIC 和 TCP 连接。首先完成握手的连接将被使用:如果 QUIC 成功,则使用 HTTP/3。如果 QUIC 被阻塞或超时,则使用基于 TCP 的 HTTP/2。这种双重握手模型确保了机会性地尝试 HTTP/3,但在需要时能优雅地回退到 HTTP/2,而不会影响用户。


技术比较表

特性HTTP/1.1HTTP/2HTTP/3
传输协议TCPTCPUDP + QUIC
多路复用级别无(每个连接 1 个请求)应用层(多个流)传输层(QUIC 原生流)
并发请求/域约 6 个(浏览器限制)通过流无限通过流无限
队头阻塞在应用/浏览器级别是(TCP 级别的队头阻塞影响所有流)否(QUIC 避免了传输级别的队头阻塞)
性能(许多资产)排队和阻塞并行加载并行 + 在较差网络中表现更佳
TLS 支持可选/基于 TCP强制(TLS 1.2/1.3)内置(仅 TLS 1.3)
握手 RTT2-3 RTT(TCP + TLS)2-3 RTT1 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 在以下方面提供了最大的影响:

  1. 高延迟和高丢包率地区:非洲、东南亚、拉丁美洲偏远城市。
  2. 移动网络:在 LTE 和 Wi-Fi 之间频繁切换。
  3. API 密集的应用:多个并发的 fetch 调用受益于非阻塞多路复用。
  4. 性能至上的团队:致力于毫秒级改进的团队(例如核心 Web 指标)。


HTTP/3 的主要改进

指标中位数改进99 百分位改进
最大内容绘制 (ms)10.40%9.60%
视觉上完成 (ms)10.50%8.60%