快速 UDP 互联网连接 (QUIC)是一种通用传输层协议,旨在通过其灵活性、内置安全性、更少的性能问题和更快的采用率来取代传输控制协议 (TCP)。 QUIC 最初由 Google 开发,使用用户数据报协议 (UDP) 作为在客户端和服务器之间移动数据包的低级传输机制。 值得注意的是,QUIC 还将传输层安全性(TLS)作为一个整体组件,而不是像 HTTP/1.1 和 HTTP/2 那样作为附加层。
HTTP/3 基于 QUIC,是超文本传输协议 (HTTP) 的第三个主要版本,并于 2022 年被采纳为IETF 标准。 QUIC+HTTP/3 的创建是为了解决 TCP 固有的限制,这些限制限制了性能和用户体验。
API 是应用的“公众面孔”,揭示其执行的功能和可以提供的信息,并定义正确的请求格式。 当开发人员为应用创建并公开 API 时,它允许其他应用与其通信。
在许多情况下,API 可以节省开发人员宝贵的时间,因为它们使常用功能随时可用。 开发人员不需要重复现有应用的功能,而是可以通过调用现有应用程序的 API 将功能集成到自己的应用中。
HTTP 传输堆栈的高级概述
QUIC 的目标是为 HTTP/3 提供高性能、高可靠性和高安全性的传输协议(尽管 QUIC 也适用于非 HTTP 流量)。
如果您对 QUIC 完全不了解,我们建议您观看下面的介绍视频。
UDP 是一种简单、轻量级的协议,不需要像 TCP 那样进行复杂的三次握手来建立第一个连接。 这种简单性使得 UDP 快速且无连接,但这也意味着与 TCP 相比,它缺乏可靠和安全通信所必需的功能。
QUIC 的独特之处在于它融合了 UDP 和 TCP 协议的优点。 虽然它是无连接的并且利用 UDP 作为低级传输协议来减少连接和传输延迟,但由于它重新实现了 TCP 的连接建立和丢失检测功能(从而保证数据包的传输),因此它在较高层是面向连接的。 它负责识别丢失的数据并完成重新传输的任务,以确保无缝的用户体验。
QUIC 还将 TLS 作为一个整体组件,而不是像 HTTP/1.1 和 HTTP/2 那样作为附加层。 这种合并可确保消息默认被加密。
下图描述了 QUIC 网络的基本结构。 如图所示,包含 HTTP/3 请求、响应或任何应用数据的逻辑对象是 QUIC流。 为了在网络端点之间传输,QUIC 流被包裹在多个逻辑层内。
QUIC 流的剖析
从外到内,逻辑层和对象是:
TLS 握手在客户端和服务器之间提供了安全的连接。 QUIC 提供的加密需要TLS v1.3 。 如下图所示,QUIC 保留了提供加密密钥的 TLS“内容层”,但用自己的传输机制取代了“记录层”。
QUIC 还依赖 TLS 来对安全性和性能至关重要的参数进行身份验证和协商。 这两个协议不是严格的分层,而是协作的: QUIC 使用 TLS 握手建立安全连接,而 TLS 使用 QUIC 提供的可靠性、有序传递和记录层。
从高层次上看,TLS 和 QUIC 组件之间有两种主要交互:
QUIC TLS 是专为 QUIC 协议设计的 TLS 变体。 目前,对于寻求 QUIC TLS 中 HTTP/3 支持的用户,有两个选项:
QUIC+HTTP/3 旨在通过减少延迟和改善不可靠网络上的数据传输来提高 Web应用的性能。 它们的优点包括:
探索以下资源以了解 NGINX 的 QUIC+HTTP/3 实现以及使用 QUIC+HTTP/3 实现更快、更高效通信的其他方法。