HTTP2最全详解(看这篇就够了)

HTTP2最全详解(看这篇就够了)-mikechen

什么是HTTP2

HTTP 2.0是超文本传输协议的一种新版本,用于在互联网上传输数据。

HTTP 2.0是HTTP1.1的升级版本,HTTP2.0旨在提高网页加载性能和用户体验。

HTTP2最全详解(看这篇就够了)-mikechen

好搞懂HTTP2.0,你首先需要了解HTTP协议的来龙去脉

HTTP协议主要的版本有3个,分别是HTTP1.0、HTTP1.1和HTTP2。

HTTP2.0是在HTTP1.0和HTTP1.1的基础之上,改进而来。

 

HTTP1.0

1996年5月,HTTP1.0 版本发布,为了提高系统的效率,HTTP1.0规定浏览器与服务器只保持短暂的连接。

浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP1.0中浏览器与服务器只保持短暂的连接,连接无法复用,也就是说每个TCP连接只能发送一个请求。

我们知道TCP连接的建立需要三次握手,是很耗费时间的一个过程,所以,HTTP1.0版本的性能比较差。

现在随便打开一个网页,上面都会有很多图片、视频等资源,HTTP1.0显然无法满足性能要求。

 

HTTP1.1

为了解决HTTP1.0存在的缺陷,HTTP1.1于1999年诞生,相比较于HTTP/1.0来说,最主要的改进就是引入了持久连接。

所谓的持久连接就是,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

如下图所示:

HTTP2最全详解(看这篇就够了)-mikechen

HTTP1.1在长时间内是主要的HTTP协议版本,但是它也有性能问题。

比如,常见的有:

  1. 队头阻塞:在HTTP1.1中,一个请求必须等待前一个请求完成,这导致了队头阻塞问题,即某个请求的延迟可能会影响到其他请求。
  2. 文本协议:HTTP1.1使用文本协议,头部信息和数据都以文本形式传输,增加了数据传输的开销。
  3. 多连接:为了并行加载资源,HTTP1.1通常需要多个连接,这增加了服务器和客户端的负担。
  4. HTTP/1.1通信通常是明文的,容易受到窥探和中间人攻击的威胁。

以上HTTP1.1的性能问题,促使HTTP2的开发,以提高页面加载速度和用户体验。

 

HTTP2

1.多路复用

在HTTP1.1协议中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量的限制,超过了这个限制的请求就会被阻塞。

而多路复用允许同时通过单一的 HTTP2.0 连接发起多重的“请求-响应”消息。

如下图所示:

HTTP2最全详解(看这篇就够了)-mikechen

HTTP2的请求的TCP的connection一旦建立,后续请求以stream的方式发送。

每个stream的基本组成单位是frame(二进制帧),客户端和服务器可以把 HTTP 消息分解为互不依赖的帧,然后乱序发送,最后再在另一端把它们重新组合起来。

HTTP2最全详解(看这篇就够了)-mikechen
也就是说, HTTP2.0 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。

HTTP2允许多个请求和响应同时通过单个TCP连接传输,而不像HTTP/1.1需要多个连接。

 

2.二进制协议

HTTP2使用二进制格式来传输数据,而不是HTTP1.1的文本格式,这减小了数据传输的开销,同时更容易解析和处理。

 

3.头部压缩

HTTP2支持头部字段的压缩,减小了每个请求和响应的头部大小,降低了网络带宽使用和减小了延迟。

HTTP2最全详解(看这篇就够了)-mikechen

HTTP2 为了减少这部分开销,采用了HPACK 头部压缩算法对Header进行压缩。

 

4.安全性

HTTP/2 通常与加密协议TLS一起使用,提高了通信的安全性,减小了窥探和中间人攻击的风险。

 

5.兼容性

HTTP2是HTTP1.1的升级,保留了对HTTP1.1的兼容性,如果客户端不支持HTTP2,服务器可以降级为HTTP1.1。

 

HTTP2总结

HTTP2的特性旨在解决HTTP1.1的性能问题,并提供更高的效率和更好的用户体验。

HTTP2 已被广泛采用,成为现代Web应用程序的标准协议,绝大多数现代浏览器和Web服务器都支持 HTTP2。

总之,HTTP/2 的特性使其成为提高Web应用程序性能和用户体验的关键协议,推动了更快、更高效的网络通信。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法