HTTP2

前言

HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的HTTP协议。

HTTP2

HTTP发展历程

客户端----下单   服务端---发货   交易结束      #连接无法服用

客户端----下单1   服务端---发货1  客户端----下单2   服务端---发货2  客户端----下单3   服务端---发货3   #设置Connection:Keep-Alive,保持连接在一段时间内不断开  HTTP1.1支持

客户端----下单1 客户端----下单2 客户端----下单3  服务端---发货1 服务端---发货2 服务端---发货3  #HTTPpipelining:建立多个连接  HTTP1.1支持

客户端----下单1 客户端----下单2 客户端----下单3 服务端---订单1-包裹1 服务端---订单1-包裹2 服务端---订单2-包裹1 服务端---订单2-包裹2 服务端---订单3-包裹1 服务端---订单3-包裹2   #多路复用 HTTP2

浏览器阻塞

浏览器对于同一个域名,一般PC端浏览器会针对单个域名的server同时建立6~8个连接,手机端的连接数则一般控制在4~6个(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。

1.基本介绍

HTTP2主要提升了性能,http2的所有帧都采用二进制编码

帧:HTTP2最小单位
消息:逻辑上的http消息,由一个或多个帧组成
流:连接中的一个虚拟通道,可以承载双向的消息

HTTP2的连接都是持久化的

2.SPDY协议

SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩多路复用优先级来缩短加载时间。该协议是一种更加快速的内容传输协议,于2009 年年中发布。

GoogleChrome、MozillaFirefox以及Opera已默认开启SPDY。Google曾经称它的测试显示,页面载入提高了一倍。该协议是一种更加快速的内容传输协议。

SPDY协议设定的目标

    1. 页面加载时间(PLT,Page • Load Time)降低 50%;

    2. 无需网站作者修改任何内容;

    3. 最小化配置复杂度,无需变更网络基础设施;

注:为了达到降低50% 页面加载时间的目标,SPDY 引入了一个新的二进制分帧数据层,以实现多向请求和响应、优先次序、最小化及消除不必要的网络延迟,目的是更有效地利用底层TCP 连接;

3.HTTP/2:SPDY的升级版

HTTP/2 是如何提高效率呢?

二进制分帧:HTTP 2.0 的所有帧都采用二进制编码

  • :客户端与服务器通过交换帧来通信,帧是基于这个新协议通信的最小单位。

  • 消息:是指逻辑上的 HTTP 消息,比如请求、响应等,由一或多个帧组成。

  • :流是连接中的一个虚拟信道,可以承载双向的消息;每个流都有一个唯一的整数标识符(1、2…N);

HTTP2


多路复用 (Multiplexing)

    多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。有了新的分帧机制后,HTTP/2 不再依赖多个TCP 连接去实现多流并行了。每个数据流都拆分成很多互不依赖的帧,而这些帧可以交错(乱序发送),还可以分优先级。最后再在另一端把它们重新组合起来。HTTP 2.0 连接都是持久化的,而且客户端与服务器之间也只需要一个连接(每个域名一个连接)即可。 


请求优先级

  • 把HTTP 消息分解为很多独立的帧之后,就可以通过优化这些帧的交错和传输顺序,每个流都可以带有一个31 比特的优先值:0 表示最高优先级;2的31次方-1 表示最低优先级。

  • 服务器可以根据流的优先级,控制资源分配(CPU、内存、带宽),而在响应数据准备好之后,优先将最高优先级的帧发送给客户端。

  • HTTP 2.0 一举解决了所有这些低效的问题:浏览器可以在发现资源时立即分派请求,指定每个流的优先级,让服务器决定最优的响应次序。这样请求就不必排队了,既节省了时间,也最大限度地利用了每个连接。



HTTP/2的多路复用和HTTP1.1中的长连接复用有什么区别?

  • HTTP/1.0 一次请求-响应,建立一个连接,用完关闭;每一个请求都要建立一个连接;

  • HTTP/1.1 Pipeling解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;

  • HTTP/2多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行;


   HTTP2


参考文章:http://mp.weixin.qq.com/s/jBOky6nld7XxZFecd7mIgA?scene=25#wechat_redirect