UDP(User Datagram Protocol),又叫用户数据报协议。 UDP是一个无连接的、不可靠、基于数据报的传输协议。UDP只是报文(报文可以理解为一段段的数据)的搬运工,不会对报文进行任何拆分和拼装操作。
UDP协议的特点
- UDP是无连接的,即发送数据之间不需要建立连接,因此减少了开销和发送数据之前的时延。
- UDO使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态。
- UDP是面向报文。发送方的UDP对应用程序交下来的报文在添加首部后就向下交付给IP层,对交下来的报文既不合并也不拆分。因此,应用进程必须选择合适大小的报文,若报文太长,UDP把它交付给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率;反之,若报文太短,UDO把它交给IP层后,会使IP数据报的首部的相对长度太大,也降低了IP层的效率。
UDP头部
UDP有数据字段和首部字段两个字段。首部字段只有8个字节,分别为源端口、目的端口、长度和检验和。检验和用于检测UDP用户数据报在传输中是否有错,有错就丢弃。
当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给进程。如果接方UDP发现收到的报文中的目的端口不正确就丢弃报文,并由ICMP发送“端口不可达”差错报文交给发送方。
在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。“伪首部”并不是用户数据报真正的首部,只是在计算检验和时,临时添加在UDP数据报前面,得到一个临时UDP数据报。伪首部既不向下传送也不向上递交,仅仅是为了计算检验和。
UDP协议的使用场景
- UDP适合于这样的进程:需要简单的请求-响应通信,而较少考虑流量控制和差错控制。对于需要传送成块数据的进程(如FTP)则不适合使用UDP。
- UDP适合于具有内部流量控制和差错控制机制的进程,如简单文件传输协议TFTP。
- UDP 提供了单播,多播,广播的功能。对多播来说,UDP是一个合适的传输协议。
- UDP常用于交互实时应用,以避免接收报文之间的不一致延时。
- UDP可用于管理进程,如SNMP。
UDP 提供了单播,多播,广播的功能。