HTTP/2 头部压缩 Header Compress(HPACK)详解

文章目录

        • [1. HPACK 的工作原理](#1. HPACK 的工作原理)
          • [1.1 静态表](#1.1 静态表)
          • [1.2 动态表](#1.2 动态表)
        • [2. 压缩过程](#2. 压缩过程)
          • [2.1 编码过程](#2.1 编码过程)
          • [2.2 解码过程](#2.2 解码过程)
        • [3. HPACK 的优势](#3. HPACK 的优势)

在HTTP1.0中,我们使用文本的形式传输header,在header中携带cookie的话,每次都需要重复传输几百到几千的字节,这着实是一笔不小的开销。

在HTTP2.0中,我们使用了HPACK(HTTP2头部压缩算法)压缩格式对传输的header进行编码,减少了header的大小。并在两端维护了索引表,用于记录出现过的header,后面在传输过程中就可以传输已经记录过的header的键名,对端收到数据后就可以通过键名找到对应的值。

1. HPACK 的工作原理

HPACK 使用两种主要方法来压缩头部信息:

  1. 静态表(Static Table)
  2. 动态表(Dynamic Table)
1.1 静态表
  • 静态表是一个预定义的头部字段表,其中包含了常见的 HTTP 头部字段。这些字段在所有 HTTP/2 连接中都是相同的。使用静态表可以减少传输的头部字段的字节数。

  • 示例:常见的静态表条目包括 ":method: GET", ":path: /index.html" 等。

1.2 动态表
  • 动态表是一个用于存储在连接期间动态更新的头部字段表。客户端和服务器可以向动态表中添加新的头部字段,并在后续请求或响应中引用这些字段。

  • 示例:如果某个特定的头部字段在多个请求中重复出现,可以将其添加到动态表中,以后只需引用该表条目,而不是重复发送完整的头部字段。

2. 压缩过程
2.1 编码过程
  • 步骤
    1. 查找静态表:首先在静态表中查找头部字段,如果找到,则直接引用静态表条目。
    2. 查找动态表:如果在静态表中未找到,则在动态表中查找,如果找到,则引用动态表条目。
    3. 添加到动态表:如果在静态表和动态表中均未找到,则将该头部字段添加到动态表中。
    4. 编码格式:将头部字段以特定的编码格式发送,包含索引值或字段名和值。
2.2 解码过程
  • 步骤
    1. 解析索引值:接收方根据索引值解析头部字段,确定是静态表条目还是动态表条目。
    2. 更新动态表:如果是新的头部字段,更新动态表。
    3. 恢复头部字段:根据编码格式恢复完整的头部字段。
3. HPACK 的优势
  • 减少冗余数据:通过静态表和动态表,有效减少了重复的头部字段传输。
  • 提高传输效率:压缩后的头部信息占用更少的字节数,减少了带宽消耗。
  • 动态适应:动态表的使用使得压缩算法能够适应不同的应用场景和请求模式。
相关推荐
Arvin62716 小时前
研发环境:SSL证书快速部署
网络·网络协议·ssl
酣大智16 小时前
DHCP中继配置实验
运维·网络·网络协议·tcp/ip·华为
aesthetician1 天前
WebSocket: 实时通信的脉动:深度解析与 TypeScript 实践
websocket·网络协议·typescript
云小逸1 天前
【网络通信】TCP核心原理深度解析:三次握手/四次挥手为基,拥塞控制与慢启动核心精讲
网络·网络协议·tcp/ip
深蓝电商API1 天前
httpx 异步客户端处理 WebSocket 数据
websocket·网络协议·httpx
苏渡苇1 天前
用 Spring Boot 项目给工厂装“遥控器”:一行 API 控制现场设备!
java·人工智能·spring boot·后端·网络协议·边缘计算
北京耐用通信1 天前
电子制造行业:耐达讯自动化Profinet转DeviceNet网关助力工业相机高效互联
人工智能·数码相机·物联网·网络协议·自动化·信息与通信
希赛网1 天前
华为认证数通备考,以太网交换机的基础原理与应用
网络协议·华为认证·数通·希赛·交换路由·交换机基础与应用·以太网交换
小李独爱秋1 天前
计算机网络经典问题透视:无线局域网名词中DCF和PCF的含义是什么?
网络协议·计算机网络·网络安全·信息与通信·dcf·pcf
酣大智1 天前
FTP--文件传输协议
运维·网络·网络协议·tcp/ip·华为