之前在《一堆废话》里说过关于安全和速度的问题,互联网行业很少有人或者有公司说自己能预料到十年后或者5年后的发展情况。互联网太快了,版本的一层层迭代,技术的一次次更新。
最近在公司的技术交流会上我了解到QUIC这个技术,顿时觉得就是这个!这个技术在互联网行业将会像5G一样引起惊天骇浪
收藏几篇博客:
blog.csdn.net/dog250/arti…
blog.csdn.net/u014023993/…
一:QUIC是什么?
QUIC 全称Quick UDP Internet Connection, 是Google制定的一种基于UDP 协议的低时延互联网应用层协议QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输
TCP/IP协议族是互联网的基础。其中传输层协议包括TCP和UDP协议。与TCP协议相比,UDP更为轻量,但是错误校验也要少得多。这意味着UDP往往效率更高(不经常跟服务器端通信查看数据包是否送达或者按序),但是可靠性比不上TCP。通常游戏、流媒体以及VoIP等应用均采用UDP,而网页、邮件、远程登录等大部分的应用均采用TCP。
Google想到能否把这两种协议的优势结合起来,同时实现低时延和高可靠并将其应用到更高安全的协议上,于是就有了QUIC。
也就是说QUIC与TCP和UDP相比:既有了高效率(UDP)也有了可靠性(TCP).
二:QUIC的核心特点
1:连接建立的低延时(0RTT)
https的rtt,传统为3RTT,优化版本的也至少需要2RT
对于quic,可以实现0RTT 超低延时建连
RTT(Round-Trip Time):往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成。
我懂了,简直要死。
rtt是时延,类似于一个单位长度,没有定量,根据机器不同的一个东西,指代时间
0RTT的实现 0RTT是有前提的,第一次连接实际上是1RTT第一次请求完,客户端会缓存住服务端给的一组加密元祖(缓存在内存或者磁盘),然后开始加密数据并发送给服务端
2: 连接迁移(4g切wifi)
主要场景:不同网络之间的切换,wifi1切wifi2,4G切wifi等问题:
传统tcp连接为4元祖(ip:port -- ip:port)
呵,四元组又是个啥
假设有如下连接:
Client_IP1:Client_Port1 <---> Server_IP:Server_Port fd1 Client_IP2:Client_Port2 <---> Server_IP:Server_Port fd2 Client_IP3:Client_Port3 <---> Server_IP:Server_Port fd3
TCP无法仅仅通过查看目的端口来确定数据报应发送给那个套接字(socket)。它必须查看套接字对的所有4个元素才能确定由哪个端点接受到达的数据包。
对于来自于Client_IP1:Client_Port1,目的地址是Server_IP:Server_Port的数据报由fd1接收 对于来自于Client_IP2:Client_Port2,目的地址是Server_IP:Server_Port的数据报由fd1接收
PS:监听端口和用来发送数据的端口是同一个端口 其中客户端的ip和端口发生变化,就会导致连接中断quic解决:quic选择一个64位随机数作为id,唯一的标识该连接,因此ip端口等变化,对于quic是不会感知到的,它的连接依然存在
quic解决:quic选择一个64位随机数作为id,唯一的标识该连接,因此ip端口等变化,对于quic是不会感知到的,它的连接依然存在
3:避免队头阻塞
队头阻塞
4:改进的拥塞控制
- Cubic:基于丢包的拥塞控制:将丢包视为出现拥塞,采取缓慢探测的方式,逐渐增大拥塞窗口,当出现丢包时,将拥塞窗口减小
- bbr:基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞
- BDP:带宽时延积,表示的是网络中的正在传输的流量
拥塞控制的目的:将滑动窗 口缓冲设置成BDP
此时最佳BDP = 最大BW * 最小RTT
1):丢包率高,BBR拥塞控制原理
tcp的cubic算法:依赖接收到的ack包判断是否丢包,来决定是否改变发送速率
当ack包本身延时和丢包的情况下,决策失误,发送速率不变,导致更拥塞
bbr算法:动态实时的探测带宽,出现延时和丢包,探测出的带宽必然减小,从而发送速率减小,动态控制拥塞,实现了真正的拥塞控制
bw = delivered/interval_us (应答的数据/应答数据使用的时间)
2):带宽自适应
当网络带宽变化较大时,bbr可以马上进行感知与处理
带宽增大,bbr感知,并增大发送
宽减小,bbr感知,并减少发送
3):算法切换
tcp:要切换拥塞算法,需要修改内核,重启机器,周期长,操作风险大
quic:客户无感知秒切
4):缺点
在正常网络下,抢占资源抢不过tcp,只能在丢包率高的场景下抢占能力强过tcp
解决方法:bbr v2
控制发送量,取决因子增多,不再单纯依赖探测带宽,加入丢包率
5:前向冗余纠错(FEC)
quic使用前向纠错的纠错码,每个数据包除了它本身的内容之外,还包括了部分其他数据包的数据,因此少量的丢包可以通过其他包的冗余数据直接组装而无需重传
三:核心优势
tcp受到的限制:
- 很多网络中间层,比如防火墙、网关等,都强依赖于tcp指定的各类规则,所以tcp的修改很容易由于这些中间环节的存在而受到干扰。2
- tcp是由操作系统在内核层面实现的,导致tcp的迭代受限于操作系统的升级quic
quic:在应用层进行编程,直接进行拥塞算法的切换,在不同场景下,针对性的使用最佳的拥塞控制,实现更快的迭代,更符合当前发展趋势