HTTP/3

HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1HTTP/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支持已添加到CloudflareGoogle 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]

实现HTTP/3的库
名称 客户端 服务端 编程语言 所属公司 仓库链接
lsquic 支持 支持 C LiteSpeed https://github.com/litespeedtech/lsquic 页面存档备份,存于
nghttp3 支持 支持 C https://github.com/ngtcp2/nghttp3 页面存档备份,存于
H2O 不支持 支持 C https://github.com/h2o/h2o 页面存档备份,存于
cURL[12][13] 支持 不支持 C https://github.com/curl/curl 页面存档备份,存于
MsQuic[14] 支持 支持 C Microsoft https://github.com/microsoft/msquic 页面存档备份,存于
proxygen 支持 支持 C++ Facebook https://github.com/facebook/proxygen#quic-and-http3 页面存档备份,存于
Cronet 支持 支持 C++ Google https://github.com/chromium/chromium/tree/main/net/quic 页面存档备份,存于
.NET[15] 支持 支持 C# (using MsQuic)[16] Microsoft https://github.com/dotnet 页面存档备份,存于
quic-go 支持 支持 Go https://github.com/quic-go/quic-go 页面存档备份,存于
http3 支持 支持 Haskell https://github.com/kazu-yamamoto/http3 页面存档备份,存于
Kwik 支持 支持 Java https://github.com/ptrd/kwik 页面存档备份,存于
Flupke 支持 支持 Java https://bitbucket.org/pjtr/flupke 页面存档备份,存于
aioquic 支持 支持 Python https://github.com/aiortc/aioquic 页面存档备份,存于
quiche 支持 支持 Rust Cloudflare https://github.com/cloudflare/quiche 页面存档备份,存于
neqo 支持 支持 Rust Mozilla https://github.com/mozilla/neqo 页面存档备份,存于
quinn 支持 支持 Rust https://github.com/quinn-rs/quinn 页面存档备份,存于
s2n-quic 支持 支持 Rust Amazon Web Services https://github.com/aws/s2n-quic 页面存档备份,存于

服务器

  • 2021年6月7日,LiteSpeed Web Server(及OpenLiteSpeed)6.0.2版本发布,并成为默认启用HTTP/3的首个版本。[17]
  • Caddy 网页服务器v2.6.0(2022年9月20日发布)默认启用了HTTP/3。[18]
  • Nginx 自1.25.0版本(2023年5月23日发布)开始支持HTTP/3。2020年6月,发布了支持HTTP/3的nginx技术预览版。[19] 2023年2月,发布了支持HTTP/3的nginx二进制包。[20]
  • Cloudflare发布了一个补丁,该补丁将quiche HTTP/3库集成到nginx中。[21]
  • Microsoft IIS 在Windows Server 2022/Windows 11上原生支持HTTP/3。[22]
  • HAProxy 自2.6版本(2022年5月31日发布)起支持 HTTP/3 over QUIC。[23][24]

参考资料

  1. Bishop, M. . IETF RFC. 2018-10-24 [2018-12-17]. (原始内容存档于2018-12-19).
  2. Nottingham, Mark. . IETF Mail Archive. 28 October 2018 [2018-12-17]. (原始内容存档于2018-11-19).
  3. Cimpanu, Catalin. . ZDNet. 2018-11-12 [2018-11-12]. (原始内容存档于2018-11-13) (英语).
  4. Cimpanu, Catalin. . ZDNet. 2019-09-26 [2019-09-27]. (原始内容存档于2019-09-26).
  5. . [2022-06-07]. (原始内容存档于2022-06-06).
  6. . canIuse.com. [2023-07-10]. (原始内容存档于2023-07-13).
  7. . groups.google.com. [2021-04-09]. (原始内容存档于2021-08-23).
  8. Damjanovic, Dragana. . Mozilla Hacks – the Web developer blog. 16 April 2021 [2021-04-17]. (原始内容存档于2021-09-18) (美国英语).
  9. . wiki.mozilla.org. [2021-04-09]. (原始内容存档于2023-06-08).
  10. Jen Simmons. . GitHub. 2023-04-04 [2023-04-07]. (原始内容存档于2023-06-06).
  11. . GitHub. [2021-04-08]. (原始内容存档于2021-07-15) (英语).
  12. . Daniel Stenberg. August 5, 2019 [October 2, 2019]. (原始内容存档于2023-06-06).
  13. . Daniel Stenberg. August 23, 2023 [August 27, 2023]. (原始内容存档于2023-08-27).
  14. . April 28, 2020 [April 28, 2020]. (原始内容存档于2022-02-08).
  15. . September 17, 2021 [September 17, 2021]. (原始内容存档于2023-05-30).
  16. . .NET Blog. 2021-09-17 [2022-01-12]. (原始内容存档于2023-05-30) (美国英语).
  17. . www.litespeedtech.com. [2022-02-12]. (原始内容存档于2023-08-15). Enable HTTP/3 v1 by default.
  18. . Github. 2022-09-22 [2022-09-20]. (原始内容存档于2023-08-10) (美国英语).
  19. . NGINX. 2020-06-10 [2020-06-11]. (原始内容存档于2020-06-10) (美国英语).
  20. . NGINX. 2023-02-08 [2023-03-30]. (原始内容存档于2023-09-28) (美国英语).
  21. . The Cloudflare Blog. 2019-10-17 [2019-11-09]. (原始内容存档于2019-11-09) (英语).
  22. Tratcher. . docs.microsoft.com. [2022-04-29] (美国英语).
  23. . HAProxy Blog. 31 May 2022.
  24. . HAProxyConf video presentation. [2023-10-14]. (原始内容存档于2023-07-14).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.