当前位置: 首页 > 网络应用技术

HTTP / 2,HTTP / 3的一些新功能和优势和缺点

时间:2023-03-07 22:11:46 网络应用技术

  为什么出现HTTP/2?http1.1的方面是什么?为什么http/2?当然,这是因为HTTP/1.1太慢。

  HTTP/2中所有性能增强的核心是新的二进制框架层。它定义了如何打包HTTP消息并将其传输到客户端和服务器之间。

  此处的SO称为“层”是指位于插座接口和应用程序中的高端HTTP API之间的优化新编码机制

  在二进制划分层上,HTTP 2.0将将所有传输信息分为较小的消息和帧,并为其使用二进制格式。在themQueast中,主体被封装在数据框架中。

  每个HTTP变速箱都带有一组头部头,其中说明了传输资源及其属性。在http/1.x中,此元数据始终在纯文本中,通常在每个传输中添加500-800个字节。如果您使用httpcookie,增加的费用有时会达到数千个字节。

  为了减少这笔费用并提高绩效,HTTP/2使用HPACK压缩格式压缩请求和响应标头元数据数据。这种格式使用两种简单但功能强大的技术:

  HTTP 2.0使用客户端和服务器上的“第一表”来跟踪和存储以前发送的键值对。对于相同的数据,在通信期值对(用户代理,可接受的媒体类型等)中几乎不会更改的通用密钥只需要发送一次。实际上,如果请求不包括第一部分(例如,相同资源的旋转请求),然后第一个成本是字节。这次,所有第一部分自动使用上一个请求的第一部分。

  HTTP/1.X中的数据基于文本的有序传输。它不能并行传输,接收器不知道数据包的顺序。但是,http/2中的新二进制帧层通过这些限制破裂,并实现了完整的请求和响应重复使用:客户端和服务器可以分解HTTP消息。进入不合理的框架,然后将它们交错,最后是另一端的另一个其他组装。

  HTTP/2中的新二进制划分层解决了HTTP/1.X中的第一个阻止问题,并且还消除了在并行处理和发送请求和响应期间对多个连接的依赖性。

  http/2的另一个强大新功能是服务器可以向一个客户端请求发送多个响应。换句话说,除了对初始请求的响应外,服务器还可以向客户端推动其他资源,而无需清楚地要求客户端要求。

  网络延迟也称为RTT(往返时间)。网络性能。

  在古老的HTTP1.1时代,团队负责人的问题。如果您对HTTP的历史有一定的了解,那么与HTTP1.0相比,HTTP1.1的主要改进是引言。

  SO称为持续的连接:可以在TCP连接上传输多个HTTP请求和响应,从而减少了建立和关闭连接的消耗和延迟。

  此外,HTTP/1.1允许在长时间连接上使用请求管道,这是相对于持久连接的另一种性能优化。

  SO称为请求管道是,在HTTP响应到达之前,可以将多个请求放在队列中。当第一个HTTP请求通过网络流向服务器时,第二和第三请求也可以发送。在高长度扩展的条件下,这可以减少网络的循环时间并提高性能。

  但是,仍然存在一些对管道连接的限制和要求。最重要的事情之一是服务器必须以与请求相同的顺序返回HTTP响应。

  这也意味着,如果响应返回延迟,则随后的响应将被延迟,直到团队的响应交付为止。这是SO所谓的HTTP团队块。

  HTTP团队的阻止问题在HTTP2中得到了很好的解决。HTTP2放弃了一种巨大的通道化方法,介绍了框架,消息和数据流的概念。框架,然后顺序发送它们,最后将它们组合在另一端。

  尽管HTTP2解决了HTTP团队阻止的问题。

  在TCP传输过程中,数据将分为小排序数据包,然后通过中间设备(例如路由器,轮毂,开关等)向前移动,并最终到达目的地。按顺序,接收端将保持连接并等待数据包返回。这次,随后的请求将被阻止,从而导致TCP团队阻止。

  http/1.1管道 - 长时间连接也可以通过多个HTTP使用相同的TCP连接,但是在HTTP/1.1中,域名可以具有6个TCP连接。在http/2中,相同的域名仅使用一个TCP连接。一旦TCP团队在HTTP/2中的封锁将产生更大的影响,因为HTTP/2的Multi -Way Reuse Technology在同一TCP上实际连接了多个请求。许多请求将受到影响。

  由于http/2具有如此明显的缺点,大家会让他“活在世界上”?几年来,较强的HTTP/3来了。

  从上图,我们可以看到HTTP/3中的QUIC协议会收集以下功能。

  让我们看一下HTTP/2的一些缺点以及如何解决

  如前所述,HTTP2连接基本上成本为2至3个RTT来完成连接,但是Quic基本上可以实现1或0RTT来完成连接。如果您首次需要花1RTT来完成连接,但是如果您需要请勿首次连接0RTT,您可以完成它,因为在第一个连接时将对配置文件进行缓存,并且稍后连接时可以直接使用它。DATA交互。

  收到数据包后,数据包可以达到数据的这一部分,但是TCP必须收集所有数据收集并分类并将其用于上层。如果其中一个丢失了,则必须等待重新连接,以便出现某些外观。包装数据封锁整个连接数据。

  QUIC协议是基于UDP协议实施的。一个链接中有多个流。流和流不会互相影响。当流的影响范围损失较小时,它可以解决团队负责人的问题。

  让我们看一下如何传输HTTP/1.1,HTTP/2和QUIC。

  http/1.1

  http/2

  quic

  通过上述分析,我们认为在技术层面上,HTTP/3是一个完美的协议。但是,要将HTTP/3应用于实际环境,仍然存在许多严重的挑战。这些挑战主要来自以下三个方面。

  首先,从当前情况来看,服务器和浏览器端都没有为HTTP/3提供相对完整的支持。官方Quic。

  其次,部署HTTP/3.由于UDP上系统内核的优化远非TCP的优化程度,这也是阻碍Quic的重要原因。

  第三,中间的刚性设备问题。在UDP上的这些设备的优化程度远低于TCP。根据统计数据,使用QUIC协议时,大约有数据包损耗率的3%至7%。

  原始:https://juejin.cn/post/7096295041211039751