HTTP/2.0的优点


前言

目前的网络世界已经发展的极其迅速,而目前作为主流的 HTTP 协议版本 HTTP/1.1 协议将会逐渐被 HTTP/2.0 或 HTTP/3.0 所替代。国外的大型互联网厂商比如:Google、FaceBook、Twitter等都已经开始采用了 HTTP/2.0 协议,而国内一些优秀的公司也在进行技术的更新换代,比如已知的有:阿里、腾讯和字节跳动等,注意:百度截至目前写文章时仍是使用的 HTTP/1.1 协议。

我这里并不是说使用 HTTP/1.1 不好,因为目前网络社会中,HTTP/1.1 仍是主流,但是我觉得作为优秀且具有优秀程序员公司的互联网企业应该跟随技术的脚步,不断探索创新。以下我将会从技术方面总结一下 HTTP/2.0 相较于 HTTP/1.1 有哪些优点。

优点

在 HTTP/1.1 成为主流之前,其实其前面还有迭代版本,HTTP/0.9 和 HTTP/1.0 只不过 HTTP/1.1 克服众多缺点及优化了部分性能,才得以成为当今网络社会中的主流,但在不久的未来终将也会被淘汰。

所以在 HTTP/2.0 中比 HTTP/1.1 的优点主要有如下:

1.头部压缩

HTTP/1.1 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。但是 HTTP/2.0 会压缩头(Header),并且如果你同时发送多个请求,他们的请求头头(Header)是一样的,那么 HTTP/2.0 协议会自动帮你消除重复的部分。

2.报文采用二进制格式

HTTP/2.0 不再像 HTTP/1.1 那样采用纯文本形式的报文,而是全面采用了二进制格式,头信息(Header)和数据体(Body)都是二进制格式,并且统称为帧(frame):头信息帧和数据帧

这样虽然对人不友好,但是对计算机非常友好,因为计算机只懂二进制,计算机收到报文后,无需再将明文的报文转成二进制,而是直接解析二进制报文,这就增加了数据传输的效率

3.多路复用

在 HTTP/1.1 协议中,客户端可以向服务端发送不同的请求,比如先后发送了 A 请求和 B 请求,服务器会按照请求顺序进行响应,如果 A 请求一直未得到服务器的响应,那么会导致客户端也就一直无法获取到 B 请求的数据,也就是造成了队头阻塞。

但在 HTTP/2.0 协议中可以在一个连接中并发多个请求或回应,而不用按照顺序。移除了 HTTP/1.1 中的串行请求,不需要排队等待,也就不会出现对头阻塞问题了,降低了延迟,大幅度提高了连接的利用率。在上面那个例子中也就是,服务器收到了 A 请求和 B 请求,如果发现 A 请求处理过程非常耗时,那么就先回应 A 请求中已经处理好的部分,接着回应 B 请求,完成之后再回应 A 请求剩下的部分。

也可以通过这个官方示例来看一下:

https://http2.akamai.com/demo

两张图片的加载方式及速度,第一张图明显是一个请求完毕再请求加载下一张图片,而第二张图片采用的是 HTTP/2.0 协议,可以明显看出不是按照顺序进行加载的。

4.服务器推送

在传统的 HTTP 工作模式中为:客户端请求–服务端应答模式,但是在 HTTP/2.0 协议中,服务器不再是被动地响应,也可以有限地主动向客户端发送消息。举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会用到的 JS、CSS 文件等静态资源主动发给客户端,以此来避免往返的延迟,减少用户的延时等待,也就是服务器推送(Server Push,也叫 Cache Push)。

5.数据流及优先级

HTTP/2.0 的数据包不是按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。

每个请求或回应的所有数据包,称为一个数据流( Stream )。每个数据流都标记着一个独一无二的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数。

客户端还可以指定数据流的优先级。优先级高的请求,服务器就先响应该请求。

彩蛋

说了这么多 HTTP/2.0 协议的优点,那么作为爱折腾的我,当然也在自己的博客 https://www.writeup.top 上已经用上啦可以通过浏览器的开发者工具进行查看哦


文章作者: Writeup
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Writeup !
 上一篇
Python pip 配置国内镜像源 Python pip 配置国内镜像源
前言对于日常 Python 开发来说,会经常需要进行下载安装 Python 的各种库,使用 pip 在线安装时有时候就会因为网络问题导致下载速度极慢,原本开心写代码的事情导致体验不佳,所以我们可以配置 pypi.org 的国内镜像源站以此来
2020-10-16
下一篇 
SQL注入练习之sqli-labs靶场Writeup SQL注入练习之sqli-labs靶场Writeup
Less-1(报错型注入-字符串类型) 打开之后让输入ID的,随便构造一个语句http://192.168.80.134/sql/Less-1/index.php?id=1,返回是正常的,再次构造语句index.php?id=1'
2020-10-11
  目录