Skip to main content

1. Introduction (简介)

HTTP语义 (HTTP Semantics) ([HTTP]) 被广泛用于互联网上的各种服务。这些语义最常与HTTP/1.1和HTTP/2一起使用。HTTP/1.1已被用于各种传输层和会话层,而HTTP/2主要与基于TCP的TLS一起使用。HTTP/3在新的传输协议QUIC上支持相同的语义。

1.1. Prior Versions of HTTP (HTTP的早期版本)

HTTP/1.1 ([HTTP/1.1]) 使用空格分隔的文本字段来传输HTTP消息。虽然这些交换是人类可读的,但使用空格进行消息格式化会导致解析复杂性和对变体行为的过度容忍。

由于HTTP/1.1不包含多路复用层 (Multiplexing Layer),因此通常使用多个TCP连接来并行处理请求。然而,这对拥塞控制 (Congestion Control) 和网络效率产生负面影响,因为TCP不会在多个连接之间共享拥塞控制。

HTTP/2 ([HTTP/2]) 引入了二进制帧 (Binary Framing) 和多路复用层,以在不修改传输层的情况下改善延迟。然而,由于HTTP/2的多路复用的并行特性对TCP的丢包恢复机制 (Loss Recovery Mechanisms) 不可见,丢失或重新排序的数据包会导致所有活动事务都经历停顿 (Stall),无论该事务是否直接受到丢包的影响。

1.2. Delegation to QUIC (委托给QUIC)

QUIC传输协议结合了流多路复用 (Stream Multiplexing) 和每流流量控制 (Per-Stream Flow Control),类似于HTTP/2帧层提供的功能。通过在流级别提供可靠性 (Reliability) 和在整个连接上提供拥塞控制,QUIC能够与TCP映射相比改善HTTP的性能。QUIC还在传输层集成了TLS 1.3 ([TLS]),提供与在TCP上运行TLS相当的机密性 (Confidentiality) 和完整性 (Integrity),并具有TCP快速打开 (TCP Fast Open) ([TFO]) 的改进连接建立延迟。

本文档定义了HTTP/3:HTTP语义在QUIC传输协议上的映射,大量借鉴了HTTP/2的设计。HTTP/3依赖QUIC来提供数据的机密性和完整性保护、对等方身份验证 (Peer Authentication),以及可靠的、有序的、每流的交付。在将流生命周期 (Stream Lifetime) 和流量控制问题委托给QUIC的同时,在每个流上使用类似于HTTP/2帧的二进制帧。一些HTTP/2功能被QUIC包含,而其他功能则在QUIC之上实现。

QUIC在 [QUIC-TRANSPORT] 中描述。有关HTTP/2的完整描述,请参见 [HTTP/2]。