See You Again

http2初探

http协议由于其简单性、可读性好被大规模使用,但是逐渐暴露出了很多问题,比如传输效率低等。http2的出现主要就是解决效率的问题。不过现在还在小范围内试用(刚出的RFC提案),先来看看它的主要特性:

使用二进制协议传输数据确实会节省很多带宽,纯文本的数据传输真的很浪费。其实像google的protol buffer就是二进制协议格式了。不过失去的是可读性啊。

同个域名只需要占用一个TCP连接,消除了因多个TCP连接而带来的延时和内存消耗。单个连接上可以并行交错的请求和响应,之间互不干扰。
这个优化不必频繁的建立、终止TCP连接,对网络的利用更加高效。

客户端和服务器就可以在处理不同的流时采取不同的策略。

服务器除了响应客户端的请求外,还可以向客户端额外推送资源。

除了压缩还有增量头部算法,减少重复内容的传输。

可以看到,http2克服了http/1.1的不少patch方案:Spriting、内联(Inlining)、拼接(Concatenation)、分片(Sharding),但是丧失的是可读性、调试的方便性。

下面是摘取了二进制格式报文的示意图,可以参考TCP/IP的各层协议栈去理解。

  1. +-----------------------------------------------+
  2. | Length (24) |
  3. +---------------+---------------+---------------+
  4. | Type (8) | Flags (8) |
  5. +-+-------------+---------------+-------------------------------+
  6. |R| Stream Identifier (31) |
  7. +=+=============================================================+
  8. | Frame Payload (0...) ...
  9. +---------------------------------------------------------------+

究竟http2能不能火起来?我觉得这是一个长期的过程,程序效率是提升了,但是会丧失开发效率,所以,还是拭目以待吧。

2017-08-12 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑