Google QUIC (next generation multiplexed transport over UDP)
前言:据说是要成为下一代通信协议
Google QUIC
QUIC(Quick UDP Internet Connections)
QUIC:Google 基于 UDP 提出的一种改进的通信协议,作为传统 HTTP over TCP 的替代品,开源于 Chromium 项目中。
0x01 查看QUIC是否启用
在Chrome浏览器中输入chrome://net-internals/#quic查看是否已经支持QUIC协议。如果还未支持,可以在chrome://flags/#enable-quic中进行开启。
开启之后在chrome://net-internals/#quic中查看QUIC的连接
0x02 QUIC性能优势
Google分享了一些关于QUIC协议实现的结果。原文链接
这些优势在诸如YouTube的视频服务上更为突出。
用户报告通过QUIC协议在观看视频的时候可以减少30%的重新缓冲时间。
0x03 QUIC缺点
现在很多网络运营商会降低 UDP 包的优先级,使得 UDP 丢包率特别高。(QUIC 不可用时,浏览器一般会 Fallback 到 TCP)
目前只有 Chrome、Opera 浏览器支持。
0x04 安全性
QUIC对每个散装的UDP包都进行了加密和认证的保护,并且避免使用前向依赖的处理方法(如CBC模式),这样每个UDP包可以独立地根据IV进行加密或认证处理。
QUIC采用了两级密钥机制:初始密钥和会话密钥。初次连接时不加密,并协商初始密钥。初始密钥协商完毕后会马上再协商会话密钥,这样可以保证密钥的前向安全性,之后可以在通信的过程中就实现对密钥的更新。接收方意识到有新的密钥要更新时,会尝试用新旧两种密钥对数据进行解密,直到成功才会正式更新密钥,否则会一直保留旧密钥有效。
0x05 基本特点
- 基于UDP的多路传输(单连接下);
- 极低的等待时延(相比于TCP的三次握手);
- 快速迭代更新;
- 开源于Chromium项目中。
0x06 QUIC的机制
0-RTT connections
Packet pacing that reduces packet loss
Forward error correction that reduces retransmission latency
Adaptive congestion control (friendly to TCP), reducing reconnections for mobile clients
Encryption equivalent to TLS
Chrome can talk QUIC to Google today
0-RTT握手过程
相关链接
http://www.chromium.org/quic
http://www.infoq.com/cn/articles/quic-google-protocol-web-platform-from-tcp-to-udp
https://www.cnblogs.com/mod109/p/7372577.html