3. header block 解码
3.1. header block 处理
解码器按顺序处理 header block, 以重构原始 header list.
header block 是 header field representation 的串接. Section 6 描述了各种可能的 header field representation.
一旦某个 header field 被解码并添加到重构后的 header list, 该 header field 就不能被移除. 添加到 header list 的 header field 可以安全地传递给应用.
通过将得到的 header field 传递给应用, 解码器除了 dynamic table 所需的内存之外, 可以只用最少的临时内存占用来实现.
3.2. header field representation 处理
本节定义了如何处理 header block 以获得 header list. 为确保解码能够成功生成 header list, 解码器 MUST 遵守以下规则.
header block 中包含的所有 header field representation 都按其出现顺序处理, 如下所述. 各种 header field representation 的格式细节以及一些额外处理指令见 Section 6.
indexed representation 包含以下动作:
- 将 static table 或 dynamic table 中被引用条目对应的 header field 追加到已解码的 header list.
not added 到 dynamic table 的 literal representation 包含以下动作:
- 将 header field 追加到已解码的 header list.
added 到 dynamic table 的 literal representation 包含以下动作:
-
将 header field 追加到已解码的 header list.
-
将 header field 插入 dynamic table 的开头. 该插入可能导致 dynamic table 中已有条目被逐出 (见 Section 4.4).