Quic 协议作为应用层的协议,在无线、弱网场景下的移动通信领域有广阔的应用场景。本文简单记录一些 Quic 的知识点,同时附上介绍的详细文章;
# Quic 协议
Quic
协议是应用层(5层网络模型下,由于基于传输层协议,笔者倾向于认为其是应用层协议
,但是博文中多次标注其是传输层协议
),对标 HTTP
协议,基于 UDP
协议构建。
# Quic 协议优点
- 建立连接延时低。相对于 HTTP 协议的至少 3RTT 的建联,Quic 协议可以实现 0RTT 建联;
- 改进了拥塞控制。将拥塞控制算法的选择交由应用程序控制;同时抛弃了基于 TCP 的
seq
标记,改由严格递增的package number
+offset
,优化了拥塞时的重传;- 举例,需要传递
N,N+1,N+2
三个包,传递过程中,N
丢失了;TCP
的重传会将N,N+1,N+2
三个包都重传;Quic
会重传一个N+3
(即package_num
+1),但是offset
记为0
(即stream_offset
不变)。这样在另一端将三个包按照offset
重新进行组织;
- 举例,需要传递
- 基于
Connection
及Stream
进行多路复用; - 消除队头阻塞,更好的支持多路复用,处理多个会话时,不会因为其中一个会话的丢失,导致其他会话结果也重传(TCP消息重传逻辑);
- 默认支持加密认证;
# 总结
Quic
协议相当于在 UDP
的基础上,在更高层次协议上实现了 TCP
的大部分功能:可靠传输,拥塞控制等,同时对 TCP
的这些功能进行了优化;