Amazon CloudFront 是一项内容交付网络 (CDN) 服务,它是一种互连服务器网络,在地理位置上更靠近用户,并且可以更快地到达他们的计算机。Amazon CloudFront 通过具有自动网络映射和智能路由的 410 多个全球分散的入网点 (PoP) 提供数据,从而减少延迟。
借助 Amazon CloudFront,内容、API 请求和响应或应用程序可以通过超文本传输协议 (HTTP) 1.1 版和2.0 版在最新版本的传输层安全 (TLS) 上传输,以加密和保护用户客户端与 CloudFront 之间的通信。
今天,我们正在为 Amazon CloudFront 添加 HTTP 版本 3.0 (HTTP/3) 支持。HTTP/3 使用QUIC ,这是一种基于用户数据报协议的、多路复用的安全传输协议,它结合并改进了现有传输控制协议 (TCP)、TLS 和 HTTP/2 的功能。现在,您可以在全球所有边缘站点上的所有新的和现有的 CloudFront 分配中为最终用户连接启用 HTTP/3,并且使用此功能不收取额外费用。
什么是 HTTP/3? HTTP/3 使用 QUIC 并克服了 TCP 的许多限制并将这些好处带入 HTTP。当使用现有的基于 TCP 和 TLS 的 HTTP/2 时,TCP 需要握手来在客户端和服务器之间建立会话,而 TLS 也需要自己的握手来确保会话的安全。每次握手都必须在客户端和服务器之间进行完整的往返,当客户端和服务器相距很远时,这可能需要很长时间,网络方面。但是,QUIC 只需要一次握手即可建立安全会话。

此外,无数不同的中间设备(例如防火墙和网络地址转换 (NAT) 设备)都可以理解和操纵 TCP。QUIC 使用 UDP 作为其基础来允许数据包在企业或公共网络中流动,并且是完全加密的,包括元数据,这使得中间盒无法检查或操纵其细节。
HTTP/3 流是独立多路复用的,以消除请求和响应之间的线头阻塞。 这是可能的,因为流多路复用发生在传输层而不是应用层,例如基于 TCP 的 HTTP/2。这使 Web 应用程序能够更快地执行,尤其是在慢速网络和对延迟敏感的连接上。
CloudFront 上 HTTP/3 的优势 我们的客户始终希望在 Web 上为最终用户提供更快、更灵敏和更安全的体验。HTTP/3 以更快的连接时间、流多路复用、客户端连接迁移以及握手过程中更少的往返次数以降低错误率等形式为所有 CloudFront 客户带来好处。
UDP 上的 QUIC 连接支持连接重用,连接 ID 独立于 IP 地址/端口元组,因此用户不会受到干扰或影响。在网络连接性较低的国家/地区运营的客户将看到其应用程序的性能得到改善。
CloudFront 的 HTTP/3 支持在s2n-quic 之上提供了增强的安全性,这是一种 QUIC 协议的开源 Rust 实现,添加到我们的 AWS 加密开源库集,两者都非常强调效率和性能。
如果您在 CloudFront 分配中启用 HTTP/3,则用户可以向 CloudFront 边缘站点发出 HTTP/3 查看器请求。在边缘站点之后,我们在 AWS 云中拥有高度可靠的网络,CloudFront 将继续使用 HTTP/1.1 进行原始提取。因此,您无需进行任何服务器端更改即可通过 HTTP/3 访问您的内容。

对于某些类型的应用程序,例如需要 HTTP 客户端库来发出 HTTP 请求的应用程序,客户可能需要将其 HTTP 客户端库更新到支持 HTTP/3 的版本。但是如果由于某些操作原因客户端无法建立 QUIC 连接,它们可以回退到另一个受支持的协议,例如 HTTP/1.1 或 HTTP/2。
如何启用 HTTP/3要启用 HTTP/3 连接,您可以通过CloudFront 控制台 编辑分配配置。您可以在现有发行版上支持的 HTTP 版本 中选择HTTP/3 ,您可以使用UpdateDistribution API 或使用CloudFormation模板 。

部署你的发行版后,你可以手动打开支持 HTTP/3 的浏览器连接,例如最新版本的 Google Chrome、Mozilla Firefox 和 Microsoft Edge,以及 Apple Safari。要了解有关 Web 浏览器支持的更多信息,请参阅我可以使用 - HTTP/3 支持 页面。
通过浏览器中的 Web 开发人员工具,您可以查看从 CloudFront 加载页面时发出的 HTTP/3 请求。下图是 Mozilla Firefox 的示例。

您还可以将HTTP/3 支持添加到 Curl 并从命令行进行测试:
$ curl --http3 -i https://d1e0fmnut9xxxxx.cloudfront.net/speed.html
HTTP/3 200
content-type: text/html
content-length: 9286
date: Fri, 05 Aug 2022 15:49:52 GMT
last-modified: Thu, 28 Jul 2022 00:50:38 GMT
etag: "d928997023f6479537940324aeddabb3"
x-amz-version-id: mdUmFuUfVaSHPseoVPRoOKGuUkzWeUhK
accept-ranges: bytes
server: AmazonS3
vary: Origin
x-cache: Miss from cloudfront
via: 1.1 6e4f43c5af08f740d02d21f990dfbe80.cloudfront.net (CloudFront)
x-amz-cf-pop: ICN54-C2
alt-svc: h3=":443"; ma=86400
x-amz-cf-id: 6fy8rrUrtqDMrgoc7iJ73kzzXzHz7LQDg73R0lez7_nEXa3h9uAlCQ==
https://aws.amazon.com/tw/blogs/aws/new-http-3-support-for-amazon-cloudfront/