http2.0协议的特点

http2.0协议再http1.1 http1.0及以前的版本基础上,进行相应的修改。主要的特性有:
1。 二进制协议
http1.0之前都是文本协议,http1.1版本的头信息是文本,数据体可以是文本或者二进制数据。
http2.0协议整个都是二进制数据,协议头和数据体都是二进制协议。
协议头和数据体,都被称为“帧”(frame):头信息帧和数据帧。

2. 多工(Multiplexing)
HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了"队头堵塞"。

3. 数据流
HTTP/2的数据包不是顺序发送的,同一个连接,可以连续发不同的请求包,每个请求包都有唯一的ID。另外还规定,客户端发出的数据流,ID一律为奇数,服务器发出的,ID为偶数。
数据流发送一半的时候,可以取消,只需要给服务器发送信号(RST_STREAM帧)。而HTTP1.1版本只能关闭TCP连接,而HTTP2.0不需要关闭TCP连接。
客户端可以指定数据流优先级,优先级越高,越快获得响应。
4. 头信息压缩
HTTP 协议不带有状态,每次请求都必须附上所有信息。所以,请求的很多字段都是重复的,比如Cookie和User Agent,一模一样的内容,每次请求都必须附带,这会浪费很多带宽,也影响速度。
HTTP/2 对这一点做了优化,引入了头信息压缩机制(header compression)。一方面,头信息使用gzip或compress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。

5. 服务器推送
HTTP/2 允许服务器未经请求,主动向客户端发送资源,这叫做服务器推送(server push)。
常见场景是客户端请求一个网页,这个网页里面包含很多静态资源。正常情况下,客户端必须收到网页后,解析HTML源码,发现有静态资源,再发出静态资源请求。其实,服务器可以预期到客户端请求网页后,很可能会再请求静态资源,所以就主动把这些静态资源随着网页一起发给客户端了。

参考连接:
http://www.ruanyifeng.com/blog/2016/08/http.html(HTTP 协议入门)
http://kamranahmed.info/blog/2016/08/13/http-in-depth/(Journey to HTTP/2)

你可能感兴趣的:(网络编程)