以下部分说明 Cloudflare 如何通过 anycast 路由高效引导流量,并作为用户与源服务器之间的中间层。第二部分介绍用于性能优化的 TCP 连接和 Keep-Alive,最后是 TCP Fast Open(TFO)——一种增强 TCP 连接速度的协议扩展。
用户通过从设备向 Cloudflare 全球网络发送请求来连接 Cloudflare。Cloudflare 作为用户与源站之间的中间层连接源服务器。
flowchart LR accTitle: Connections with Cloudflare A[Visitor] <-- Connection --> B[Cloudflare global network] <-- Connection --> C[Origin server]
用户流量根据最短边界网关协议 ↗(BGP)路径路由到最近的 Cloudflare 数据中心,这得益于 anycast ↗ 路由。Cloudflare 随后处理请求。如果请求未从 Cloudflare 数据中心提供,Cloudflare 将打开与源服务器的连接以转发请求。
HTTP(超文本传输协议)是在 TCP 上运行的第 7 层 ↗应用协议。默认情况下,HTTP 为每个请求-响应周期打开新的 TCP 连接,由于重复建立和拆除连接,可能导致性能开销。
Keep-Alive 是连接 TCP 和 HTTP 的机制,允许单个 TCP 连接保持打开以处理多个 HTTP 请求和响应。这最小化了为每个 Web 资源建立新 TCP 连接的开销和延迟。Keep-Alive 通过促进现有连接的复用、减少网络流量并提升用户体验,提高 Web 应用的效率和响应速度。
TCP 连接即使在 HTTP 请求结束后仍可保持。但是,为高效管理资源,空闲连接通常在一段时间不活动后终止。为增强连接复用并最小化连接开销,采用 Keep-Alive 机制。这些机制共同优化 Web 应用的性能和可靠性,同时节省网络资源。
如果用户或源站对两次 Keep-Alive 均无响应,Cloudflare 将通过发送 TCP Reset(RST)数据包断开连接。
对于与用户的连接,Cloudflare 的默认空闲超时为 400 秒。400 秒后,Cloudflare 将每 75 秒发送一次 Keep-Alive 探测。如果连续九次探测均无响应,Cloudflare 将通过发送 RST 数据包断开连接。
Enterprise 客户可以自定义用户与 Cloudflare 之间、以及 Cloudflare 与源站之间的 TCP 连接设置。请联系您的账户团队了解更多详情。
TCP Fast Open ↗(TFO)是一种协议扩展,通过在初始 SYN 数据包中发送数据(而非在数据传输开始前需要单独的握手),可以显著提高建立 TCP 连接的速度。TFO 可以降低延迟并提高网站和应用性能,尤其在高延迟网络上。Cloudflare 在用户连接上支持 TFO。
当客户端发起与 Cloudflare 保护的 Web 服务器的连接时,它发送 TCP SYN 数据包请求连接。Cloudflare 作为反向代理拦截 SYN 数据包并以 SYN-ACK 数据包响应以建立连接。启用 TFO 后,Cloudflare 还可以在 SYN-ACK 数据包中发送初始数据(例如 HTTP 请求数据),无需额外往返即可传输数据。客户端收到带数据的 SYN-ACK 数据包并以 ACK 数据包确认。这加快了连接建立。