简介
HTTP/1 的升级版
1999 : HTTP/1 发布
2014年:HTTP/2递交审批
2015年::HTTP/2 批准
特点/优势
1. 二进制分帧
概念
- 帧: 数据通信的最小单位。
- HTTP消息: 包括http请求+响应 = n个帧组成
- 流:虚拟通道, 承载消息(双向),每个消息都有一个唯一标识ID
对比传输方式
HTTP/1 : 请求和响应报文 :起始行+首部+实体正文(可选)组成,通过文本换行符分隔
HTTP/2 :请求和响应分割为更小的帧,采用二进制编码,将数据以二进制格式传输
统一域名下的通信都是在单个连接下进行,可以接受无限多个消息(n个帧), 帧是乱序发送的,拿到请求后,根据消息的ID进行重组
2. 多路复用
多流并行问题
- HTTP 1.x 中,如果想并发多个请求,必须使用多个 TCP 链接,浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制
- HTTP/2 只需要使用一个TCP
原因如下:
- 对于同一个域名下的通信都是在单个连接(TCP)进行的
- 它可以承载任意的双向数据流
- 消息进行通信,消息由多个帧组成,帧之间乱序发送,之后重组
优势:
- 单个tcp,减少消耗
- 各个帧之间传送互不干扰 3, 每个消息会携带优先级标识,可以调优
3. 服务器推送服务
传统的模式:浏览器解析到相应位置时,再去发送请求再返回。
使用HTTP/2:服务端会发送页面html,就会把js和css一起发送过去 ,这样就不用等到浏览器解析的时候再去发请求处理
4. 头部压缩
传统的HTTP 通信: 头部会携带许多用于描述这次通信的的资源、浏览器属性、cookie。
使用HTTP/2:
- HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键-值对,对于相同的数据,不再通过每次请求和响应发送;
- 首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新;
- 每个新的首部键-值对要么被追加到当前表的末尾,要么替换表中之前的值。