"该文档是关于横河Centum+CS3000系统的错误处理机制,特别是针对HTTP/2协议的错误处理策略。"
在HTTP/2协议中,错误处理分为两种主要类型:连接错误和流错误。这两种错误分别对应于整个连接层面和单个数据流层面的问题。
5.4.1 连接错误处理
当出现连接错误时,意味着存在一种情况,它阻止了帧的进一步处理或破坏了连接状态。在这种情况下,终端应该首先发送一个GOAWAY帧,包含最近成功接收的流的标识符以及指示错误原因的错误码。发送GOAWAY帧后,终端必须关闭TCP连接。然而,由于TCP连接可能立即关闭导致数据丢失,GOAWAY帧的接收并不能确保可靠,仅提供尽力而为的通信尝试。终端在任何时刻都可以结束连接,可以选择将流错误升级为连接错误,并在结束连接时发送GOAWAY帧以提供错误信息。
5.4.2 流错误处理
流错误是只影响特定流的错误,不会波及其他流。一旦检测到流错误,端点将发送RST_STREAM帧,包含出错流的标识符和错误码。RST_STREAM帧是端点在该流上发送的最后一个帧,它需要准备好接收对端可能已经发送或排队的任何帧,尽管这些帧可以被忽略,但涉及连接状态变更的帧(如首部压缩或流量控制)除外。通常,一个端点不应为同一流发送多个RST_STREAM帧,除非在一轮传输时间后还在关闭的流上接收到帧。
HTTP/2协议概述
HTTP/2旨在提高HTTP/1.1的效率,通过首部字段压缩减少网络流量,允许多个数据交换在同一连接上并发进行,从而降低延迟。协议引入服务器推送功能,使得服务器能够主动向客户端发送未请求的资源。HTTP/2保留了HTTP/1.1的语义,但改进了消息传输方式,包括使用二进制帧、请求和响应交错、请求优先级等特性,减少了TCP连接的数量,提高了网络资源的利用率,并通过更高效的帧处理提高了消息处理效率。
HTTP/2的这种优化不仅减少了对网络的竞争,提升了性能,还通过减少新连接的创建,降低了对TCP拥塞窗口的影响,从而实现更快的数据传输。同时,所有HTTP/1.1的核心功能在HTTP/2中都得到支持,但处理方式更为高效。