HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1和HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议实现。[1]
此变化主要为了解决HTTP/2中存在的队头阻塞问题。由于HTTP/2在单个TCP连接上使用了多路复用,受到TCP拥塞控制的影响,少量的丢包就可能导致整个TCP连接上的所有流被阻塞。
QUIC(快速UDP网络连接)是一种实验性的网络传输协议,由Google开发,该协议旨在使网页传输更快。在2018年10月28日的邮件列表讨论中,互联网工程任务组(IETF) HTTP和QUIC工作组主席Mark Nottingham提出了将HTTP-over-QUIC更名为HTTP/3的正式请求,以“明确地将其标识为HTTP语义的另一个绑定……使人们理解它与QUIC的不同”,并在最终确定并发布草案后,将QUIC工作组继承到HTTP工作组。[2] 在随后的几天讨论中,Mark Nottingham的提议得到了IETF成员的接受,他们在2018年11月给出了官方批准,认可HTTP-over-QUIC成为HTTP/3。[3]
2019年9月,HTTP/3支持已添加到Cloudflare和Google Chrome(Canary build)。Firefox Nightly在2019年秋季之后添加支持。[4]
2022年6月6日,IETF正式标准化HTTP/3为RFC9114[5]。
实现
客户端
HTTP/3 浏览器支持
浏览器
|
实现但默认禁用的起始版本
|
默认开启的起始版本
|
备注
|
Chrome
|
稳定版 (79)
|
2019年12月
|
87[6]
|
2020年4月[7]
|
早期版本实现了QUIC的其他草案
|
Edge
|
稳定版 (79)
|
2019年12月
|
87
|
2020年4月
|
Edge 79是基于Chromium的首个版本
|
Firefox
|
稳定版 (72.0.1)
|
2020年1月
|
88[8]
|
2021年4月[9]
|
|
Safari
|
稳定版 (14.0)
|
2020年9月
|
16.4
|
2023年3月
|
Apple从Safari 16.4开始,对部分Safari用户测试HTTP/3的支持。[10]
|
库
为 QUIC and HTTP/3 实现了客户端或伺服器逻辑的开源库有[11]
伺服器
参考资料
- ^ Bishop, M. Hypertext Transfer Protocol (HTTP) over QUIC. IETF RFC. 2018-10-24 [2018-12-17]. (原始内容存档于2018-12-19).
- ^ Nottingham, Mark. Identifying our deliverables. IETF Mail Archive. 28 October 2018 [2018-12-17]. (原始内容存档于2018-11-19).
- ^ Cimpanu, Catalin. HTTP-over-QUIC to be renamed HTTP/3 | ZDNet. ZDNet. 2018-11-12 [2018-11-12]. (原始内容存档于2018-11-13) (英语).
- ^ Cimpanu, Catalin. Cloudflare, Google Chrome, and Firefox add HTTP/3 support. ZDNet. 2019-09-26 [2019-09-27]. (原始内容存档于2019-09-26).
- ^ HTTP/3. [2022-06-07]. (原始内容存档于2022-06-06).
- ^ "HTTP/3" | Can I use... Support tables for HTML5, CSS3, etc. canIuse.com. [2023-07-10]. (原始内容存档于2023-07-13).
- ^ Enabling QUIC in tip-of-tree. groups.google.com. [2021-04-09]. (原始内容存档于2021-08-23).
- ^ Damjanovic, Dragana. QUIC and HTTP/3 Support now in Firefox Nightly and Beta. Mozilla Hacks – the Web developer blog. 16 April 2021 [2021-04-17]. (原始内容存档于2021-09-18) (美国英语).
- ^ Firefox Release Owners - MozillaWiki. wiki.mozilla.org. [2021-04-09]. (原始内容存档于2023-06-08).
- ^ Jen Simmons. HTTP/3 support shipped in Safari 14.0. GitHub. 2023-04-04 [2023-04-07]. (原始内容存档于2023-06-06).
- ^ QUIC Implementations. GitHub. [2021-04-08]. (原始内容存档于2021-07-15) (英语).
- ^ First HTTP/3 with curl. Daniel Stenberg. August 5, 2019 [October 2, 2019]. (原始内容存档于2023-06-06).
- ^ HTTP3 (and QUIC). Daniel Stenberg. August 23, 2023 [August 27, 2023]. (原始内容存档于2023-08-27).
- ^ MsQuic is Open Source. April 28, 2020 [April 28, 2020]. (原始内容存档于2022-02-08).
- ^ HTTP/3 support in .NET 6. September 17, 2021 [September 17, 2021]. (原始内容存档于2023-05-30).
- ^ HTTP/3 support in .NET 6. .NET Blog. 2021-09-17 [2022-01-12]. (原始内容存档于2023-05-30) (美国英语).
- ^ LiteSpeed Web Server Release Log - LiteSpeed Technologies. www.litespeedtech.com. [2022-02-12]. (原始内容存档于2023-08-15).
Enable HTTP/3 v1 by default.
- ^ Release 2.6.0 · caddyserver/caddy. Github. 2022-09-22 [2022-09-20]. (原始内容存档于2023-08-10) (美国英语).
- ^ Introducing a Technology Preview of NGINX Support for QUIC and HTTP/3. NGINX. 2020-06-10 [2020-06-11]. (原始内容存档于2020-06-10) (美国英语).
- ^ Binary Packages Now Available for the Preview NGINX QUIC+HTTP/3 Implementation. NGINX. 2023-02-08 [2023-03-30]. (原始内容存档于2023-09-28) (美国英语).
- ^ Experiment with HTTP/3 using NGINX and quiche. The Cloudflare Blog. 2019-10-17 [2019-11-09]. (原始内容存档于2019-11-09) (英语).
- ^ Tratcher. Use ASP.NET Core with HTTP/3 on IIS. docs.microsoft.com. [2022-04-29] (美国英语).
- ^ Announcing HAProxy 2.6. HAProxy Blog. 31 May 2022.
- ^ QUIC Implementation in HAProxy. HAProxyConf video presentation. [2023-10-14]. (原始内容存档于2023-07-14).
外部链接