跳到主要内容

1. 引言 (Introduction)

HTTP extensions (如 [HTTP] Section 16 中所定义) 有时需要访问底层 transport protocol features, 例如 unreliable delivery ([QUIC-DGRAM] 所提供), 以启用所需功能. 例如, 这可以允许引入 CONNECT method 的 unreliable version, 并向 WebSockets [WEBSOCKET] 添加 unreliable delivery.

在 Section 2 中, 本文档描述 HTTP Datagrams, 这是一种在 HTTP connection 内传送 bidirectional 且可能 unreliable datagrams 的约定, 并在可能时进行 multiplexing. 虽然 HTTP Datagrams 与 HTTP requests 相关联, 但它们不是 message content 的一部分. 相反, 它们旨在供 HTTP extensions (例如 CONNECT method) 使用, 并兼容所有 HTTP versions.

当 HTTP 运行在支持 unreliable delivery 的 transport protocol 之上时 (例如 QUIC DATAGRAM extension [QUIC-DGRAM] 可用于 HTTP/3 [HTTP/3] 时), HTTP Datagrams 可以使用该 capability.

在 Section 3 中, 本文档描述 HTTP Capsule Protocol, 该协议允许使用 reliable delivery 传送 HTTP Datagrams. 这解决了 HTTP/3 中 QUIC DATAGRAM frame 不可用或不适宜使用的情况, 以及 transport protocol 仅提供 reliable delivery 的情况, 例如基于 TCP [TCP] 的 HTTP/1.1 [HTTP/1.1] 或 HTTP/2 [HTTP/2].

1.1. 约定和定义 (Conventions and Definitions)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL", 当且仅当它们以此处所示的全大写形式出现时, 应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释.

本文档使用 [QUIC] 中的术语.

当本文档定义 protocol types 时, 定义格式使用 [QUIC] Section 1.3 中的 notation. 当 types 中的 fields 为 integers 时, 它们使用 [QUIC] Section 16 中的 variable-length integer encoding 编码. Integer values 不需要按所需最少 bytes 数编码.

在本文档中, 术语 "intermediary" 指 [HTTP] Section 3.7 中定义的 HTTP intermediary.