QUIC小记

286 阅读5分钟

最近在项目中学习了弱网环境下的优化,了解到协议升降级的方法来应对弱网(进入地铁/人流量多/网络不稳定)问题。而其中就提到了QUIC协议,故在此记录

QUIC协议

QUIC(Quick UDP Internet Connections)是由谷歌公司开发的一种基于用户数据报协议(UDP)的传输层协议,它实现了TCP + HTTPS + HTTP/2的功能,旨在提高网络连接的速度和可靠性,以取代当前互联网基础设施中广泛使用的传输控制协议(TCP),而如今的QUIC已经应用在了HTTP3中。

众所周知,UDP比TCP传输速度快,TCP是可靠协议,但衍生了双方确认数据的一系列消耗。另外,TCP是系统内核实现的,如果升级TCP协议,就得让用户升级系统。而基于UDP的QUIC协议在UDP基础上由客户端自由发挥,只要有服务器能对接就可以。

QUIC在弱网环境下的优势

QUIC在弱网环境下相对于传统的基于TCP的协议,通常被认为有一定的优势

  • 快速连接建立:QUIC采用了0-RTT握手机制,允许在之前与服务器建立过连接的客户端在重新连接时跳过部分握手过程。这减少了握手延迟,使得在弱网环境下更快地建立连接并开始传输数据。

  • 抗丢包能力:QUIC使用自己的错误纠正和重传机制,对数据包丢失更具鲁棒性。相比之下,基于TCP的协议通常使用超时重传机制,需要等待较长时间的超时才能检测到丢失的数据包。QUIC能够更快地检测到丢失的数据包并进行重传,从而减少了重传所需的时间和传输延迟。

  • 拥塞控制优化:QUIC在拥塞控制方面具有改进,能够更快地适应网络质量的变化。在弱网环境中,网络带宽可能会波动或受限,QUIC能够更快地调整发送速率进行拥塞控制,以提供更好的性能和稳定性。

  • 有序交付和快速重传:QUIC使用序列号对数据包进行排序,并支持快速重传机制。这些机制可以减少乱序传输和丢失数据包对传输性能和可靠性的影响,在弱网环境中提供更好的数据传输质量。

尽管QUIC在弱网环境下具有一些优势,但具体的效果仍受到网络条件、具体实现和部署环境等因素的影响。此外,其他协议也在不断改进和优化,以适应弱网环境的需求。

QUIC如何实现可靠传输

QUIC实现可靠传输的主要机制包括错误纠正与重传、拥塞控制、有序交付、快速重传和前向纠错。

  • 错误纠正与重传:当数据包在传输过程中丢失或损坏时,接收端会向发送端发送丢失报告,发送端会重传丢失的数据包,确保数据的可靠传输。

  • 拥塞控制:QUIC使用类似于TCP的拥塞控制机制,根据网络延迟和数据包丢失情况调整发送速率,以避免网络拥塞,提供更好的性能和可靠性。

  • 有序交付:QUIC使用序列号对数据包进行排序,确保它们按正确的顺序被接收和处理,避免数据包乱序传输引起的问题,保证数据的正确性。

  • 快速重传:当接收端检测到丢失的数据包时,可以立即向发送端发送重传请求,而无需等待超时,以快速恢复丢失的数据包,减少传输延迟。

  • 前向纠错:QUIC支持前向纠错,发送端在数据包中添加冗余信息,允许接收端在部分数据包丢失的情况下恢复原始数据,减少对重传的依赖,提高传输效率。

这些机制使得QUIC能够在保证数据可靠传输的同时,提供较低的延迟和更好的性能,适用于各种网络应用场景。但还是存在一定的问题与挑战。

QUIC存在的问题

  • 兼容性:QUIC是一种相对较新的协议,与传统的TCP/IP基础设施不兼容。若要使用QUIC协议,需要在客户端和服务端都实现对QUIC协议的支持
  • 实现复杂性:QUIC是一个相对复杂的协议,它的部署和配置可能比较困难。尤其是在大规模网络环境中,需要确保所有网络设备和中间设备(如防火墙和代理)都能正确处理QUIC流量。
  • 安全性问题:虽然QUIC提供了端到端的安全保护,但它没有非对称加密,安全性会受到影响。例如:QUIC协议的加密机制可能受到攻击者的破解和篡改,从而泄露敏感信息或破坏传输数据的完整性。

参考文章:

QUIC 协议:特性、应用场景及其对物联网/车联网的影响

QUIC协议原理详解

小林coding - 如何基于 UDP 协议实现可靠传输?