<返回更多

HTTP/3放弃了TCP,性能提升多少

2023-03-29  今日头条  迷路的架构师
加入收藏

 

 

HTTP/3是最新的超文本传输协议,它是基于QUIC(Quick UDP Inte.NET Connections)协议开发的。HTTP/3是HTTP/2的后继者,可以有效地提高网页加载速度、改善安全性,并提供更好的流控制功能。

HTTP/3是由Internet Engineering Task Force(IETF)标准化的,旨在通过重新设计协议来克服TCP协议的一些限制。QUIC协议可以提供比TCP更高的可靠性(尽管QUIC 基于 UDP,但它在应用层实现了可靠的传输机制,如数据包确认、重传、拥塞控制等)和更好的性能(这是因为它是基于UDP协议而不是TCP协议构建的)。

相比于HTTP/2,HTTP/3有许多新的特性和改进。例如,HTTP/3使用QUIC协议中的快速连接建立机制,可以更快地建立连接。另外,HTTP/3可以同时处理多个请求和响应,从而提高了并发处理能力。

HTTP/3的特性

HTTP/3 在保留 HTTP/2 的许多优点的基础上,引入了一系列新特性和改进。以下是 HTTP/3 的主要特性:

  1. 基于 QUIC 协议:HTTP/3 放弃了基于 TCP 的底层传输协议,而选择了 QUIC(Quick UDP Internet Connections)协议。QUIC 是一个基于 UDP 的可靠传输协议,设计用于解决 TCP 在高延迟和丢包率较高的网络环境下的性能问题。QUIC 的引入使 HTTP/3 具有更低的延迟和更好的拥塞控制能力。
  2. 避免队头阻塞:TCP 传输中,一个连接的数据包丢失会导致后续的数据包被阻塞,即使它们属于不同的请求。这称为队头阻塞(Head-of-line blocking)。QUIC 通过在单个连接中多路复用请求来解决这个问题。在 QUIC 中,一个数据包的丢失不会影响其他独立流的数据传输。
  3. 快速建立连接:TCP 需要一个三次握手过程来建立连接,而且在使用 TLS 时还需要额外的往返。QUIC 支持零往返时间(0-RTT)连接建立,可以显著降低连接建立所需的时间,尤其是在高延迟的网络环境下。
  4. 内置加密:QUIC 协议将加密作为其核心功能,不再依赖单独的 TLS 层。这不仅可以提高安全性,而且可以简化协议栈,提高传输性能。
  5. 更好的拥塞控制:QUIC 实现了更先进的拥塞控制算法,能够更好地应对网络拥塞,提高数据传输速率。
  6. 易于升级和扩展:QUIC 设计为模块化和可扩展的协议,这使得在不改变底层网络基础设施的情况下,更容易地实现协议升级和添加新功能。

HTTP/3的实现

HTTP/3的实现基于QUIC(Quick UDP Internet Connections),这是一种基于UDP协议的新型传输协议。QUIC是由google于2012年开始开发的,旨在替代TCP协议,用于提高Web应用程序的性能和安全性。QUIC相比TCP协议,具有以下优势:

  1. 连接建立速度更快:QUIC会在连接建立时通过加密和认证的方式验证服务器和客户端之间的身份,避免了TLS握手的开销,从而可以更快地建立连接。
  2. 抗丢包能力更强:QUIC可以在一个连接上并行传输多个数据流,其中一个数据流发生丢包并不会影响其他数据流的传输。
  3. 降低延迟:QUIC采用了类似于TCP Fast Open的机制,可以在第一次握手时传输数据,从而降低了首次请求的延迟。

HTTP/3基于QUIC实现的主要目的是提高性能和安全性。QUIC协议的特点,如连接建立速度快、抗丢包能力强、降低延迟等,都可以通过HTTP/3来发挥。此外,HTTP/3在数据传输过程中采用了TLS 1.3协议加密数据,更加安全可靠。

在实现上,HTTP/3使用了与HTTP/2相同的API接口,使得应用程序可以在不修改代码的情况下切换到HTTP/3。但由于HTTP/3使用了不同的传输协议,所以底层的实现细节与HTTP/2有所不同。

目前,HTTP/3的实现主要是由谷歌和互联网工程任务组(IETF)推进。IETF于2020年2月宣布QUIC进入正式标准化流程,HTTP/3也在2022年6月6号正式标准化。

HTTP/3 与 HTTP/2 的比较

  1. 底层传输协议

 

HTTP/2 依赖于 TCP 作为底层传输协议,而 HTTP/3 则选择了基于 UDP 的 QUIC 协议。这使得 HTTP/3 具有更低的延迟和更好的拥塞控制能力,尤其是在不稳定的网络环境中。

  1. 多路复用

HTTP/2 和 HTTP/3 都支持多路复用,即允许在单个连接中同时传输多个请求和响应。然而,它们实现多路复用的方式有所不同。HTTP/2 使用基于帧的流来分隔不同的请求和响应,而 QUIC 使用完全独立的流。这使得 HTTP/3 能够避免队头阻塞问题,提高传输效率。

  1. 连接建立

 

HTTP/2 依赖于 TCP 的三次握手来建立连接,并在使用 TLS 时需要额外的往返。相比之下,QUIC 支持零往返时间(0-RTT)连接建立,可以显著降低连接建立所需的时间。

  1. 加密

HTTP/2 通过单独的 TLS 层来实现加密,而 HTTP/3 的 QUIC 协议将加密作为其核心功能,不再依赖单独的 TLS 层。这不仅可以提高安全性,而且可以简化协议栈,提高传输性能。

  1. 拥塞控制策略

HTTP/2 依赖于 TCP 的拥塞控制策略,而 HTTP/3 的 QUIC 协议实现了更先进的拥塞控制算法,能够更好地应对网络拥塞,提高数据传输速率。

以下是专业人士做的HTTP/2 和 HTTP/3 的单次请求性能对比:

 

网站

内容网站

单页面网站

HTTP/2

500ms

1000ms

600ms

HTTP/3

100ms

675ms

300ms

不过想用上HTTP/3还需要很长的时间,毕竟现在HTTP/2也还未全部推广。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>