简单聊聊更快、更稳、更高效的 QUIC 协议

目录

QUIC的起源和发展

QUIC 与 TCP 和 UDP 的比较

QUIC 的主要特性

QUIC 的工作原理

QUIC 的应用场景

小结


QUIC(Quick UDP Internet Connections,快速 UDP 互联网连接)是一种基于 UDP 协议的传输层协议,由 Google 首次提出,并已在 IETF(互联网工程任务组)的标准化过程中得到发展。QUIC 的设计目标是减少网络通信的延迟,提高连接的可靠性,并改善多路复用的性能。QUIC是HTTP/3的基础,在提升 Web 性能方面有显著的作用。

QUIC的起源和发展

QUIC 是由 Google 在2012年开发的,目的是解决 TCP 协议在现代网络环境中的一些局限性。2013年,Google 在其 Chrome 浏览器中实现了 QUIC,并在其服务中广泛部署。随后,QUIC 被提交给 IETF 进行标准化,并在多个草案的迭代中不断完善。

QUIC 与 TCP 和 UDP 的比较

在深入了解 QUIC 之前,先简单看下 TCP 和 UDP 这两种传统的传输协议。

  • TCP(传输控制协议):TCP 是一种面向连接的协议,提供可靠的数据传输服务。通过三次握手建立连接,使用流量控制、拥塞控制和重传机制来保证数据的顺序传输和完整性。但这些特性也导致了 TCP 在建立连接和恢复丢失数据包时存在延迟。
  • UDP(用户数据报协议):UDP 是一种无连接的协议,允许数据包在没有事先建立连接的情况下发送。UDP 的开销较小,但不保证数据包的顺序、完整性或可靠性。

QUIC 结合了 TCP 的可靠性和 UDP 的低延迟特点,并引入了新的特性。

QUIC 的主要特性

  1. 快速建立连接:QUIC 减少了握手的往返次数。在最佳情况下,只需要一个往返时间(0-RTT)就可以建立连接并开始数据传输,这种机制可以大大减少连接建立的时间,提高数据传输的效率。
  2. 加密和身份认证:QUIC 协议内置了 TLS 1.3,提供了端到端加密,并在协议层面确保了数据的安全性。在建立连接时,客户端和服务器会交换密钥,用于后续的数据传输。还支持双向身份认证,以保证数据的安全性。
  3. 多路复用:QUIC 允许多个独立的数据流在同一个连接上并行传输,而不会互相干扰。这消除了 TCP 中的队首阻塞问题,提高了数据传输的效率。
  4. 流量控制和拥塞控制:QUIC 实现了自己的流量控制和拥塞控制算法。可以避免因为数据发送过快而导致的接收方缓冲区溢出;当网络拥堵时,会自动降低发送速率,以避免加剧网络拥堵,可以更高效地利用网络带宽,并在网络条件变化时保持连接的稳定性。
  5. 连接迁移:QUIC 支持连接迁移功能,即使客户端的网络环境发生变化(如更换IP地址),连接也能保持不中断。
  6. 前向纠错:QUIC 支持前向纠错(FEC),可以减少在丢包环境下的重传。
  7. 无状态重置:QUIC 提供了无状态重置功能,允许无法继续维持状态的服务器优雅地关闭连接。

QUIC 的工作原理

以下是 QUIC 工作原理的简要概述:   

  1. 连接建立,当客户端与服务器建立连接时,会发送一个特殊的 QUIC 握手包,这个包包含了客户端支持的 QUIC 版本信息、客户端的传输参数以及 TLS 握手所需的信息。如果是 0-RTT 连接,客户端还可以在同一个握手包中发送加密的应用数据。服务器在收到握手包后,如果同意建立连接,会响应一个握手包,包含服务器的传输参数和 TLS 信息。一旦双方完成 TLS 握手,QUIC 连接就建立成功,双方就可以开始安全地交换应用数据了。
  2. 数据传输,在 QUIC 中,数据是通过独立的流进行传输的。每个流都是双向的,并且可以独立于其他流进行控制。这意味着如果一个流的数据包丢失,只会影响该流的数据传输,而不会阻塞其他流。
  3. 拥塞控制,QUIC 实现了自己的拥塞控制算法,如 Google 的 CUBIC 或 BBR,这些算法可以更有效地利用带宽,减少网络拥塞的影响。
  4. 连接迁移,QUIC 的连接是由连接ID(Connection ID)标识的,而不是传统的 IP 地址加端口号。即使客户端的网络环境发生变化(如 IP 地址改变),QUIC 连接也能保持稳定。
  5. 错误恢复,QUIC 有自己的错误恢复机制,能够快速识别丢包并进行重传,确认机制也比 TCP 更高效。
  6. 连接关闭,QUIC 允许立即关闭连接,不需要 TCP 那样经历 TIME_WAIT 状态,有助于资源的快速释放。

QUIC 的应用场景

由于 QUIC 具有无连接建立延迟、多路复用、快速重传、拥塞控制等优点,因此适用于需要高速、高效、安全的数据传输场景,例如:

  • 网页浏览:QUIC可以减少网页加载时间,提高用户体验。特别是对于动态网页和应用,如视频流、社交媒体、电子商务等。
  • 实时通信:QUIC适用于实时通信应用场景,如在线游戏、视频会议、即时通讯等。可以提供更稳定、更快速的数据传输服务。

小结

QUIC 的设计解决了 TCP 在现代互联网中遇到的一些关键问题,提供了一个更快、更可靠、更灵活的网络传输协议。随着HTTP/3标准的采用,QUIC 的应用也会越来越广泛。

你可能感兴趣的:(后端系列知识讲解,后端,quic,协议,开发语言,网络协议)