QUIC网络协议介绍(一)
wirte in ChengDu 19 June 2024
什么是quic
- quic全称:Quick UDP Internet Connections,是一种基于传输层UDP的协议,由googel研发,目前IEFT已推出标准版RFC9000,RFC9001,RFC9002
- quic = http/3+TSL+UDP
为什么需要quic
- 传统的http1是基于tcp进行传输,串行,若某一个数据包丢失后后续的数据包将会阻塞;
-
http/2协议解决了串行发送数据的问题,但是依然存在tcp队头阻塞的问题。因此quic应运而生,quic不再使用tcp作为传输协议,而是使用udp作为传输协议;且采用乱序加密帧减少RTT的传输次数。
- Http1 只能串行访问,
- Http2 能并行访问:解决了http协议队头阻塞的问题,但tcp的队头阻塞依然没有解决
- quic消耗的是1个RTT,在后面实现0-RTT发送的时候,会同时发送两个数据包(inital报文和数据包)
- 必须缓存收到的乱序加密帧
- 传统的tcp协议,以四元组(源IP地址、源端口号、目的IP地址、目的端口号)来识别一条连接;
- quic使用连接ID来识别一条连接;连接ID:一组连接标识符、连接ID由一端独立选择;
quic可以做什么
- quic基于udp可提供可靠传输能力,类似于tcp。但是tcp是基于内核态的,quic是基于用户态一种流式的方式。quic是一种面向连接的传输协议。quic协议在数据传输工程中具有报文丢失恢复和重传功能。可以保证数据完整性和正确性。可以保证数据包按照顺序达到,避免数据包乱序的错误。
quic有什么优势
- 传输速度更快,当出现切换网络的场景时,不会卡顿;
简单抓包查看quic报文格式
Header Form | Long Packet Type | Connection ID | Packet Number | Version | Length | Payload |
---|---|---|---|---|---|---|
1 byte | 1 byte | 0-18 bytes | 1-4 bytes | 4 bytes | 1-2 bytes | Variable |