HTTP/3 与 QUIC:现代 Web 传输如何工作
HTTP/3 是 HTTP 的一个版本,它使用 QUIC 取代了人们熟悉的 HTTP/2、TLS 和 TCP 组合。QUIC 运行在 UDP 之上,但增加了可靠的数据流、拥塞控制和安全的连接建立机制。仅仅支持 HTTP/3,并不能让每个页面都变快。
与 HTTP/2 相比有哪些变化
GET 等方法和响应码的含义保持不变;改变的是消息的传输方式。HTTP/2 在一个 TCP 连接上多路复用多个数据流。在传输层,一个 TCP 报文段丢失可能会延误其他数据流的数据交付。QUIC 自己管理多个数据流,因此一个数据流中的丢包不会以同样的方式拖住同一连接中的其他数据流。这在丢包较多的网络中可能有所帮助,但它无法消除物理距离,也无法弥补服务器的缓慢。
QUIC 把基于 TLS 1.3 的安全机制集成到了握手过程中。“基于 UDP”并不意味着以明文发送页面内容:HTTP/3 使用的是受保护的连接。部分重复连接可以省去一部分建立连接的延迟,具体取决于客户端和服务器已经掌握的信息。收益因实现和网络条件而异,而不是固定的速度提升。
443 端口与回退
HTTP/3 通常使用 UDP 443 端口;使用 HTTP/2 的 HTTPS 通常使用 TCP 443 端口。如果网络防火墙屏蔽了 UDP,QUIC 连接可能无法建立。此时客户端可以改用基于 TCP 的其他受支持 HTTP 版本。因此,屏蔽 UDP 443 不一定会导致网站无法访问,但可能影响性能,或让诊断变得令人困惑。TCP 443 端口检测并不能证明网站支持 HTTP/3。
浏览器开发者工具可以显示单个请求所使用的协议。不要只依赖主机服务商的功能列表:CDN、反向代理以及页面中嵌入的资源可能使用不同的连接。要验证线上网站,请使用支持相应协议的客户端发起请求,并查看实际协商的结果。还可以用 2IP 网站信息工具补充检查。
适用场景
在数据包丢失或移动设备切换网络路径时,只要实现支持相关机制,HTTP/3 就可能有所帮助。但它修复不了过大的图片、多余的脚本或缓慢的应用代码。请测量页面加载情况和用户体验,而不只是看协议标签。HTTP/3 和 QUIC 规范定义了相关细节。TCP 与 UDP 指南解释了底层传输协议的选择。