HTTP/2规范:11. IANA 注意事项

一个用于识别HTTP/2的字符串进入了由 [TLS-ALPN] 建立的 “应用层协议协商 (ALPN) 协议IDs” 注册表

本文档为帧类型,设置项,和错误码建立了一个注册表。这些新的注册表项出现在新的”Hypertext Transfer Protocol version 2 (HTTP/2) Parameters”一节。

为了在HTTP中使用,本文档注册了HTTP2-Settings首部字段;它还注册了421 (Misdirected Request) 状态码。

为了在HTTP中使用,本文档还注册了PRI方法,以避免与连接前言 (connection preface) (Section 3.5)冲突

11.1 HTTP/2 识别字符串的注册

本文档为HTTP/2的识别 (参见 Section 3.3) 而向由 [TLS-ALPN] 建立的 “应用层协议协商 (ALPN) 协议IDs” 注册表中建立了两个注册项。

当在TLS之上使用HTTP/2时,用”h2”来标识HTTP/2:

协议:HTTP/2 over TLS

标识串:0x68 0x32 (“h2”)

规范说明:本文档

“h2c”字符串标识裸TCP之上的HTTP/2。

协议:HTTP/2 over TCP

标识串:0x68 0x32 0x63 (“h2c”)

规范说明:本文档

11.2 帧类型注册表

本文档为HTTP/2帧类型码建立了一个注册表。”HTTP/2帧类型”注册表管理一个8位的空间。”HTTP/2帧类型”注册表在 “IETF Review”或”IESG Approval” 策略 [RFC5226] 之下操作,其值在0x00和0xef之间,而0xf0 和 0xff之间的值被保留以备实验之用。

注册表中的新项需要下面的信息:

帧类型:帧类型的一个名称或者标签。

代码:与分配给帧类型的8位代码。

规范说明:一个规范说明的引用,其中包含了帧布局的描述,它的语义,帧类型使用的标记,包含基于标记的值而有条件的出现的帧的任何部分。

本文档注册了下表所列的项。

Frame Type Code Section
DATA 0x0 Section 6.1
HEADERS 0x1 Section 6.2
PRIORITY 0x2 Section 6.3
RST_STREAM 0x3 Section 6.4
SETTINGS 0x4 Section 6.5
PUSH_PROMISE 0x5 Section 6.6
PING 0x6 Section 6.7
GOAWAY 0x7 Section 6.8
WINDOW_UPDATE 0x8 Section 6.9
CONTINUATION 0x9 Section 6.10

11.3 设置项注册表

本文档为 HTTP/2设置项 建立了一个注册表。“HTTP/2设置项” 注册表管理一个16位的空间。“HTTP/2设置项” 注册表在 “Expert Review” 策略 [RFC5226]之下操作,其取值范围在0x0000到0xefff之间,而0xf000到0xffff之间的值被保留以备实验之用。

建议为新的注册项提供如下的信息:

名称:设置项的一个符号形式的名称。指定一个设置项名称是可选的。

代码:分配给设置项的16位代码。

初始值:设置项的初始值。

规范说明:到一个规范说明的可选的引用,其中描述了设置项的使用。

下表是本文档注册的项。

Name Code Initial Value Specification
HEADER_TABLE_SIZE 0x1 4096 Section 6.5.2
ENABLE_PUSH 0x2 1 Section 6.5.2
MAX_CONCURRENT_STREAMS 0x3 (infinite) Section 6.5.2
INITIAL_WINDOW_SIZE 0x4 65535 Section 6.5.2
MAX_FRAME_SIZE 0x5 16384 Section 6.5.2
MAX_HEADER_LIST_SIZE 0x6 (infinite) Section 6.5.2

11.4 错误码注册表

本文档为HTTP/2错误码建立了一个注册表。“HTTP/2错误码”注册表管理一个32位的空间。“HTTP/2错误码”注册表在“Expert Review”策略 [RFC5226]之下操作。

注册错误码需要包含一个错误码的描述。建议有一个专家审查者来检验新的注册可能与已有错误码的重复。鼓励使用已有的注册,但不强制。

建议新的注册提供如下的信息:

名称:错误码的名称。指定一个错误码名称是可选的。

代码:32位的错误码值。

描述:一个错误码语义的清晰描述,如果没有提供详细的规范说明的话要更长一点。

规范说明:到一个规范说明的可选的引用,其中定义了错误码。

下表是本文档注册的项。

Name Code Description Specification
NO_ERROR 0x0 Graceful shutdown Section 7
PROTOCOL_ERROR 0x1 Protocol error detected Section 7
INTERNAL_ERROR 0x2 Implementation fault Section 7
FLOW_CONTROL_ERROR 0x3 Flow-control limits exceeded Section 7
SETTINGS_TIMEOUT 0x4 Settings not acknowledged Section 7
STREAM_CLOSED 0x5 Frame received for closed stream Section 7
FRAME_SIZE_ERROR 0x6 Frame size incorrect Section 7
REFUSED_STREAM 0x7 Stream not processed Section 7
CANCEL 0x8 Stream cancelled Section 7
COMPRESSION_ERROR 0x9 Compression state not updated Section 7
CONNECT_ERROR 0xa TCP connection error for CONNECT method Section 7
ENHANCE_YOUR_CALM 0xb Processing capacity exceeded Section 7
INADEQUATE_SECURITY 0xc Negotiated TLS parameters not acceptable Section 7
HTTP_1_1_REQUIRED 0xd Use HTTP/1.1 for the request Section 7

11.5 HTTP2-Settings 首部字段注册

这一节向 “Permanent Message Header Field Names” 注册表 [BCP90] 注册了HTTP2-Settings首部字段。

首部字段名称:HTTP2-Settings

适用的协议:http

状态:标准

作者/变动控制者:IETF

规范文档:本文档的 Section 3.2.1

相关信息:这个首部字段只被 HTTP/2 客户端用于基于升级 (Upgrade-based) 的协商。

11.6 PRI 方法注册

这一节向”HTTP方法注册表” ([RFC7231] Section 8.1)中注册了PRI方法。

方法名:PRI

安全的:是

幂等的:是

规范说明:本文档的 Section 3.5

相关信息:这个方法从不会由实际的客户端使用。这个方法主要在HTTP/1.1服务器或中继在解析HTTP/2连接前言(connection preface)时使用。

11.7 421 (Misdirected Request) HTTP状态码

本文档向 “HTTP状态码” 注册表 ([RFC7231] Section 8.2)中注册了 421 (Misdirected Request) HTTP状态码。

状态码:421

简短描述:误重定向请求

规范说明:本文档的 Section 9.1.2

11.8 h2c 升级 Token

本文档向”HTTP升级Tokens”注册表中 ([RFC7230] Section 8.6)中注册了 “h2c”升级token。

值:h2c

描述:超文本传输协议版本 2 (HTTP/2)

期待的版本Tokens:None

参考:本文档的 Section 3.2

坚持原创技术分享,您的支持将鼓励我继续创作!