1、http1.1一些瓶颈问题
同一个域名下的并发连接数有限,一般是6个;即使使用了http长连接,减少tcp三次握手,但是单连接上是串行请求,当发出请求再等待会浪费大量时间,所以网络带宽增加时,并发发送的消息提升有限,网络延迟没有改善。
http1.1请求之间是无状态的,有时为了传输cookie,会导致http头部体积膨胀,并且重复传输时,仍然每次都要携带,带宽利用率太低。
2、http2.0改进的地方
2.1、多路复用
http2.0中一个tcp连接可以多个stream,就是通过这些stream实现多路复用;在这些stream内部依然和http1.1一样是串行的发送,但是多个stream却是可以无序的,从而实现并发多路发送。
同时一个stream里可以有多个message,每个message就是一个请求或者响应,这个可以类似于http1.0的长连接。即由客户端向服务器发送请求,这种模式并没有改变。
还有一个message里面还可以有多个Frame,这个是真正存放数据的地方也是http2.0协议中最小的单位,是以二进制压缩格式存放的,这也是一个优化点,后面讨论。比如http1.1时发送一个请求由header+body组成,则在http2.0里就变成了header Frame和data Frame。
那么接收端如何接受呢?
每个Frame里有个streamid标