UDP 的全称是 User Datagram Protocol,中文名是用户数据报协议。
UDP 提供面向无连接的通信服务,是不具有可靠性的数据报协议。
UDP 虽然可以确保发送消息的大小,但不能保证消息一定会到达,传输途中如果出现丢包,UDP 不负责进行重发。
因此,应用有时候会根据自己的需要进行重发处理。甚至当包的到达顺序错乱时,UDP 也没有纠正功能。
此外,UDP 也不提供复杂的控制机制,即使出现网络拥堵,UDP 也无法进行流量控制等避免避免网络拥塞的行为。
由于 UDP 面向无连接,可以随时发送数据,本身的处理逻辑简单高效,因此,常用于以下场景:
- 包总量较少(DNS、DHCP)
- 视频、音频等多媒体即时通信(少量的丢包不影响通信质量)
- 广播通信(广播、多播)
UDP 报文首部由源端口号、目标端口号、包长和校验和组成:
- 源端口号:发送端端口号,该字段有可能为空(不需要返回的通信)
- 目标端口号:接收端端口号
- 包长度:UDP 首部的长度跟数据的长度之和
- 校验和:为了提供可靠的 UDP 首部和数据而设计,不一定会用到
...