quickfok最新官方下载 quic( 三 )


QUIC和TCP的对比
其中α 从 0到 1(RFC 推荐 0.9),越大越平滑
如 UBOUND为1分钟,LBOUND为 1 秒钟, β从 1.3 到 2 之间
对于QUIC
参考: 科普:QUIC协议原理分析 罗成
详解基于UDP的低延时网络传输层协议——QUICQuic 全称 quick udp internet connection [1],“快速 UDP 互联网连接”,(和英文 quick 谐音,简称“快”)是由 Google 提出的使用 udp 进行多路并发传输的协议 。
Quic 相比现在广泛应用的 http2+tcp+tls 协议有如下优势 [2]:
减少了 TCP 三次握手及 TLS 握手时间;
改进的拥塞控制;
避免队头阻塞的多路复用;
连接迁移;
前向冗余纠错 。
从上个世纪 90 年代互联网开始兴起一直到现在,大部分的互联网流量传输只使用了几个网络协议 。使用 IPv4 进行路由,使用 TCP 进行连接层面的流量控制,使用 SSL/TLS 协议实现传输安全,使用 DNS 进行域名解析,使用 HTTP 进行应用数据的传输 。
而且近三十年来,这几个协议的发展都非常缓慢 。TCP 主要是拥塞控制算法的改进,SSL/TLS 基本上停留在原地,几个小版本的改动主要是密码套件的升级,TLS1.3[3] 是一个飞跃式的变化,但截止到今天,还没有正式发布 。IPv4 虽然有一个大的进步,实现了 IPv6,DNS 也增加了一个安全的 DNSSEC,但和 IPv6 一样,部署进度较慢 。
随着移动互联网快速发展以及物联网的逐步兴起,网络交互的场景越来越丰富,网络传输的内容也越来越庞大,用户对网络传输效率和 WEB 响应速度的要求也越来越高 。
一方面是历史悠久使用广泛的古老协议,另外一方面用户的使用场景对传输性能的要求又越来越高 。
如下几个由来已久的问题和矛盾就变得越来越突出:
协议历史悠久导致中间设备僵化;
依赖于操作系统的实现导致协议本身僵化;
建立连接的握手延迟大;
队头阻塞 。
可能是 TCP 协议使用得太久,也非常可靠 。所以我们很多中间设备,包括防火墙、NAT 网关,整流器等出现了一些约定俗成的动作 。
比如有些防火墙只允许通过 80 和 443,不放通其他端口 。NAT 网关在转换网络地址时重写传输层的头部,有可能导致双方无法使用新的传输格式 。整流器和中间代理有时候出于安全的需要,会删除一些它们不认识的选项字段 。
TCP 协议本来是支持端口、选项及特性的增加和修改 。但是由于 TCP 协议和知名端口及选项使用的历史太悠久,中间设备已经依赖于这些潜规则,所以对这些内容的修改很容易遭到中间环节的干扰而失败 。
而这些干扰,也导致很多在 TCP 协议上的优化变得小心谨慎,步履维艰 。
TCP 是由操作系统在内核西方栈层面实现的,应用程序只能使用,不能直接修改 。虽然应用程序的更新迭代非常快速和简单 。但是 TCP 的迭代却非常缓慢,原因就是操作系统升级很麻烦 。
现在移动终端更加流行,但是移动端部分用户的操作系统升级依然可能滞后数年时间 。PC 端的系统升级滞后得更加严重,windows xp 现在还有大量用户在使用,尽管它已经存在快 20 年 。
服务端系统不依赖用户升级,但是由于操作系统升级涉及到底层软件和运行库的更新,所以也比较保守和缓慢 。
这也就意味着即使 TCP 有比较好的特性更新,也很难快速推广 。比如 TCP Fast Open 。它虽然 2013 年就被提出了,但是 Windows 很多系统版本依然不支持它 。即时通讯聊天软件开发可以咨询蔚可云 。
不管是 HTTP1.0/1.1 还是 HTTPS,HTTP2,都使用了 TCP 进行传输 。HTTPS 和 HTTP2 还需要使用 TLS 协议来进行安全传输 。
这就出现了两个握手延迟:
1)TCP 三次握手导致的 TCP 连接建立的延迟;
2)TLS 完全握手需要至少 2 个 RTT 才能建立,简化握手需要 1 个 RTT 的握手延迟 。
对于很多短连接场景,这样的握手延迟影响很大,且无法消除 。
队头阻塞主要是 TCP 协议的可靠性机制引入的 。TCP 使用序列号来标识数据的顺序,数据必须按照顺序处理,如果前面的数据丢失,后面的数据就算到达了也不会通知应用层来处理 。
另外 TLS 协议层面也有一个队头阻塞,因为 TLS 协议都是按照 record 来处理数据的,如果一个 record 中丢失了数据,也会导致整个 record 无法正确处理 。
概括来讲,TCP 和 TLS1.2 之前的协议存在着结构性的问题,如果继续在现有的 TCP、TLS 协议之上实现一个全新的应用层协议,依赖于操作系统、中间设备还有用户的支持 。部署成本非常高,阻力非常大 。

秒懂生活扩展阅读