学习HTTP2中的HPACK算法

文章目录

HPACK

专业术语:

  • Header Field(头部字段) :指的是一个由name - value组成的键值对。名称和值都被视为不透明的字节序列。
  • Dynamic Table(动态表):是一个与存储的头部字段相关联的索引值表。这个表是动态的,并且特定于一个编码或解码上下文。
  • Static Table(静态表):是一个静态地将频繁出现的头部字段与索引值相关联的表。这个表是有序的、只读的、始终可访问的,并且可能在所有的编码或解码上下文中共享。
  • Header List(头部列表):是一组被联合编码的有序的头部字段集合,可以包含重复的头部字段。HTTP/2头部块中包含的完整头部字段列表就是一个头部列表。
  • Header Field Representation(头部字段表示):头部字段在编码形式中可以表示为字面量或索引(见第2.4节)。
  • Header Block(头部块):是一系列头部字段表示的有序列表,解码后产生一个完整的头部列表。

动态表中的数据插入点

如下图 在静态表的数据之后 顺序插入 先进先出

两种基本数据类型 Integer String

  1. 整数表示(Integer Representation)
    • 描述了如何使用无符号可变长整数来表示诸如名称索引、头部字段索引或字符串长度等值。
    • 整数的编码方式包括一个前缀和(如果整数值不适合前缀)一个或多个额外的字节。前缀的大小(N位)是整数表示的一个参数。
    • 如果整数值小于2^N −1,则在N位前缀内编码。否则,前缀的所有位都设置为1,值减去2^N −1后,使用一个或多个字节的列表进行编码。
    • 解码整数值的过程包括将字节列表的顺序颠倒,去除每个字节的最高位,并将剩余的位连接起来,然后加上2^N −1以获得整数值。
  2. 字符串字面量表示(String Literal Representation)
    • 描述了如何将头部字段名称和值表示为字符串字面量。字符串字面量可以是直接编码的字节序列,或者使用Huffman编码。
    • 字符串字面量的编码包括一个标志位(H),表示字符串的字节是否使用Huffman编码,以及一个字符串长度字段,该字段使用7位前缀的整数表示。
    • 如果H为0,则编码数据是字符串字面量的原始字节。如果H为1,则编码数据是字符串字面量的Huffman编码。
相关推荐
闪电悠米14 分钟前
力扣hot100-240.搜索二维矩阵2-单调性剪枝详解
数据结构·算法·leetcode·矩阵·哈希算法
imuliuliang19 分钟前
关于基于图论的最短路径算法性能对比分析7
算法
imuliuliang44 分钟前
关于从栈与队列看算法思维的演化路径7
算法
春生野草1 小时前
个人笔记--大顶堆和基数排序
java·数据结构·算法
高铭杰1 小时前
Golang sync.Mutex实现原理学习
java·学习·golang
狗凯之家源码网1 小时前
狗凯源码库学习资源真实价值评测
学习
Bernice橘子1 小时前
职场英语学习计划Day024
学习
白狐_7981 小时前
【408计算机网络|第04章·下|408-CN-04B】网络层(下):路由算法、RIP、OSPF、BGP、IPv6与路由器
计算机网络·算法·智能路由器
donoot2 小时前
PaddleOCR + PyMuPDF 生成【全兼容双层 PDF】完整实操指南
人工智能·算法·pymupdf·paddleocr·双层pdf
paeamecium3 小时前
【PAT甲级真题】- Rational Sum (20)
数据结构·c++·python·算法·pat考试·pat