浏览 619
原文链接:概念回顾:QUIC 和 HTTP/3
转载来源:NGINX 开源社区
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
编者按—— 11 月 2 日(周四),我们在线上直播活动中介绍并讨论了 QUIC 的基本概念和发展历程,并通过一个动手演示实验为您展示如何安装并配置 NGINX,通过 QUIC+HTTP/3 以及 TCP+TLS+HTTP/1+2 来交付网络流量。
如果您对此次线上直播感兴趣,请点击此处观看直播回放。
快速 UDP 网络连接(QUIC)是一种通用传输层协议,旨在通过其灵活性、内置的安全防护、较少的性能问题以及更快的采用率来取代传输控制协议(TCP)。
QUIC 最初由谷歌开发,采用用户数据协议(UDP)作为在客户端和服务器之间移动数据包的低级别传输机制。另外值得注意的是,QUIC 集成了传输层安全防护(TLS),将其作为一个集成组件,而不是像 HTTP/1.1 和 HTTP/2 那样将其作为一个附加层。
基于 QUIC 的 HTTP/3 是超文本传输协议(HTTP)的第三个主要版本,于 2022 年被采纳为 IETF 标准。创建 QUIC+HTTP/3 是为了解决 TCP 固有的性能限制和用户体验的问题。
HTTP 传输协议栈概览
QUIC 的目标是为 HTTP/3 提供高性能、高可靠性和高安全性的传输协议(尽管 QUIC 也适用于非 HTTP 流量)。
UDP 是一种简单、轻量级的协议,不需要像 TCP 那样复杂的三方握手来建立第一个连接。这种简单性使 UDP 性能极快且无连接,但也意味着与 TCP 相比,它缺乏可靠且安全通信所必需的功能。
QUIC 是独一无二的,因为它融合了 UDP 和 TCP 协议的优点。
虽然它是无连接的(connectionless),并利用了 UDP 作为底层传输协议来减少连接和传输延迟,但由于它重新实现了 TCP 的连接建立和丢失检测功能,从而保证了数据包的传输,因此它在更高的传输层是面向连接的。它可以处理识别丢失数据并完成重新传输的任务,以确保无缝的用户体验。
QUIC 还将 TLS 作为一个集成组件,而不是像 HTTP/1.1 和 HTTP/2 那样作为一个附加层。这种集成确保了在默认情况下实现消息加密。
下图描述了 QUIC 网络的基本结构。如图所示,包含 HTTP/3 请求、响应以及所有应用数据的逻辑对象是 QUIC 流。在不同的网络端点之间进行传输时,QUIC 流被封装在多个逻辑层中。
QUIC 数据流图解
从外向内看,这些逻辑层和对象包括:
TLS 握手提供了客户端和服务器之间的安全连接。QUIC 所提供的加密功能需要使用 TLS v1.3 版本。如下图所示,QUIC 保留了 TLS“内容层(Content Layer)”,它可提供加密密钥;同时,QUIC 用自己的传输机制取代了“记录层(Record Layer)”。
针对那些对安全和性能至关重要的参数,QUIC 还基于 TLS对其进行身份验证和协商。这两种协议不是严格地分层的,而是互相合作的:QUIC 借助 TLS 握手来建立安全连接,而 TLS 则使用 QUIC 提供的可靠性、有序交付以及记录层。
从较高的层面来说,TLS 和 QUIC 组件之间主要有两种类型的交互:
QUIC TLS 是专为 QUIC 协议设计的 TLS 变体。目前,对于在 QUIC TLS 中寻求 HTTP/3 支持的用户,有两个选项:
通过减少延迟以及改进不可靠的网络上的数据传输,QUIC+HTTP/3 旨在提高 web 应用的性能。它们的优势包括:
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
按点赞数排序
按时间排序