QUIC是基于UDP扩展出来的一套可靠通信协议,他相比TCP有诸多优点,其中最主要的两条:
1️⃣解决TCP队头阻塞问题。可让上层应用将数据分组,不同组的数据包可以同时启动发送和接收,不必等待。即便某个组的数据包由于网络丢包暂不可用,也不阻塞其他组。
2️⃣解决源地址漂移问题。在移动通信场景中,设备位置发生变化通常会导致其ip 地址也跟着一起变,使用TCP通信时,就必须断开重连。而UDP 对源ip和源端口不做限制,天生适合这种复杂易变的网络环境。通信双方约定好身份ID(比如GUID),就可以不用靠源IP和源端口识别身份,从而保持连接延续。
它的可靠性来源于内部和TCP类似的超时重传,拥塞控制等策略,但更轻量级。实时性方面略胜TCP,不如单纯UDP(实时性和可靠性是一对悖论,无法同时满足)。
即便在实时性和可靠性上都不是最优选,但它解决了TCP没法处理的前面两个问题,依然被视作第三代http协议的基石,并在音视频,移动网络,物联网等领域大放异彩。
在推广QUIC时,还是遇到了很多挑战。
过去几十年,电信运营商们陆续搭建并完善了互联网通讯基础设施,部署了各种基站,路由器,网关等软硬件,用来提供网络服务。为了提高网络安全性和服务质量,他们还会部署DPI 设备,监测用户行为,根据协议类型,ip地址和端口号,以及荷载数据解析进行状态缓存与管理,并针对TCP流量进行优化,限制UDP流量(UDP 过于灵活,容易被攻击,监控难度大,于是一刀切)。这些导致QUIC协议推广变得困难。
目前基于QUIC的应用,通过一些伪装手段,骗过电信运营商的监控,但网络安全监管,预防攻击能力,网络设施承载力(大量基于QUIC的实时流量导致现有网络超负荷运行)这些都亟需提升,才能给QUIC 的落地提供保障。