HTTP 3.0 论文阅读笔记

摘要

QUIC是一个在UDP上层建立的多路复用传输。HTTP/3被设计来利用QUIC的优点,包括了没有流之间的Head-Of-Line阻塞
QUIC一开始只是用来替代TCP+TLS+HTTP/2,改善用户的使用体验尤其是页面加载时间。IETF 的 QUIC 工作组定义了传输 (QUIC) 层和应用程序 (HTTP/3) 层之间的明确界限,以及从 QUIC Crypto 迁移到 TLS 1.3。
因为TCP是在操作系统的内核层还有middleboxes实现的,对TCP来进行大幅度修改是几乎不可能实现的。然而,由于 QUIC 是建立在 UDP 之上的,并且传输功能是加密的,所以它没有这样的限制。

基于 TCP+TLS 和 HTTP/2 的 QUIC 和 HTTP/3 的主要特性包括

  • 减少了连接的建立时间,常见情况下为0次往返 (Reduced connection establishment time - 0 round trips in the common case)
  • 改善了拥塞控制反馈(Improved congestion control feedback)
  • 没有head of line阻塞的多路复用(Multiplexing without head of line blocking)
  • 连接迁移(Connection migration)
  • 传输可扩展性(Transport extensibility)
  • 可选的不可靠交付(Optional unreliable delivery)

QUIC: A UDP-Based Multiplexed and Secure Transport [RFC9000]

摘要

这份稳定定义了QUIC传输协议的核心部分。QUIC给应用提供了结构化通信的流量控制、低延时的连接建立、还有网络路径迁移。QUIC在一系列部署环境中包含了安全的方法,保证了机密性、完整性和可用性。随附的文档描述了用于密钥协商、丢包(loss)检测和示例性拥塞控制算法的 TLS 集成。

概述

QUIC是一种安全通用的传输协议。本文档定义了QUIC的版本1。QUIC版本相关QUIC-INVARIANTS
QUIC是一种在client和server之间创建有状态交互的面向连接的协议。
QUIC握手合并了加密的协商和传输参数。QUIC集成了TLS握手,尽管使用了定制的帧来保护数据包。如何集成在「QUIC」描述得更加详细。握手被构造成允许应用尽快地交换双方的数据。这包括客户端立即发送数据的选项 (0-RTT),这需要某种形式的事先通信或配置才能启用。
Endpoint通过交换QUIC数据包来进行通讯。大多数数据包都包含帧,这些帧在端点之间携带控制信息和应用程序数据。QUIC 对每个数据包的整体进行身份验证,并尽可能多地加密每个数据包。QUIC 数据包在 UDP 数据报 [UDP] 中携带,以更好地促进在现有系统和网络中的部署。

原文链接:

  • https://www.chromium.org/quic/
  • https://datatracker.ietf.org/doc/html/rfc9000