http2协议的草案已经出来了,阅读了一下网上的中文版,http2尽可能的兼容http1.1。改进了http1.1协议的不足。
http1.0和http1.1的缺点:
1.http1.0只允许在一个连接上建立当前未完成的请求
2.http1.1管道只部分处理了请求并发和包头堵塞问题,客户端多建立TCP连接,减少延迟
3.报头字段经常重复和冗长,数据包变大,容易造成初始TCP端口的堵塞,多建立几个TCP连接
http2x协议解决之道:
1.优化基础连接的语义映射,例如同一个连接上建立交错的请求和响应,使用高效率编码的报头字段
2.允许请求的优先级,让更多重要的请求先完成
http2协议的特点:
1.http2中最基本的协议单位是帧。每个帧都有不同的类型和用途。例如,报头(HEADERS)和数据(DATA)帧组成了基本的http请求和响应。帧包含的HTTP报头字段是压缩的。HTTP请求有可能是高度冗余的,因此压缩能显著减少请求和响应的大小。
2.请求多路复用:一个流上分配多个HTTP请求响应交换,流在很大程度上是相互独立的,因为一个请求上的阻塞和终止不会影响其他请求的处理。
3.流量控制和优先级确保正确使用复用流,流量控制有助于确保只传播接受需要的数据,优先级确保有限的资源能被重要的请求使用
4.添加了一种新的交互模式,即服务器能推送消息给客户端。服务器推送允许服务端预测客户端需要来发送
数据给客户端,交换网络使用以阻塞潜在的延迟增长。服务器通过复用一个以PUSH_PROMISE帧发送的请求来实现推送,然后服务端可以在一个单独的流里面发送响应给这个合成的请求。
最新评论(33)
引用来自“Solidsnake”的评论
完全不懂这个帧和目前的行有什么区别.HTTP协议本身就是以人可以看懂为前提的, 这样做会不会有点像TCP这种底层协议靠拢了?
如果真的是这样, 那为什么不直接用TCP
引用来自“Solidsnake”的评论
完全不懂这个帧和目前的行有什么区别.HTTP协议本身就是以人可以看懂为前提的, 这样做会不会有点像TCP这种底层协议靠拢了?
如果真的是这样, 那为什么不直接用TCP
HTTP协议本身就是以人可以看懂为前提的, 这样做会不会有点像TCP这种底层协议靠拢了?
如果真的是这样, 那为什么不直接用TCP
引用来自“iman123”的评论
这个google还是baidu翻译的啊,还是看英文版原文吧或者看看这个(https://github.com/fex-team/http2-spec/blob/master/HTTP2%E4%B8%AD%E8%8B%B1%E5%AF%B9%E7%85%A7%E7%89%88%2806-29%29.md)吧
引用来自“雨翔河”的评论
4是啥意思引用来自“蟋蟀哥哥”的评论
现在的消息推送都是利用心跳连接保持,用2.0的话,可以不保持心跳连接,服务端主动给浏览器推送消息引用来自“Micooz”的评论
高大上引用来自“ihuotui”的评论
它到底要怎么实现?主动发消息,那么终端也是服务器了,大家都是服务器,互相请求,哈哈。引用来自“代码之美”的评论
如果重新拨号了咋发引用来自“jingweiyoung”的评论
这标题怎么感觉怪怪的,"http2中最基本的协议单位是帧。每个帧都有不同的类型和用途。"
以前不是吗??
引用来自“keengo”的评论
以前不是引用来自“雨翔河”的评论
4是啥意思引用来自“蟋蟀哥哥”的评论
现在的消息推送都是利用心跳连接保持,用2.0的话,可以不保持心跳连接,服务端主动给浏览器推送消息引用来自“Micooz”的评论
高大上引用来自“ihuotui”的评论
它到底要怎么实现?主动发消息,那么终端也是服务器了,大家都是服务器,互相请求,哈哈。