跳到主要内容

20. 错误码

20. 错误码 (Error Codes)

QUIC transport error codes 和 application error codes 是 62-bit 无符号整数.

20.1 传输错误码 (Transport Error Codes)

本节列出已定义的 QUIC transport error codes, 它们可用于 type 为 0x1c 的 CONNECTION_CLOSE frame. 这些错误适用于整个连接.

NO_ERROR (0x00): 端点将其与 CONNECTION_CLOSE 一起使用, 用于表示连接在没有任何错误的情况下被突然关闭.

INTERNAL_ERROR (0x01): 端点遇到内部错误, 无法继续该连接.

CONNECTION_REFUSED (0x02): 服务器拒绝接受新连接.

FLOW_CONTROL_ERROR (0x03): 端点收到的数据量超过了其通告的数据限制所允许的数量.

STREAM_LIMIT_ERROR (0x04): 端点收到一个 frame, 其 stream identifier 超过了该端点针对对应 stream type 通告的 stream limit.

STREAM_STATE_ERROR (0x05): 端点收到一个针对某个 stream 的 frame, 但该 stream 当前状态不允许该 frame.

FINAL_SIZE_ERROR (0x06): 端点收到一个 STREAM frame, 其中包含的数据超过了先前确定的 final size; 或收到一个 RESET_STREAM frame, 其中包含的 final size 小于已经接收的 stream data 大小; 或收到一个 RESET_STREAM frame, 其中包含的 final size 发生了变化.

FRAME_ENCODING_ERROR (0x07): 端点收到格式错误的 frame.

TRANSPORT_PARAMETER_ERROR (0x08): 端点收到的 transport parameters 格式错误, 包含无效值, 在强制要求存在时缺失, 在禁止出现时出现, 或存在其他错误.

CONNECTION_ID_LIMIT_ERROR (0x09): 端点收到的 connection IDs 数量超过其愿意处理的数量.

PROTOCOL_VIOLATION (0x0a): 端点检测到一个协议合规性错误, 且该错误未被更具体的错误码覆盖.

INVALID_TOKEN (0x0b): 服务器收到一个包含无效 Token field 的客户端 Initial.

APPLICATION_ERROR (0x0c): 应用或应用协议导致连接被关闭.

CRYPTO_BUFFER_EXCEEDED (0x0d): 端点在 CRYPTO frames 中收到的数据量超过了其可缓冲的数据量.

KEY_UPDATE_ERROR (0x0e): 端点在执行 key updates 时检测到错误.

AEAD_LIMIT_REACHED (0x0f): 端点已达到给定连接所用 AEAD 算法的机密性或完整性限制.

NO_VIABLE_PATH (0x10): 端点已确定该网络路径无法支持 QUIC.

20.2 应用协议错误码 (Application Protocol Error Codes)

Application protocol error codes 是 62-bit 无符号整数, 用于 RESET_STREAM frames 或 type 为 0x1d 的 CONNECTION_CLOSE frames. Application protocol error codes 由使用 QUIC 的应用协议定义.