加载中...
HPACK 是 HTTP/2 专用的头部压缩算法,通过静态表、动态表和哈夫曼编码大幅减少请求与响应头的冗余字节,同时刻意规避了通用压缩算法在加密流量中易被利用的安全漏洞。

| 中文名 | HTTP/2 头部压缩 |
| 所属协议 | HTTP/2 |
| 核心结构 | 静态表、动态表 |
| 编码方式 | 哈夫曼编码 |
| 后继算法 | QPACK |
HPACK是 HTTP/2 定义的头部字段压缩格式,它专门针对 HTTP 头部高度重复的特点,利用预置的静态表、连接内维护的动态表以及哈夫曼编码,把每次请求都要携带的大量重复头信息压缩到极小体积。
在 HTTP/1.1 中,每个请求都要完整发送诸如用户代理、Cookie、接受编码等头部,而这些字段在同一次会话中往往几乎不变,造成大量冗余。早期曾尝试用通用压缩算法压缩头部,却因此招致了针对加密流量的攻击。HPACK 应运而生,在提供高压缩率的同时抵御这类风险。
HPACK 在所有 HTTP/2 通信中默默工作,尤其对携带大量 Cookie、认证令牌的接口效果显著,能明显降低请求开销、提升高并发下的传输效率。它是 HTTP/2 相较 HTTP/1.1 性能提升的重要一环。
问:HPACK 和 gzip 有什么不同?答:gzip 是通用压缩,作用于消息体;HPACK 是专为 HTTP 头部设计的压缩格式,基于索引表工作,并针对加密场景做了安全加固,二者用途不同。
问:HTTP/3 还用 HPACK 吗?答:不用。HTTP/3 基于 QUIC,其乱序特性使 HPACK 的动态表机制不再适用,因此改用专门设计的 QPACK 算法。

| 中文名 | HTTP/2 头部压缩 |
| 所属协议 | HTTP/2 |
| 核心结构 | 静态表、动态表 |
| 编码方式 | 哈夫曼编码 |
| 后继算法 | QPACK |
登录 后参与讨论
暂无讨论,来发表第一条评论吧