http1和http2的主要区别

2023-09-21 12:50:27

主要有四个方面:

  • 二进制分帧
  • 多路复用
  • 服务器主动推送
  • 头部压缩

将前两点结合来说,首先 二进制分帧

帧:HTTP/2 数据通信的最小单位;

消息:HTTP/2 中,例如在请求和响应等操作中,消息由一个或多个帧组成;

流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID。

而二进制分帧是发生在 应用层和传输层 中间产生的一层 二进制分帧层 中,将 请求头和请求行 封装为 HEADER FRAME,请求体封装为 DATA FRAME。HTTP 1.x 采用文本格式传输数据,HTTP/2 采用二进制格式传输数据,二进制协议解析起来更高效。

acdb0dd8517648c68e12742e80b392a9.jpg

 

接下来是 多路复用

HTTP 1.x 中,想并发多个请求时,必须建立多个 TCP 链接,并且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制。

而HTTP/2 可以实现 多流并行,利用单个连接可以承载任意数量的双向数据流。

数据流以消息的形式发送,而消息又由一个或多个帧组成,根据帧首部的流标识可以重新组装,因此多个帧之间可以乱序发送

然后是 头部压缩

HTTP/1.x 会在请求和响应中一直携带冗长的头部数据,给网络带来额外的负担。

HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键-值对,对于相同的数据,不再重复发送,每个新的首部键-值对会进行追加或替换操作[只发送差异数据,而不是全部发送,从而减少头部的信息量]。首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新。

最后是 服务器主动推送

服务端可以在发送页面HTML时主动推送其它资源,例如:JS和CSS文件,而不用等到浏览器解析到相应位置,再发起请求等待响应。

服务端可以主动推送,客户端也可以选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送遵守同源策略,服务器不会任意推送第三方资源给客户端。

更多推荐

推荐几款优秀的项目报表软件

项目报表在项目工作中扮演着重要的角色,它是领导和客户了解项目进况的直接途径。有需求就会有市场,为解决传统报表制作复杂困难的问题,专业报表工具应运而生。一款好用的项目报表软件可以帮助项目团队快速产出项目报表,实现数据可视化,进行高效的项目数据分析。有什么好用的项目报表软件?在琳琅满目的项目报表软件产品中,有什么好用的项目

Linux开发工具之项目自动化构建工具-make/Makefile

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建makefile带来的好处就是自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率下面来看一个实例:在Makefile文件里可以如上图一样g++/gcc编译代码一步到位,也可以如下图一样,一步一步拆

滨州ITSS认证流程,认证条件

ITSS认证流程,认证条件一、ITSS的意义ITSS认证——信息技术服务标准,是在工业和信息化部、国家标准化委的领导和支持下,由ITSS工作组研制的一套IT服务领域的标准库和一套提供IT服务的方法论。ITSS认证-信息技术服务标准是一套成体系和综合配套的信息技术服务标准库,全面规范了IT服务产品及其组成要素,用于指导实

css --- 让人上头的flex

用自己的理解记录下flex的知识点,部分文字描述是在学习其他作者分享的文章觉得很好而使用的,不是无脑搬运,是学习和借鉴!一、基本原理二、flex容器和项目三、轴线四、flex属性4.1属性汇总4.2属性分类4.3属性详解(1)flex-direction(2)flex-wrap(3)flex-flow(4)justif

VLAN的配置实例

基于端口的vlan划分以下配置为例:注意选择copper线,可以任意选择端口PC配置如下:LSW1配置如下[LSW1]vlan10[LSW1-vlan10]qu[LSW1]interfaceg0/0/9[LSW1-Gigabitethernet0/0/9]portlink-typeacces[LSW1-Gigabite

【脑机接口论文与代码】 基于自适应FBCCA的脑机接口控制机械臂

Brain-ControlledRoboticArmBasedonAdaptiveFBCCA基于自适应FBCCA的脑机接口控制机械臂论文下载:算法程序下载:摘要1项目介绍2方法2.1CCA算法2.2FBCCA算法2.3自适应FBCCA算法3数据获取4结果4.1脑地形图4.2频谱图4.3准确率5结论基于自适应FBCCA的

2023最新如何轻松升级、安装和试用Navicat Premium 16.2.10 教程详解

🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🦄博客首页——🐅🐾猫头虎的博客🎐🐳《面试题大全专栏》🦕文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》🐾学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》🐅学会Gol

Linux学习第16天:Linux设备树下的LED驱动开发:举一反三 专注专心专业

Linux版本号4.1.15芯片I.MX6ULL大叔学Linux品人间百味思文短情长在开题之前,先说一下这次的题目,尤其是后面的“举一反三专注专心专业”到底想给大家传递什么信息。LED驱动开发,目前为止已经学了好几种方法,包括裸机开发、嵌入式LinuxLED驱动开发以及基于API函数的LED驱动开发,再加上今天要学习的

基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)

养老院管理系统一、前言二、我的优势2.1自己的网站2.2自己的小程序(小蔡coding)2.3有保障的售后2.4福利三、开发环境与技术3.1MySQL数据库3.2Vue前端技术3.3SpringBoot框架3.4微信小程序四、功能设计4.1主要功能描述五、系统实现5.1养老院老人功能5.1.1饮食喜好5.1.2体检结果

为何学linux及用处

目前企业使用的操作系统无非就是国产类的,windows和linux类。我们要提升自己的技能,需要学习这两款。我记得在大学时期,学习过windows以及linux,但当时觉得又不常用,就学的模棱两可。毕业之后,你会发现,其实这两种操作系统是很主流的。为什么学?下面就是一些工作中遇到的例子分享一下。我记得在企业中有次遇到数

jvm深入研究文档--整体概念

阿丹:精通JVM对于一个java工程师非常重要,要是深入了解了jvm就可以有效的面对下面的问题程序调优:JVM的配置和调优对于程序的运行有着至关重要的影响。不同的业务场景需要不同的JVM配置,比如设置不同的垃圾收集器、调整新生代和老生代的内存配置和占比等。只有深入理解JVM,才能针对不同情况进行有效的调优,以满足程序高

热文推荐