错误码是用在RST_STREAM和GOAWAY帧中的32位字段,来携带流或连接错误的原因的。
错误码共享一个共同的码空间。一些错误码只应用于流或整个连接,而在其它上下文中没有定义语义。
当前定义了如下错误码:
NO_ERROR (0x0):相关的情况不是发生了一个错误的结果。比如,GOAWAY可能包含这个码来指示优雅的关闭一个连接。
PROTOCOL_ERROR (0x1): 终端探测到一个不明确的协议错误。这个错误在没有更明确的错误码可用时使用。
INTERNAL_ERROR (0x2): 终端遇到了一个不预期的内部错误。
FLOW_CONTROL_ERROR (0x3): 终端探测到它的对端节点违反了流控协议。
SETTINGS_TIMEOUT (0x4): 终端发送了一个SETTINGS帧,但没有及时地收到响应。参见Section 6.5.3 (“Settings Synchronization”)。
STREAM_CLOSED (0x5): 终端在流被半关闭 (half-closed) 之后接收到了一个帧。
FRAME_SIZE_ERROR (0x6): 终端接收到了一个大小无效的帧。
REFUSED_STREAM (0x7): 终端在执行任何应用处理之前拒绝了流 (参考 Section 8.1.4 来了解更多细节)。
CANCEL (0x8): 被终端用来表明不再需要特定的流了。
COMPRESSION_ERROR (0x9): 终端无法为连接维护首部压缩上下文了。
CONNECT_ERROR (0xa): 对一个CONNECT请求 (Section 8.3)做出响应而建立的连接被重置或意外的关闭了。
ENHANCE_YOUR_CALM (0xb): 终端探测到它的对端的行为可能产生过载。
INADEQUATE_SECURITY (0xc):
底层传输部分的属性不满足最低的安全需求(参见 Section 9.2)。
HTTP_1_1_REQUIRED (0xd): 终端需要用HTTP/1.1来替换HTTP/2。
未知的或不支持的错误码必须不(MUST NOT) 触发任何特别的行为。一个实现 可以(MAY) 将这些当作INTERNAL_ERROR一样。