浅谈UDP协议
一.定义:
UDP协议是一个传输层无连接的通信协议,UDP全称 User Datagram Protocol ,用户数据报协议
二.协议的特点
1.无连接:通信双方进行通信之前不用进行连接,不握手,不维持会话,直接通信即可
2.不可靠传输:数据在传输过程中,不知道数据有没有传送到对方,数据就可能发生丢包,乱序,重复到达等情况,不能保证数据一定传送到对方
3.以数据报为单位进行数据传输:传输数据的时候是以一个一个的数据报进行传输的
4.全双工:通信双方可以同时收发数据,互相独立,互不干扰
三.协议组成部分
UDP协议是由报头+载荷组成的
报头占8字节由4部分组成,分别是16位源端口号,16位目的端口号,16位UDP长度,16位校验和
四.使用场景
UDP协议容错率高
1.实时性强,允许少量丢包的场景
如:视频通话,IP会议等
2.轻量查询,一次收发即可,丢了大不了重发请求
如:DNS 域名解析
3.广播/组播场景
如;局域网视频广播、设备批量下发配置、 IPTV 电视组播流
五.注意事项
UDP 报文整体长度由 16 位长度字段限制,最大仅 65535 字节(约 64KB)。同时互联网链路普遍存在 MTU 限制,完整 64KB 的 UDP 大包极易被路由器分片甚至丢弃,日常业务中单次传输数据常超过该上限。若业务仍需基于 UDP 传输大数据,不能依赖底层 IP 分片,需在应用层自行实现拆包、分段发送、接收缓存组包的逻辑,以此规避 UDP 单报文长度限制与网络分片丢包问题。可参考下面两张图理解
