什么是UDP
包头
功能
- 快速传输:UDP通过提供一种无连接的传输方式,减少了建立和维护连接的开销,从而实现了较快的数据传输速度。
- 低延迟:由于UDP不需要等待连接的建立,数据包可以立即发送,因此UDP在实时应用中可以提供较低的传输延迟。
- 支持广播和多播:UDP协议支持广播和多播功能,可以将数据包发送给同一网络中的所有设备(广播)或特定组中的一组设备(多播)。
特点
- 传输成本低,简单沟通,不需要数据结构,处理逻辑,过多的包头字段等,只要是服务监听的端口任何人都可以给他传数据,不需要建立链接,
- 不可靠,不提供可靠性和错误恢复机制,数据在传输过程中可能会丢失、乱序或重复。
- UDP数据报的长度通常小于或等于IP层的MTU,因为UDP不负责分片,分片工作交给网络层
UDP的使用
常见应用
- DNS:查询和响应通常使用UDP协议进行传输,短小的DNS消息,UDP可以提供较快的响应速度。
- DHCP:使用UDP协议进行客户端和服务器之间的通信,以提供IP地址的分配和配置。
- TFTP:使用UDP作为传输协议,主要用于从服务器下载或上传文件。
- NTP:用于同步网络中的设备时钟,确保设备具有准确的时间。
- SNMP:一种网络管理协议,用于网络设备监控、配置和故障排除等。
- QUIC:谷歌开发,目前谷歌,YouTube,facebook都有用,可以提供多路复用,快速建立链接,错误恢复,拥塞控制等功能
- RADIUS:是一种用于远程身份验证和授权的协议,常用于认证网络用户。
流媒体协议
- RTMP:基于TCP的就会出现一旦出现大量重传就会一直卡顿的情况,因而很多直播已经用基于UDP去做流媒体传输的协议,
- SIP:是一种用于建立、修改和终止会话的协议,常用于语音、视频和即时通信等应用。
- MGCP:是一种控制多媒体网关的协议,用于语音、视频和传真等通信
实时游戏
- 没有异步I/O的时候无法维护过多TCP链接时需要使用UDP来应对过多的流量
- 对实时性要求比较高的游戏,需要使用自定义的传输(重传等)策略来维护数据
物联网
- MQTT--TCP CoAP--UDP
- 物联网设备很多都是内存很小的嵌入式系统维护TCP的代价过大(Thread,CoAP)
使用注意项
数据大小
应用设计和使用UDP传输时尽量避免需要进行UDP分片的情况。可以通过调整链路设备的MTU,以及程序的数据发送大小,避免分片带来的问题。
安全问题
没有加密和安全验证机制容易被窃听和篡改
可以通过快速发送大量more fragments 为1的报文来消耗对方内存
网络情况
网络的拥塞和网络的可靠性决定着UDP传输的稳定性和完整性
标签:协议,UDP,网络,TCP,传输,分片 From: https://blog.51cto.com/u_5105856/6598764