文章目录
- 一、QUIC协议历史
- 1.1 问题:QUIC为什么在应用层实现
- 1.2 QUIC协议相关术语
- 1.3 QUIC和TCP对比
- 1.4 QUIC报文格式
- 1.4.1 QUIC报文格式-Stream帧1
- 1.4.2 QUIC报文格式-Stream帧2
- 二、QUIC的特点
- 2.1 连接建立低时延,
- 2.2 多路复用
- 流复用-HTTP1.1
- 流复用-HTTP2
- 流复用-HTTP3(QUIC)
- 2.3 无队头阻塞
- 2.4 灵活的拥塞控制机制
- 2.5 连接迁移
- 连接迁移1
- 连接迁移2
- 2.6 数据包头和包内数据的身份认证和加密
- 2.7 FEC前向纠错
- 2.8 可靠性传输
- 问题 1:发送端怎么知道发出的包是否被接收端收到了?
- 问题 2:既然包号是单调递增的,那接收端怎么保证数据的有序性呢?
- 2.9 带宽优化
- 三、QUIC开源库和应用
- 四、QUIC面临的挑战
一、QUIC协议历史
QUIC(Quick UDP Internet Connections)即 快速UDP网络连接,是由Google开发的基于UDP的传输层网络协议。QUIC的设计目标是提高网络应用程序的性能和可靠性,特别是在高延迟和不稳定网络环境下。
quic文档地址:https://quicwg.org/base-drafts/rfc9000.html
quic架构图:
1.1 问题:QUIC为什么在应用层实现
新的传输层协议通常会经过严格的设计,分析和评估可重复的结果,证明候选协议对 现有协议的正确性和公平性,开发新的传输层协议和它在操作系统进行广泛部署之间 通常需要花费数年的时间。
再者,用户与服务器之间要经过许多防火墙、NAT(地址转换)、路由器和其他中间设 备,这些设备很多只认TCP和UDP。如果使用另一种传输层协议,那么就会有可能无法 建立连接或者报文无法转发,这些中间设备会认为除TCP和UDP协议以外的协议都是不 安全或者有问题的。
1.2 QUIC协议相关术语
● QUIC连接:Client和Server之间的通信关心,Client发起连接,Server接受连接
● 流(Stream):一个QUIC连接内,单向或者双向