QUIC(Quick UDP Internet Connections)协议是一种全新的基于UDP的web开发协议。
从TCP协议说起
当前,web平台的数据传输都基于TCP协议。TCP协议在创建连接之前需要进行三次握手(图1),如果需要提高数据交互的安全性,既增加传输层安全协议(TLS),还会增加更多的握手次数(图2)。
图1,TCP三次握手示意(来源 Next generation multiplexed transport over UDP (PDF))
图2,TLS初始化握手示意(来源 Next generation multiplexed transport over UDP (PDF))
正因为TCP协议连接建立的成本相对较高,可以通过TCP快速打开(TCP Fast Open)来减少建立连接时的握手次数。但是该技术目前应用较少。
和TCP相反,UDP协议是无连接协议。客户端发出UDP数据包后,只能“假设”这个数据包已经被服务端接收。这样的好处是在网络传输层无需对数据包进行确认,但存在的问题就是为了确保数据传输的可靠性,应用层协议需要自己完成包传输情况的确认。
此时,QUIC协议就登场了。QUIC协议可以在1到2个数据包(取决于连接的服务器是新的还是已知的)内,完成连接的创建(包括TLS)(图3)。