网络协议打怪升级-传输层:UDP和QUIC
网络协议打怪升级-传输层:UDP和QUIC
1.UDP是什么
UDP(User Datagram Protocol,用户数据报协议)是一个传输层协议,和TCP一样,但是它的特点是:无连接、轻量、速度快、不可靠。
2.UDP的核心特性
- 无连接:发送数据前不需要建立连接
- 不可靠:不保证数据送达,无确认机制,无重发机制
- 面向报文:一次性发送整个报文,不会拆分或合并(区别TCP),不保证抵达顺序
- 无拥塞控制:不会因为网络拥塞而降低发送速度
- 轻量级:报头小,仅8字节,传输效率高
- 支持广播/组播
组播是什么?
1
2
3
4
5
组播是一种网络传输方式,一对多,介于单播与广播之间
单播:一对一,每个接收方单独发送一份数据
广播:一对全网,所有主机都能收到
组播:一对多,只发送一次,只有加入组的主机才能收到
比如在会议中,就可以使用组播传输,将视频流数据发送到会议中的所有人
3.UDP的报文结构
- 报头(8Byte)
- 源端口号
- 目标端口号
- 数据长度(报头+数据)
- 校验和
- 数据
4.UDP的传输过程
- 应用程序调用socket并传入数据(应用层)
- UDP将数据加上8字节头部,形成一个数据报文
- IP层封装进IP包进行传输
- 到达目的地后,目标应用接收UDP报文
无需握手、无需连接、发送即走
5.UDP的应用场景
- 实时通信:语音通话、视频通话等
- 在线游戏
- 流媒体
DNS查询
:默认使用DNS,传输内容大时改为TCP,需要安全性时改为DoT(DNS over TLS,基于TLS的DNS)- 系统广播/组播
6.UDP的优缺点
- 优
- 轻量、快速、支持广播
- 缺
- 不面向连接、不可靠、无流量控制、无拥塞控制
7.扩展:QUIC
前面我们对UDP的基本特性和使用原理进行了基本梳理,可以发现UDP最大的缺点是不可靠性。
QUIC是由于Google开发的库,底层使用了UDP(HTTP/3就是运行于QUIC之上)。通过对UDP的封装,QUIC解决了不可靠的问题,使报文变得既轻量有可靠,那么他是如何做到的?
QUIC封装了逻辑,自己实现了类似TCP的可靠机制,包括:
TCP机制 | QUIC实现方式 |
---|---|
序列号+ACK | 每个stream有自己的帧序号和ACK |
重传 | 支持选择性重传(更精细) |
拥塞控制 | 可自定义 |
流量控制 | 支持每个流单独设置窗口 |
有序传输 | 默认按顺序交付,也支持多流并行交付 |
本文由作者按照 CC BY 4.0 进行授权