学习HTTP2中的HPACK算法

news2024/12/30 2:32:28

文章目录

    • HPACK
      • 动态表中的数据插入点
      • 两种基本数据类型 Integer String

HPACK

专业术语:

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

动态表中的数据插入点

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

两种基本数据类型 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编码。

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

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

相关文章

哪个软件可以识别字幕并生成文本?5款最佳工具分享

你是否曾在深夜,抱着手机或电脑,对着那些充满异国情调却无从下手的外语视频感到束手无策? 那些或激昂、或深情、或幽默的对话,因为语言的隔阂而变得遥不可及,让你的观看体验大打折扣。 别急,今天我来告诉你…

AI绘画进阶 ComfyUI 实战教程:轻松给图片添加文字,附工作流教程使用

大家好,我是设计师阿威 在AI绘画中书写文字一直是个老大难的问题,直到SDXL的出现,文字生成才迎来转机,可以在提示词中指定一些英文字符,不过也是经常出错,生成中文就更加不可求了。 本文介绍一种在图片中…

2018-Comment-网鼎杯复现,二次注入

进入靶场 发现只有一个发帖功能,尝试发帖 提交后要去登录,但这里提示了账号密码,但密码后三位不知,可以尝试暴力破解 bp抓包 假设后三位是数字,设置payload 爆破成功,后三位为666 登录成功 但除了发帖没有…

安泰电压放大器放大的是什么信号

电压放大器是一种广泛应用于电子设备中的放大器,它主要用于放大电压信号。电压信号是指以电压形式传输的信号,可以是来自于传感器、音频设备、无线通信设备等各种电子设备中的信号。 电压放大器的基本原理 电压放大器是一种电子设备,它可以将…

使用idea对spring全家桶的各种项目进行创建

目录 1. 简介2. spring2.1 简介2.2 创建 3. springmvc3.1 介绍3.2 创建 4. springboot4.1 简介4.2 创建(仅仅就其中一种) 5. 其他:maven6. 参考链接 1. 简介 因为总是分不清spring全家桶,所以就在这里进行一个总结。 2. spring …

Java毕业设计-基于SSM框架的大型商场会员管理系统项目实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

在手机中安装Fiddler CA证书后,完美解决Fiddler无法进行手机HTTPS请求抓包的难题!

Fiddler抓包的通用配置 关与fidder抓取手机包的配置方法就不多说了,网上有很多方式,配置方式如下图: 但是即使成功配置,在抓取手机中https包时也会出错,这个时候,我们就需要在手机中安装Fiddler的 CA证书!…

80.SAP ME - SAP ERP向SAP ME传输物料主数据的方法

目录 SAP ERP与ME传输物料的几种方式 1.自动传输物料到SAP ME 2.手动发送 2.1 BD10 发送物料 2.2 DRFOUT 执行数据复制 2.3 POIM 发送主数据 SAP ERP与ME传输物料的几种方式 1.自动传输物料到SAP ME 这是标准方法,需要全面的配置,当在ERP里修改物…

Powerdesigner连接mysql数据库,逆向工程生成ER图 (保姆级教程:下载->连接->配置)看这一篇就够了

一、下载powerdesigner 下载的教程请看如下链接,我太懒了,直接借鉴! 把别大佬的博客搬过来了嘿嘿~我真聪明!ㄟ( ▔, ▔ )ㄏ 操作到完成汉化就好!!第5步不看了,别按那个走,因为新手…

数据获取- 抓住股市脉搏,用Python轻松获取比亚迪股票数据!

Hey小伙伴们,今天给大家带来一个超级实用的项目教程——如何用Python和tushare库来获取比亚迪的股票数据!🌟 🔍 项目背景 股市是个充满机遇与挑战的地方,而获取实时准确的股票数据则是每个投资者的基础技能。今天&am…

2024华数杯全国大学生数学建模竞赛B题-VLSI电路单元的自动布局

超大规模集成电路(VLSI,VeryLarge Scale Integration)将大量电路单元集成于单一芯片。随着设计复杂度增加,如今开展VLSI设计已离不开电子设计自动化(EDA,Electronic DesignAutomation)工具的支持。EDA作为算法密集型产业,需要对数…

Python 爬虫入门(七):requests 库的使用「详细介绍」

Python 爬虫入门(七):requests 库的使用「详细介绍」 前言1. 初识 requests1.1 安装 requests 库1.2 发送 GET 请求1.3 发送 POST 请求 2. HTTP 请求详解2.1 请求方法2.2 请求头2.3 请求参数 3. 处理响应3.1 响应内容3.2 响应状态码3.3 响应头…

控件的拖拽移动及定时器及画家

定时器时时都在调用 virtual void timerEvent(QTimerEvent *event);//定时器更新函数 timer new QTimer(this);timer->start(1000);connect(timer,&QTimer::timeout,[this](){static int num 0;ui->led1->display(num);if(num10){timer->stop();}}); 画图事…

【杂谈】计算机世界的原理——二进制数和位运算以及各种进制数的表示方法

【杂谈】计算机世界的原理——二进制数和位运算以及各种进制数的表示方法 1.常见位运算符和常用操作2.各种进制数的表示方法 1.常见位运算符和常用操作 大家都知道,计算机中是使用二进制数储存数据的。在这一篇文章,我将会带领大家初步探索二进制数。在后…

8G 显存玩转书生大模型 Demo 进阶任务

使用 LMDeploy 完成 InternLM-XComposer2-VL-1.8B 的部署,并完成一次图文理解对话,记录复现过程并截图。 使用 LMDeploy 完成 InternVL2-2B 的部署,并完成一次图文理解对话,记录复现过程并截图。 总结:貌似没加上下文…

2024最新最全面的Selenium 3.0 + Python自动化测试框架

文档说明 Selenium是一个用于Web应用程序自动化测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 Selenium测试的主要功能包括: 测试与浏览器的兼容性:测试应用程序是否能很好的工作在不同的浏览器和操作系统之上。…

聚焦汽车软件开发与测试:静态代码扫描、单元测试与集成测试等方面的实践应用

2024年7月18-19日,龙智携汽车软件开发及管理解决方案创新亮相2024 ATC汽车软件与安全技术周。龙智技术支持部负责人&Atlassian认证专家叶燕秀、龙智功能安全高级工程师景玉鑫在活动主会场联合发表了精彩演讲,分享推动汽车软件开发与功能安全的创新实…

【Deep-ML系列】Solve Linear Equations using Jacobi Method (雅可比迭代求解线性方程)

题目链接:Deep-ML 需要注意的是,np.diag 的返回值会根据输入参数的类型不同而有所不同: 输入为一维数组:np.diag 会返回一个以输入数组元素为对角线元素的对角矩阵。 输入为二维矩阵:np.diag 会返回输入矩阵的对角线元…

数组案例练习进阶版---对数组中的元素进行排序(选择法)

上期文章当中,我们一起了解了怎样查找数组中的元素,今天,再让我们来看一看怎样对数组中的元素进行排序吧。 再java中,关于数据的排序手段,多种多样,例如:选择法排序、冒泡法排序、快速排序等等…

Centos7.9操作系统kdump crash文件vmcore未生成问题

Centos7.9操作系统kdump crash文件未生成问题 一、背景说明1、问题背景 二、排查思路1、先了解下crashkernelcrashkernel设置方式示例如何配置crashkernel验证crashkernel配置 2、再了解下kdump2.1 Kdump 的基本概念2.1.1. 生产内核(Production Kernel)2…