HTTP/3
来自维基百科,自由的百科全书
HTTP/3是HTTP协议的第三个主要版本,用于在万维网上交换信息。与之前版本(HTTP/1.1和HTTP/2)不同,HTTP/3不依赖TCP协议,转为使用基于UDP协议的多路复用传输协议QUIC协议实现。[1]
![]() | 此条目需要精通或熟悉计算机科学的编者参与及协助编辑。 (2025年3月18日) |
此变化主要为了解决HTTP/2中存在的队头阻塞问题。由于HTTP/2在单个TCP连接上使用了多路复用,受到TCP拥塞控制的影响,少量的丢包就可能导致整个TCP连接上的所有流被阻塞。
与该协议的早期版本相比,HTTP/3使用相似的语义,包括相同的请求方法、状态代码和消息字段,但编码方式和会话状态的维护方式有所不同。然而,部分由于该协议采用了QUIC,与之前的版本相比,HTTP/3在实际使用中具有更低的延迟和更快的加载速度:在某些情况下,速度是HTTP/1.1(是许多网站唯一部署的HTTP版本)的四倍以上。[2][3]
截至2024年9月,超过95%的主流网络浏览器支持HTTP/3[4],并且在排名前1000万的网站中,有34%的网站支持HTTP/3。[5]
历史

HTTP/3起源于QUIC工作组采纳的互联网草案。最初的提案名为“HTTP/2 Semantics Using The QUIC Transport Protocol”[6](使用QUIC传输协议的HTTP/2语义),后来更名为“Hypertext Transfer Protocol (HTTP) over QUIC”[7]。
在2018年10月28日的一次邮件列表讨论中,IETF HTTP和QUIC工作组主席Mark Nottingham提议将HTTP-over-QUIC更名为HTTP/3,以“清晰地表明它是HTTP语义到线路协议的另一种绑定方式……让人们意识到其与QUIC的分离”。[8]Nottingham的提议在几天后被其他IETF成员接受。[9]HTTP工作组受命在HTTP/3的设计期间协助QUIC工作组,然后在发布后承担维护责任。[10]
Chrome(Canary build)在2019年9月添加了对HTTP/3的支持,然后最终在稳定版本中实现,但默认情况下通过功能标志禁用。它在2020年4月默认启用。[11]Firefox在2019年11月通过功能标志添加了对HTTP/3的支持[4][12][13],并于2021年4月在Firefox 88中开始默认启用。[4][14]2020年4月8日在Safari Technology Preview中添加了对HTTP/3的实验性支持[15],并包含在随iOS 14和macOS 11一起发布的Safari 14中[16][17],但截至macOS和iOS上的Safari 16,它仍然默认禁用。[来源请求]
相较于HTTP/1.1与HTTP/2
不同HTTP版本之间的语义保持一致,如请求方法、状态代码和消息字段等通常在所有版本中都适用。差异在于这些语义到底层传输的映射。HTTP/1.1和HTTP/2都使用TCP作为其传输协议。HTTP/3采用QUIC,一种传输层网络协议,基于用户数据报协议(UDP)实现了用户空间拥塞控制。QUIC的引入旨在解决HTTP/2中被称为 “队头阻塞” 的主要问题:由于HTTP/2多路复用的并行性对TCP的丢失恢复机制是不可见的,因此一旦发生数据包丢失或重排序,所有活跃的事务都会停滞,无论该事务是否受到丢失数据包的影响。相较之下,QUIC提供了原生多路复用,因此丢包只会影响数据真正丢失的那些流。
提议的DNS资源记录SVCB(由服务绑定)和HTTPS将允许在不首先通过先前的HTTP版本接收Alt-Svc标头的情况下进行连接,从而消除TCP握手的1个RTT。[18][19]自Firefox 92、iOS 14、报告的Safari 14支持以来,以及Chromium在标志后支持HTTPS资源记录。[20][21][22]
实现
为 QUIC and HTTP/3 实现了客户端或服务器逻辑的开源库有[28]
- 2021年6月7日,LiteSpeed Web Server(及OpenLiteSpeed)6.0.2版本发布,并成为默认启用HTTP/3的首个版本。[34]
- Caddy网页服务器v2.6.0(2022年9月20日发布)默认启用了HTTP/3。[35]
- Nginx自1.25.0版本(2023年5月23日发布)开始支持HTTP/3。2020年6月,发布了支持HTTP/3的nginx技术预览版。[36] 2023年2月,发布了支持HTTP/3的nginx二进制包。[37]
- Cloudflare在2019年发布了一个补丁,该补丁将quiche HTTP/3库集成到nginx中。[38]
- Microsoft IIS在Windows Server 2022/Windows 11上原生支持HTTP/3。[39]
- HAProxy自2.6版本(2022年5月31日发布)起支持HTTP/3 over QUIC。[40][41]
- Nimble Streamer中基于HTTP的协议自4.1.8-1[42]开始支持HTTP/3。
参考资料
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.