HTTP/2

HTTP/2

HTTP/2是HTTP工作组吸取了谷歌SPDY协议的经验和教训后,定制的新的HTTP版本协议。

兼容性
  • HTTP/2与HTTP1.1是兼容的。表现在两个方面:①URL范式没变。②一来一回。
  • HTTP/2实际是处在HTTP1.1与TCP层中间的一层。
二进制分帧——致力于解决队头阻塞问题
  • HTTP1.1本身是明文的字符格式,二进制分帧的含义是将这个字符报文给TCP之前,要转换成二进制的格式。这还不够,还要将其分成多个帧,也就是数据块。
  • 如下图所示。不同颜色的数据块代表二进制分帧的结果,发送请求可以不按照顺序发送,接受响应时,也不一定按照顺序接受。它们变成了逻辑上的流。那么如何保证数据的完整性呢?——为数据块编号,即流ID(反应在图中就是一个颜色)。这样就不会乱了。所以请求1,2,3可以乱序地返回。

[外链图片转存失败(img-s01Doelc-1564211277900)(C:\Users\Administrator\Desktop\CoolJava\计算机网络\图片\二进制分帧.jpg)]

在这里插入图片描述

  • 存在的问题
  1. 仍然不能彻底解决“队头阻塞”的问题。因为TCP是一个先进先出的协议。所以只要用TCP就一定会有可能产生队头阻塞。比如上图中F3被阻塞了,后面的数据包就不能发过来。亦如,FF1被阻塞了,也是如此。但是二进制分帧减少了队头阻塞的可能性。
  2. 如果一个数据包迟迟不到,那么可能是服务器处理较慢或者网络延迟较大。对于前者,二进制分帧能明显提高服务器处理效率,对于后者,无论是原始的串行还是二进制分帧,都是可能发生的情况,无法避免。所以总的来说,用TCP,就可能阻塞。不用TCP的话,可以用UDP,这是谷歌QUIC协议干的事儿。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值