前言
http0,http1本身低效的限制,存在瓶颈。
http/2 是超文本传输协议2.0,是下一代http协议。HTTP/2 通过多路复用、二进制流、Header 压缩等等技术,极大地提高了性能,http2会慢慢取代HTTP/1.x 而被广泛采用,更适合较高的请求量。
5G和HTTP/2
5G商用,在5G里采用HTTP协议 ,应用到HTTP相关技术:
HTTP/2
JSON
HATEOAS
RESTful
二进制协议
HTTP/1.1 版的是基于文本(ASCII编码)传输的,效率低也不安全。HTTP/2 则是一个彻底的二进制协议编码,头信息和数据体都是二进制,可以进行压缩,并且统为"帧"(frame):头信息帧和数据帧,二进制协议解析起来更高效更安全。
HTTP/2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
多路复用
多路复用,代替原来的序列和阻塞机制。所有就是请求的都是通过一个 TCP连接并发完成。 HTTP 1.x 中,如果想并发多个请求,必须使用多个 TCP 链接,且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制
在 HTTP/2 中,有了二进制分帧之后,HTTP /2 不再依赖 TCP 链接去实现多流并行了,在 HTTP/2中:
同域名下所有通信都在单个连接上完成。
单个连接可以承载任意数量的双向数据流。
数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。
HTTP/2 Server Push机制
在HTTP/2里,可以将多个回应一起发送
HTTP/2 允许服务器未经请求,主动向客户端发送资源,这叫做服务器推送(server push)
压缩策略
HTTP/2对这些首部采取了压缩策略:
HTTP/2在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键-值对,对于相同的数据,不再通过每次请求和响应发送;
首部表在HTTP/2的连接存续期内始终存在,由客户端和服务器共同渐进地更新;
每个新的首部键-值对要么被追加到当前表的末尾,要么替换表中之前的值
HTTP/2的通过支持请求与响应的多路复用来减少延迟,通过压缩HTTP首部字段将协议开销降至最低,同时增加对请求优先级和服务器端推送的支持。
HTTP/1.x 有连接无法复用、队头阻塞、协议开销大和安全因素等多个缺陷。
HTTP/2 通过多路复用、二进制流、Header 压缩等等技术,极大地提高了性能,http2会慢慢取代HTTP/1.x 而被广泛采用。
HTTP/2的支持
现在主流的软件都支持HTTP/2
基本上大部分浏览器在2015年底都支持HTTP/2了,包括Chrome、Opera、Firefox、IE 11、Safari,Edge。
网友评论