QUIC I

QUIC

QUIC(Quick UDP Internet Connections),QUIC实际就是基于UDP实现的可靠传输协议,包含了多种控制算法,其中最主要的如bbr、cubic等,当然可以根据具体的网络需求进行不同的切换。在QUIC中,基于逻辑的channel、stream和connect等设计,保证了QUIC可以和tcp一样完成有序可靠的重传。


QUIC 的优势在哪儿

  1. QUIC 相较于TCP,QUIC在既有缓存的情况下,可以实现0 RTT的握手
  2. 队头拥塞避免
  3. 对于连接的迁移
  4. 向前纠错的支持
  5. 拥塞控制算法(当然,目前大多数linux都已经支持BBR)

关于0RTT握手

0RTT,意思是当前无须产生握手操作,立即可以开始发送数据。
QUIC是如何实现0RTT的?首先在无任何缓存情况下,QUIC是无法实现0RTT的。
先来看一下熟悉的1RTT连接:

1
2
client->server: syn
server->client: syn/ack

如果涉及到密钥交换,如https,握手过程应该是这样的:

1
2
3
4
5
6
7
client->server: syn
server->client: syn/ack
client->server: client hello
server->client: server hello、certificate、exchange key...
client->server: certificate、exchange key、change finnish...
server->client: change finnish
client->server: send data

故而这样一趟下来,将花费3个RTT。

首先,明确QUIC握手采用的是DH算法。
待续