一、UDP简介
UDP(User Datagram Protocol,用户数据报协议)是一个简单地面向数据报的运输层协议,为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。
UDP 的主要特点:
- UDP 是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
- UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
- UDP 是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界
- UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低
- UDP 支持一对一、一对多、多对一和多对多的交互通信。
- UDP 的首部开销小,只有8个字节,比TCP的20个字节的首部要短
官方参考文档:https://www.rfc-editor.org/rfc/rfc768.txt
二、UDP报文格式
UDP数据报分为首部和用户数据部分,整个UDP数据报作为IP数据报的数据部分封装在IP数据报中,UDP数据报文结构如图所示:
UDP首部有8个字节,由4个字段构成,每个字段都是两个字节:
- 源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
- 目的端口:目的端口号,在终点交付报文的时候需要用到。
- 长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
- 校验和:检测UDP数据报在传输中是否有错,有错则丢弃。该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0.