请选择 进入手机版|继续访问电脑版
发新帖

HTTP2.0简介

[复制链接]
173 1

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
HTTP2.0
HTTP2.0的目的就是通过支持请求与响应的多路复用来减少延迟、通过压缩HTTP首部字段将协议开销降至最低,同时增加对请求优先级和服务器端推送的支持,HTTP2.0不会改动HTTP的语义、HTTP方法、状态码、URI和首部字段等这些核心概念,但是HTTP2.0修改了数据传输的方式和数据格式化的方式。


二进制分帧层
在传输层和应用层之间新增了二进制分帧层,它位于应用层之内,处于应用层可见的高层HTTP API之下的一个新机制,HTTP的语义不受影响,只是在传输期间对数据的编码方式做出修改,HTTP1.x以换行符作为纯文本的分隔符,而HTTP2.0将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码。
HTTP2.0中的新概念:
  • 流,已建立连接上的双向字节流;
  • 消息,与逻辑消息对应的完整的一系列数据帧,比如请求、响应等;
  • 帧,HTTP2.0通信的最小单位,每个帧的首部含有流标识符。
所有的HTTP2.0的通信都是在一个TCP连接上完成,这个TCP连接可以承载任意数量的双向数据流,相应的,每个数据流以消息的形式发送,而消息由一个或多个帧组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装。由于所有的帧都采用二进制编码,所以首部字段都会被压缩。
在HTTP1.x中,如果客户端想发送多个并行的请求以改进性能,就必须使用多个TCP连接,HTTP2.0实现了多路复用,客户端和服务器可以把HTTP消息分解为互不依赖的帧,然后乱序发送,最后在另一端把它们重新组装起来。这样就可以只使用一个TCP连接即可并行发送多个请求和响应。

请求优先级
把HTTP消息分解为很多独立的帧之后,就可以通过优化这些帧的交错和传输顺序,进一步提升性能,为了做到这一点,每个流都可以携带有31bites的优先值。服务器可以根据流的优先级,控制资源的分配,而在响应数据准备好之后,优先将最高优先级的帧发送给浏览器。


服务器推送
在HTTP2.0,服务器可以额外的向浏览器推送资源,当浏览器请求资源A时,而服务器知道它很可能也需要资源B,服务器可以在浏览器发送请求前,主动将资源推送给客户端。这个功能可以帮助客户端将资源B放进缓存。


首部压缩
HTTP1.x的每一次通信都会携带一组首部,用于描述传输的资源及其属性,这通常会增加500-800字节的开销,为了减少这些开销提升性能:
  • HTTP2.0会使用首部表来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送;
  • 首部表在HTTP2.0连接持续期内始终存在,由服务器和浏览器渐进的更新;
  • 每个新的首部字段要么被追加到当前首部表的末尾,要么替换首部表之前的值;
在上面的例子中,第二次发送请求只需要发送变化了的字段,从而显著的减少了每个请求的开销。

举报 使用道具

回复

精彩评论1

江海志  管理员  发表于 2018-9-28 21:56:20 来自手机  | 显示全部楼层
很有用,学习学习

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表