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

文章目录

        • 1. HPACK 的工作原理
          • 1.1 静态表
          • 1.2 动态表
        • 2. 压缩过程
          • 2.1 编码过程
          • 2.2 解码过程
        • 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 的优势
  • 减少冗余数据:通过静态表和动态表,有效减少了重复的头部字段传输。
  • 提高传输效率:压缩后的头部信息占用更少的字节数,减少了带宽消耗。
  • 动态适应:动态表的使用使得压缩算法能够适应不同的应用场景和请求模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

尚品汇-(三)

maven之packaging标签 (1)项目创建父模块 首先设置 下Maven Maven:仓库地址:这里是腾讯云仓库 作为父模块,src没用,干掉src 这里我们是Maven创建的项目,想要项目变成SpringBoot的项目&#xf…

程序猿大战Python——面向对象——继承基础

定义类的几种语法 目标:了解定义类的标准语法。 我们知道,可以使用class关键字定义类。 在类的使用中,定义方式有三种: (1)【类名】 (2)【类名()】 (3)【…

MySQL表的增删改查初阶(下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

在线二维码解码器:将二维码转换成网址链接

在当今数字化时代,二维码(QR码)已成为一种便捷的信息传递工具。它不仅可以存储大量数据,还能快速分享信息。然而,有时我们需要将二维码中的内容转换为网址链接,以便在浏览器中直接访问。小编将详细介绍如何…

2024头歌数据库期末综合(部分题)

目录 第7关:数据查询三 任务描述 知识补充 答案 第8关:数据查询四 任务描述 知识补充 答案 本篇博客声明:所有题的答案不在一起,可以去作者博客专栏寻找其它文章。 第7关:数据查询三 任务描述 本关任务&#x…

[C++ STL] list 详解

标题&#xff1a;[C STL] vector 详解 水墨不写bug 正文开始&#xff1a; 一、背景 C语言阶段&#xff0c;我们如果想要使用链表&#xff0c;需要自己手动实现一个链表。这是非常低效的做法&#xff0c;C中的STL中提供了链表“ list ”&#xff0c;我们在包含头文件 <list…

小米15系列将首发骁龙8 Gen4 SoC

高通已确认2024年骁龙峰会定于10月21日举行。在这次峰会中高通将推出其最新的移动芯片Snapdragon 8 Gen4 SoC。著名科技博主DigitalChatStation今天证实&#xff0c;骁龙8 Gen4将以小米15系列首次亮相。这意味着小米15系列将是第一款使用这款新旗舰处理器的手机。 这不是小米第…

C++ 编程技巧分享

侯捷 C 学习路径&#xff1a;面向对象的高级编程 -> STL库 -> C11新特性 -> cmake 1.1. C 与 C的区别 在C语言中&#xff0c;主要存在两大类内容&#xff0c;数据和处理数据的函数&#xff0c;二者彼此分离&#xff0c;是多对多的关系。不同的函数可以调用同一个数据…

小i机器人:总负债5.31亿,员工数量在减少,银行借款在增加,净利润已下降-362.68%

小i机器人:总负债5.31亿,员工数量在减少,银行借款在增加,总收入在增长,净利润已下降-362.68% 来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 目录 一、小i机器人公司介绍 二、小i机器人过去20年的发展历程和取得的成就 三、小i机器人的产品和技术架构 四、小i机器人…

[最新教程]Claude Sonnet 3.5注册方法详细步骤分享,新手小白收藏,文末免费送已注册的Claude账号

一.Claude sonnet 3.5大模型面世 6月21日&#xff0c;被称为“OpenAI 最强竞对”的大模型公司 Anthropic 发布了 Claude 3.5 系列模型中的第一个版本——Claude 3.5 Sonnet。 Anthropic 在官方博客中表示&#xff0c;Claude 3.5 Sonnet 提高了智能化的行业标准&#xff0c;在…

基于卷积神经网络的目标检测

卷积神经网络基础知识 1.什么是filter 通常一个6x6的灰度图像&#xff0c;构造一个3*3的矩阵&#xff0c;在卷积神经网络中称之为filter,对&#xff16;x6的图像进行卷积运算。 2.什么是padding 假设输出图像大小为nn与过滤器大小为ff&#xff0c;输出图像大小则为(n−f1)∗(…

【计算机毕业设计】204基于微信小程序疫情期间学生请假与销假系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

同一天里,两位大厂程序员猝死。。。

2024年&#xff0c;真的不是平静的一年。在几天前&#xff0c;IT行业接连发生了两件不幸的事情。 6月17日下午&#xff0c;东南亚电商公司Sh**ee位于北京的研发中心&#xff0c;一位负责研发的女员工突然在工位上晕倒。 同事们赶紧拨打了120&#xff0c;然而还是没能抢救过来&a…

【验证码识别】Yolov8实战某验3空间推理点选验证码,目标检测,语义分割,颜色分类。

【验证码识别】Yolov8实战某验3空间推理点选验证码&#xff0c;目标检测&#xff0c;语义分割&#xff0c;颜色分类。 文章目录 【验证码识别】Yolov8实战某验3空间推理点选验证码&#xff0c;目标检测&#xff0c;语义分割&#xff0c;颜色分类。声明1.空间推理验证码&#xf…

2024年全国青少信息素养大赛python编程复赛集训第四天编程题分享

整理资料不容易,感谢各位大佬给个点赞和分享吧,谢谢 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准函数; 2.掌握注释的方法; 3.掌握基本数…

Studying-代码随想录训练营day17| 654.最大二叉树、617合并二叉树、700.二叉搜索树中的搜索、98.验证二叉树搜索树

第十七天&#xff0c;二叉树part05&#xff0c;进一步学习二叉树&#x1f4aa; 654.最大二叉树 文档讲解&#xff1a;代码随想录最大二叉树 视频讲解&#xff1a;手撕最大二叉树 题目&#xff1a; 学习&#xff1a;本题与利用中序和后序序列构造二叉树有相同之处。依据题目要求…

第五篇:构建与维护私有Docker Registry: 企业级实践指南

构建与维护私有Docker Registry: 企业级实践指南 1. 引言&#xff1a;解析私有Docker仓库的必要性 1.1 Docker Registry简介与私有化的好处 Docker Registry是一个用于存储和分发Docker镜像的系统。在Docker生态系统中&#xff0c;Registry扮演着至关重要的角色&#xff0c;为…

骨传导耳机值不值得入手?五款运动好物骨传导耳机推荐!

开放式耳机在如今社会中已经迅速成为大家购买耳机的新趋势&#xff0c;开放式蓝牙耳机作为骨传导耳机&#xff0c;深受喜欢听歌和热爱运动的人群欢迎。当大家谈到佩戴的稳固性时&#xff0c;后挂式骨传导耳机都会收到一致好评。对于热爱运动的人士而言&#xff0c;高品质的骨传…

A800显卡驱动安装(使用deb安装)

重新安装显卡驱动&#xff0c;查阅了资料将过程记录如下&#xff1a; 1.下载deb安装包 打开nvidia官网查找对应的驱动版本&#xff0c;A800所在的选项卡位置如图&#xff1a; 点击查找后下载得到的是nvidia-driver-local-repo-ubuntu2004-550.90.07_1.0-1_amd64.deb安装包 2.…

UDS服务——RequestDownload(0x34)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍RequestDownload(0x34)—— 请求下载,用于给ECU下载数据的,最常见的应用就是在bootloader中,程序下载工具会发起请求下载,以完成ECU程序的升级。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿…