用户数据报协议UDP

一、UDP协议概述

这里写图片描述
用户数据报协议(User Datagram Protocol,缩写为 UDP),又称用户数据报文协议,是一个简单的面向数据报的运输协议。

在 TCP/IP 模型中,UDP 为网络层以上和应用层以下提供了一个简单的接口。UDP 只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以 UDP 有时候也被认为是不可靠的数据报协议)。UDP 在 IP 数据报的头部仅仅加入了复用和数据校验(字段)。

由于缺乏可靠性且属于非连接导向协议,UDP 应用一般允许一定量的丢包、出错和复制粘贴。但有些应用,比如TFTP,如果需要则必须在应用层增加根本的可靠机制。但是绝大多数 UDP 应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。如果某个应用需要很高的可靠性,那么可以用传输控制协议(TCP 协议)来代替 UDP。

域名系统(DNS)、简单网络管理协议(SNMP)、动态主机配置协议(DHCP)、路由信息协议(RIP)和某些影音流服务等应用采用的就是 UDP 协议。

二、UDP协议的特点

1、UDP 是无连接的。即发送数据之前不需要建立连接(发送数据结束时也没有连接需要释放),因此减少了开销和发送数据之前的时延。

2、UDP 使用尽最大努力交付。因此不保证可靠交付,主机不需要维持复杂的连接状态表。

3、UDP 是面向报文的。发送方的 UDP 对应用程序交付下来的报文,在添加首部后就向下交付给 IP 层。应用层交给 UDP 多长的报文,UDP 就照样发送多长的报文。接受方的 UDP 对 IP 层交上来的 UDP 数据报,再去除首部后就原封不动的交付给上层的应用进程。因此,UDP 一次交付一个完整的报文。

4、UDP 没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。很多实时应用(IP 电话。实时视频等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许有太大的时延。UDP 的特点正好满足这些要求。

5、UDP 支持一对一、一对多、多对一、多对多的交互通信。

6、UDP 的头部信息开销很小,只有 8 个字节,比 TCP 的 20 个字节要小很多。

三、UDP首部格式

用户数据报有两个字段:数据字段和首部字段。首部字段只有 8 个字节,并由 4 个字段组成,每个字段的长度都是 2 个字节。

(1)源端口。即源端口号,在对方回应时使用,不需要时可用 0 表示。

(2)目的端口。即目的端口号,在终点交付报文时使用。

(3)长度。UDP 数据报的长度,最小值为 8 (只有首部)。

(4)检验和。检测 UDP 用户数据报在传输过程中是否有错。有错就丢弃。

会发现在 UDP 首部之前有一个伪首部,这个伪首部用于计算检验和,在下面会提到。

四、UDP端口分用

当运输层从 IP 层接收到 UDP 用户数据报时,就根据首部中的目的端口,把 UDP 数据报通过相应的端口,向上交付给最后的终点(应用进程)。下面是 UDP 基于端口分用的示意图。

如果接收方 UDP 发现收到的报文中的目的端口号不正确(不存在该端口对应的应用进程),就会丢弃该报文,并由网际控制报文协议 ICMP 发送“端口不可达”差错报文给发送方。

五、UDP检验和

在 UDP 的首部信息中有 2 个字节的检验和,检验和用于检测 UDP 数据报在传输过程中是否发生错误。

当 UDP 运行在 IPv4 之上时,为了能够计算校验和,需要在 UDP 数据包前添加一个“伪头部”。伪头部包括了 IPv4 头部中的一些信息,但它并不是发送 IP 数据包时使用的 IP 数据包的头部,而只是一个用来计算校验和而已。因此伪头部既不向下传送也不向上提交。可以在上面的图中查看伪首部各个字段的内容。

在发送方,首先把全 0 放入检验和字段,再把 UDP 首部及 UDP 用户数据报看成是由多个16 位连接起来的字串。若 UDP 用户数据报的数据部分不是偶数个字节,则填充一个全 0 的字节(此字节不发送)。然后按二进制反码计算 16 位字的和,将此和的二进制反码写入检验和字段后,发送 UDP 用户数据报。

在接收方,计算所收到的数据报的检验和,将其与检验和字段相比较,如果相同则检验没有出错(但是不保证没有错误),若检验和不相同则说明检验出错,接受方就丢弃这个数据报。

六、总结

  • UDP 是运输层协议,用于提供不可靠的数据传递。
  • UDP 的主要特点:无连接、尽最大努力交付、面向报文、无拥塞控制、支持一对一……的交互通信、首部开销小。
  • UDP 的首部由源端口、目的端口、长度和检验和组成,每个字段占两个字节。
  • 检验和用于检测 UDP 数据报在传输过程中是否发生错误。
  • 基于 UDP 协议的应用主要有:域名系统(DNS)、简单网络管理协议(SNMP)、动态主机配置协议(DHCP)、路由信息协议(RIP)和某些影音流服务等。

猜你喜欢

转载自blog.csdn.net/codejas/article/details/80192469