【发布时间】:2019-01-24 02:09:50
【问题描述】:
我正在实现自己的 HTTP/2 服务器。通读 RFC 7540,关于 HTTP 头帧的部分内容让我感到困惑:
https://www.rfc-editor.org/rfc/rfc7540#section-4.3
标题列表是零个或多个标题字段的集合。什么时候
通过连接传输,标头列表被序列化为一个
使用 HTTP 标头压缩 [COMPRESSION] 的标头块。
然后将序列化的标头块分成一个或多个八位字节
序列,称为头块片段
所以在我的想象中,这个过程应该是这样的:
+-------------------+ +-------------------+ +------------------+ +---------+
| Header List | | Header Block | | Block Fragment 1 | -> | Frame 1 |
+-------------------+ +-------------------+ +------------------+ +---------+
| :method = POST | | Header 1 Bin Data | | Block Fragment 2 | -> | Frame 2 |
| :path = /resource | -> | Header 2 Bin Data | -> +------------------+ +---------+
| :scheme = https | | Header 3 Bin Data | | Block Fragment 3 | -> | Frame 3 |
| ..... | | Header 4 Bin ... | +------------------+ +---------+
+-------------------+ +-------------------+ ... ...
但是本节没有提到序列化的头块是如何划分的。
所以我的问题是:是否可以将一个 HTTP 标头分隔/划分为多个 Header Block Fragments? 例如,Header 1 Bin Data 的一部分由Block Fragment 1,其余由Block Fragment 2携带。
谢谢!
【问题讨论】:
标签: http2