正文
此时,QUIC协议就登场了。QUIC协议可以在1到2个数据包(取决于连接的服务器是新的还是已知的)内,完成连接的创建(包括TLS)(图3)。
图3:QUIC协议握手示意
从前文对比可以看出,QUIC协议的主要目的,是为了整合TCP协议的可靠性和UDP协议的速度和效率。QUIC的维基百科页面介绍了该协议的主要目的:
对于Google来说优化TCP协议是一个长期目标,QUIC旨在创建几乎等同于TCP的独立连接,但有着低延迟,并对类似SPDY的多路复用流协议有更好的支持。 如果QUIC协议的特性被证明是有效的,这些特性以后可能会被迁移入后续版本的TCP和TLS协议(它们都有很长的开发周期)。
值得注意的是,
如果QUIC的特性被证明是有效的,这些特性以后可能会被迁移到后续版本的TCP协议中
。
TCP协议的实现是高度管制的。TCP协议栈通常由操作系统实现,如Linux、Windows内核或者其他移动设备操作系统。修改TCP协议是一项浩大的工程,因为每种设备、系统的实现都需要更新。
相反的,UDP协议在操作系统层面实现相对简单,基于UDP协议实现新的协议以验证Google对于TCP协议改进的理论,验证成本相对较低。
QUIC协议内置了TLS栈,实现了自己的传输加密层,而没有使用现有的TLS 1.2。同时QUIC还包含了部分HTTP/2的实现,因此QUIC的地位看起来是这样的:
从图上可以看出,QUIC底层通过UDP协议替代了TCP,上层只需要一层用于和远程服务器交互的HTTP/2 API。这是因为QUIC协议已经包含了多路复用和连接管理,HTTP API只需要完成HTTP协议的解析即可。