Skip to main content

2. HTTP/2协议概览 (HTTP/2 Protocol Overview)

HTTP/2为HTTP语义提供了优化的传输。HTTP/2支持HTTP/1.1的所有核心特性,但旨在通过多种方式提高效率。

HTTP/2的基本协议单元是(Frame)。每个帧类型服务不同的目的。例如,HEADERS和DATA帧构成HTTP请求和响应的基础(第8.1节);其他帧类型如SETTINGS、WINDOW_UPDATE和PUSH_PROMISE用于支持其他HTTP/2特性。

请求和响应的多路复用通过允许客户端和服务器将HTTP请求-响应交换分解为独立的、交错的帧序列来实现,然后在另一端重新组装。帧在称为(Streams)的单个连接上被交错发送和接收(第5节),以下关键特征使多路复用成为可能:

  • 单个HTTP/2连接可以包含多个并发打开的流,任一端点交错来自多个流的帧。
  • 流可以单方面建立和使用,或由客户端或服务器共享。
  • 流可以由任一端点关闭。
  • 流上发送帧的顺序很重要。接收方按照接收帧的顺序处理帧。特别是,HEADERS和DATA帧的顺序在语义上是重要的。
  • 流由整数标识。流标识符由发起流的端点分配给流。

2.1 文档组织 (Document Organization)

HTTP/2规范分为四个部分:

  • 启动HTTP/2(第3节):涵盖HTTP/2连接如何启动。
  • (第4节)和(第5节):描述HTTP/2帧和流的工作方式,包括它们的生命周期和如何使用它们。
  • 帧定义(第6节)和错误处理(第7节):包括HTTP/2中使用的帧类型和错误代码的详细信息。
  • HTTP映射(第8节):描述如何使用帧和流表示HTTP语义。

虽然某些帧和流层概念与HTTP隔离,但本规范不定义完全通用的帧层。帧和流层针对HTTP协议和服务器推送的需求进行了定制。

2.2 约定和术语 (Conventions and Terminology)

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

本规范中使用的所有数值以网络字节序表示。除非另有说明,否则值是无符号的。字面值以十进制或十六进制提供,使用0x表示法标识十六进制数字。使用以下术语:

client (客户端): 发起HTTP/2连接的端点。客户端发送HTTP请求并接收HTTP响应。

connection (连接): 两个端点之间的传输层连接。

connection error (连接错误): 影响整个HTTP/2连接的错误。

endpoint (端点): 连接的客户端或服务器。

frame (帧): HTTP/2连接内的最小通信单元,由头部和基于帧类型构造的可变长度八位字节序列组成。

peer (对等方): 端点。当讨论特定端点时,"peer"指的是远程参与讨论的端点。

receiver (接收方): 正在接收帧的端点。

sender (发送方): 正在传输帧的端点。

server (服务器): 接受HTTP/2连接的端点。服务器接收HTTP请求并发送HTTP响应。

stream (流): HTTP/2连接内的双向帧流。

stream error (流错误): 单个HTTP/2流上的错误。


上一章: 1. 引言 (Introduction)
下一章: 3. 启动HTTP/2 (Starting HTTP/2)