QUIC
QUIC(Quick UDP Internet Connections),QUIC实际就是基于UDP实现的可靠传输协议,包含了多种控制算法,其中最主要的如bbr、cubic等,当然可以根据具体的网络需求进行不同的切换。在QUIC中,基于逻辑的channel、stream和connect等设计,保证了QUIC可以和tcp一样完成有序可靠的重传。
QUIC 的优势在哪儿
- QUIC 相较于TCP,QUIC在既有缓存的情况下,可以实现0 RTT的握手
- 队头拥塞避免
- 对于连接的迁移
- 向前纠错的支持
- 拥塞控制算法(当然,目前大多数linux都已经支持BBR)
关于0RTT握手
0RTT,意思是当前无须产生握手操作,立即可以开始发送数据。
QUIC是如何实现0RTT的?首先在无任何缓存情况下,QUIC是无法实现0RTT的。
先来看一下熟悉的1RTT连接:12client->server: synserver->client: syn/ack
如果涉及到密钥交换,如https,握手过程应该是这样的:1234567client->server: synserver->client: syn/ackclient->server: client helloserver->client: server hello、certificate、exchange key...client->server: certificate、exchange key、change finnish...server->client: change finnishclient->server: send data
故而这样一趟下来,将花费3个RTT。
首先,明确QUIC握手采用的是DH算法。
待续