Amazon CloudFront 是一种CDN服务,它由一系列互联的服务器组成,这些服务器地理位置上更接近用户,并能够更快速地到达用户的计算机。通过在分布在全球410多个PoP点提供服务,Amazon CloudFront 通过自动化的网络映射和智能路由减少了延迟。
使用Amazon CloudFront,内容、API请求和响应或应用可以通过HTTP版本1.1和2.0,以及最新版本的TLS进行传输,从而加密并保护用户客户端与 CloudFront 之间的通信。
目前Amazon CloudFront已经支持HTTP/3。HTTP/3使用 QUIC,这是基于UDP的流多路复用和安全传输协议,结合并改进了现有的传输控制协议TCP、TLS 和 HTTP/2 的功能。现在,您可以在全球所有边缘位置为所有新的和现有的 CloudFront 分发启用 HTTP/3,并且使用此功能不会产生额外费用。
什么是 HTTP/3?
HTTP/3 使用 QUIC,并克服了 TCP 的许多限制,将这些好处带入了 HTTP。当使用现有的 HTTP/2 通过 TCP 和 TLS 时,TCP 需要进行握手以在客户端和服务器之间建立会话,TLS 也需要进行自己的握手以确保会话的安全性。每次握手都需要在客户端和服务器之间完成一次完整的往返,这在客户端和服务器相距较远时可能需要较长时间。但 QUIC 只需要一次握手就能建立安全的会话。

此外,TCP 被各种中间设备(如防火墙和网络地址转换(NAT)设备)理解和操作。QUIC 使用 UDP 作为其基础,允许在企业或公共网络中传输数据包流,并且完全加密,包括元数据,这使得中间设备无法检查或操控其细节。
HTTP/3 的流是独立多路复用的,以消除请求和响应之间的排队阻塞。这是因为流的多路复用发生在传输层,而不是像 HTTP/2 over TCP 那样发生在应用层。这使得 Web 应用程序能够更快地执行,特别是在慢速网络和对延迟敏感的连接上。
HTTP/3 在 CloudFront 上的好处
我们的客户总是希望为最终用户提供更快、更响应、更安全的 Web 体验。HTTP/3 为所有 CloudFront 客户提供了加快连接时间、流多路复用、客户端连接迁移以及减少握手过程中的往返次数的好处,从而减少了错误率。
基于 UDP 的 QUIC 连接支持连接重用,连接ID独立于IP地址/端口元组,因此用户不会受到中断或影响。那些在网络连接较差的国家运营的客户将看到他们的应用程序性能得到提升。
CloudFront 的 HTTP/3 支持提供了增强的安全性,基于 s2n-quic,这是一个开源的 Rust 实现的 QUIC 协议,已加入我们的 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。通过浏览器中的开发者工具,您可以查看通过 CloudFront 加载页面时发出的 HTTP/3 请求。下面的图片是 Mozilla Firefox 的示例。

您还可以为 Curl 添加 HTTP/3 支持,并从命令行进行测试:
