Amazon web services Cloudfront:HTTP/2遵从性问题

Amazon web services Cloudfront:HTTP/2遵从性问题,amazon-web-services,amazon-cloudfront,http2,network-protocols,Amazon Web Services,Amazon Cloudfront,Http2,Network Protocols,我求助于stackoverflow,因为AWS不为免费层提供技术支持 有人使用我维护的ruby HTTP客户端库httpx报告了一个问题: 该报告是在最近升级以改进解析器中的HTTP/2规范遵从性之后发布的。尽管该库现在通过了h2spec,但从cloudfront请求似乎存在合法问题,因为他们似乎不遵守规范的一个明显部分:当在2**31-1上发布流控制窗口时,发送方不得允许它并返回流控制错误 对吗 流量控制窗口不能超过2^31-1,这是正确的 最初的流量控制窗口是65535,而不是从Cloudf

我求助于stackoverflow,因为AWS不为免费层提供技术支持

有人使用我维护的ruby HTTP客户端库httpx报告了一个问题:

该报告是在最近升级以改进解析器中的HTTP/2规范遵从性之后发布的。尽管该库现在通过了h2spec,但从cloudfront请求似乎存在合法问题,因为他们似乎不遵守规范的一个明显部分:当在2**31-1上发布流控制窗口时,发送方不得允许它并返回流控制错误


对吗

流量控制窗口不能超过2^31-1,这是正确的

最初的流量控制窗口是65535,而不是从Cloudfront发送的65536,因此随后将流量控制窗口扩大2147418112将产生2^31,这比流量控制窗口大一倍


您的客户端正确地发送了一个带有错误流的GO_-AWAY\u-with-error-FLOW\u-CONTROL\u错误。

sbordet答案不完全正确

他说得对,流量控制窗口不能超过2^31-1字节,初始流量控制窗口大小为65535字节。但是,CloudFront发送错误值65536的部分不正确,因为允许任何端点修改默认初始窗口大小,如中所述:

两个端点都可以调整新流的初始窗口大小,方法是在构成连接的一部分的设置框中包含设置值\u initial\u window\u size

请注意,此设置仅应用于新流,而不应用于连接流控制窗口大小。连接流控制窗口大小只能通过窗口更新框进行更新,如RFC的下一行所述:

连接流控制窗口只能使用窗口更新框架进行更改

因此,在CloudFront将设置初始窗口大小更新为65536字节后,连接流控制窗口仍为65535字节,因此下一个窗口2147418112字节的更新将其增加到2^31-1字节(根据RFC,这是一个有效值),而不是2^31字节