考点四:UDP数据报

考点四:UDP数据报

1.UDP 概述

前面已经简单讲述过UDP协议,UDP不提供可靠交付,但在某些情况下UDP是一种最有效(效率高)的工作方式。例如,足球赛事直播,我们能容忍因为不可靠而丢失几个画面(丢失一两秒的画面),但是绝对不会容忍卡顿(可能卡顿前,还没进球;但是卡顿过后,已经1比0了,我估计你把计算机砸了的心都有)。它只在IP的数据报服务之上增加了很少的功能,即端口的功能和差错检测的功能主要有以下几点(这些都要背诵下来):

(1)UDP是无连接的,即发送数据之前不需要建立连接,因此UDP具有较高的系统效率。例如,直播需要较高的效率,若使用TCP,则因为连接建立、管理等开销可能会造成效率低等问题。

(2)UDP使用尽最大努力交付,既不保证可靠交付,又不使用拥塞控制。当然,使用UDP的应用层需要使用一定的可靠机制来保证数据的可靠性。

(3)UDP支持一对一、一对多、多对一和多对多的交互通信。

(4)UDP的首部只有8字节,相比于TCP的20字节,具有较小的首部开销。

(5)UDP是面向报文的(图5-6),发送方UDP对应用程序交付下来的报文,在添加首部后就向下交付到IP层。UDP对应用层交付下来的报文,既不合并也不拆分,而是保留这些报文的边界。应用层交给UDP的报文,UDP照样发送,即一次发送一个报文(完全按照用户的指示办事,应用层给UDP什么,UDP就发什么)。接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。因此,应用程序必须选择大小合适的报文。当报文大于最大报文长度时,计算机网络将直接丢弃过大报文。

图5-6 UDP面向报文的数据传输

2.UDP的首部格式

UDP协议因为工作简单,所以其数据格式也比较简单,包含两个部分:UDP首部和用户数据。整个UDP数据报作为IP数据报的数据部分封装在IP数据报中,UDP首部有8字节,由4个字段组成,每个字段的长度都是2字节,如图5-7所示。各字段意义如下:

图5-7 UDP数据报格式

(1)源端口:源端口号,在需要对方回信时选用,不需要时可置全“0”。

(2)目的端口:目的端口号,这在终点交付报文时需要用到。

如图5-8所示,当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程,这个过程是复用;同时UDP根据不同应用进程的端口把应用进程的数据封装成不同的UDP,之后交给IP层进行转发,这个过程是分用。

(3)长度:UDP数据报的长度(包括首部和数据),其最小值是8(仅有首部)。

(4)校验和:检测UDP数据报在传输中是否有错。如果有错,就直接丢弃报文,UDP不提供纠错功能。

图5-8 UDP基于端口的分用和复用

3.UDP校验

在计算校验和时,要在UDP数据报之前增加伪首部。伪首部并不是UDP真正的首部,它既不向下传送也不向上递交,而仅仅是为了计算校验和。这个伪首部的校验既检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了检验。图5-9给出了UDP数据报的伪首部各字段的内容。

图5-9 UDP数据报的伪首部各字段的内容

UDP校验和的计算方法不适用于CRC或奇偶校验等方法,而是使用二进制反码运算求和再取反。

UDP仅仅提供检错功能,当校验出数据有错误时,不提供纠错功能,一般选择直接丢弃数据,同时发送ICMP差错报告提示发送方数据有错。

【政哥点拨】

1.UDP协议是( )。

A.可靠的无连接协议 B.不可靠的无连接协议

C.可靠的连接协议  D.不可靠的连接协议

解析 B 本题考查UDP协议提供的服务类型。UDP协议提供的是面向无连接的服务,是不可靠的。所以,B项正确。

2.UDP数据报比IP数据报多提供了( )服务。

A.流量控制 B.拥塞控制 C.端口功能 D.路由转发

解析 C 虽然UDP协议和IP协议都是数据报协议,但是它们之间还是存在差别的。最大的差别是IP数据报只能找到目的主机而无法找到目的进程,UDP提供端口功能以及复用和分用功能,可以将数据投递给对应的进程。

3.下列关于UDP协议的叙述中,正确的是( )。

Ⅰ.提供无连接服务

Ⅱ.提供复用/分用服务

Ⅲ.通过差错校验,保障可靠数据传输

A.仅Ⅰ B.仅Ⅰ、Ⅱ C.仅Ⅱ、Ⅲ D.Ⅰ、Ⅱ、Ⅲ

解析 B UDP提供的是无连接的服务,Ⅰ项正确;同时UDP提供复用/分用服务,Ⅱ项正确;UDP虽然有差错校验机制,但是UDP的差错校验只是检查数据在传输过程中有没有出错,出错的数据直接丢弃,并没有重传机制,不能保证可靠传输,使用UDP协议时,可靠传输必须由应用层实现,Ⅲ项错误。所以,选择B项。

4.一个UDP用户数据报的首部的十六进制表示:01 01 00 50 00 2C E2 17,则源端口和目的端口分别是( )。

A.源端口289,目的端口17 B.源端口101,目的端口17

C.源端口257,目的端口80 D.源端口010,目的端口50

解析 C 本题对考生的要求比较高,要求考生能够记住UDP数据报的报头结构,并从给出的报头数据求出源端口号和目的端口号。我们先来看看UDP数据报的格式,如图5-10所示。

图5-10 UDP数据格式

显然,十六进制的0101是源端口号,十六进制的0050是目的端口号。十六进制的0101是1×162+1×160=257,目的端口号是5×16=80。所以,选择C项。

政哥应试提醒:考试中,UDP主要考查的是协议的特点,以及协议的首部格式中的字段。

难度系数:★

牛刀小试

1.下列关于UDP的陈述中正确的是( )。

A.UDP使用TCP传输协议 B.给出数据的按序投递

C.不允许多路复用  D.提供普通用户可直接使用的数据报服务

2.UDP报文头不包括( )。

A.目的地址 B.源UDP端口 C.目的UDP端口 D.报文长度

3.关于UDP协议,下列说法正确的是( )。

A.UDP协议可提供可靠的数据流传输服务

B.UDP协议可提供面向连接的数据流传输服务

C.UDP协议可提供全双工的数据流传输服务

D.UDP协议可提供面向非连接的数据流传输服务

4.以下关于UDP协议的主要特点的描述中,错误的是( )。

A.UDP报头主要包括端口号、长度、校验和等字段

B.UDP长度字段是UDP数据报的长度,包括伪首部的长度

C.UDP校验和对伪首部、UDP报文头以及应用层数据进行校验

D.伪首部包括IP分组报头的一部分

5.如果用户应用程序使用UDP协议进行数据传输,那么( )协议必须承担可靠性方面的全部工作。

A.数据链路层 B.网络层 C.传输层 D.应用层

6.下列选项中,( )是UDP协议的功能。

A.面向连接 B.流量控制 C.序列和确认 D.系统开销低

7.下面协议中,( )使用UDP来传输。

A.DNS B.FTP C.HTTP D.SMTP

8.以下UDP熟知端口号错误的是( )。

A.DNS:53 B.TFTP:56 C.NTP:123 D.SNMP:161

9.以下对UDP数据报描述不正确的是( )。

A.是无连接的 B.是不可靠的 C.不提供确认 D.提供消息反馈

10.下列说法哪项是错误的?( )

A.用户数据报协议UDP提供了面向非连接的、不可靠的传输服务

B.由于UDP是面向非连接的,因此它可以将数据直接封装在IP数据报中进行发送

C.在应用程序利用UDP协议传输数据之前,首先需要建立一条到达主机的UDP连接

D.当一个连接建立时,连接的每一端分配一块缓冲区来存储接收到的数据,并将缓冲区的尺寸发送给另一端

11.接收端收到有差错的UDP用户数据报时应如何处理?( )

A.缓存 B.报错 C.重传 D.丢弃

12.如果对数据的实时性要求比较高,但对数据的准确性要求相对较低(如在线电影),一般可使用传输层的( )协议。

A.UDP B.TCP C.FTP D.IP

牛刀小试解析

1.D 解析 A选项显然不对,UDP和TCP处在同一层,不使用TCP传输。UDP是无连接的协议,不能保证数据的按序到达,所以B选项错误。正是因为UDP是面向无连接的服务,所以允许多路复用,C选项错误。

UDP(User Datagram Protocol,用户数据报协议)提供面向无连接的简单不可靠信息传送服务,这种服务是普通用户可以直接使用的。所以,D项正确。

2.A 解析 本题考查UDP协议的报头结构。UDP数据报的首部有8个字节,分为源端口号、目的端口号、长度与校验和4个字段,每个字段分别是2个字节。UDP数据报的长度字段,包括首部和数据两部分,最小的长度是8个字节,即只有首部,没有数据。

所以,本题的答案是A项。显然,目的地址一般在IP层用到,不是UDP数据报关心的问题。

3.D 解析 本题考查UDP协议提供的服务。TCP是全双工的,这一点要牢记。UDP不是全双工的。这里我们回顾一下TCP释放连接的“四次挥手”。

4.B 解析 本题考查UDP协议的主要特点。UDP数据报首部有4个字段,每个字段2字节,共8字节,分别是源端口号、目的端口号、长度与校验和。所以,选择B项。

5.D 解析 一般情况下,若某一个层使用的传输协议不可靠,可靠性则由比该层更高层的协议来提供。UDP是不可靠的协议,其可靠性只能由其上一层即应用层来提供。

6.D 解析 本题考查UDP协议的功能。UDP提供的是面向无连接的服务,所以,A项错误。UDP协议没有流量控制机制。序列和确认是可靠传输的功能,UDP也不提供序列和确认功能。

UDP首部只有8字节,系统开销小。TCP协议的首部有20字节,首部开销比UDP大。

7.A 解析 本题考查常见的在传输层使用UDP协议的应用层协议。这种题目很简单,但是不方便记忆,我们来总结成一张表(表5-5),方便大家记忆。

表5-5 常见的应用层协议与对应的端口号

由表5-5可知,UDP协议可以用来传输应用层DNS协议的数据。因此,选择A项。B、C、D项表示的其他协议都只能使用TCP传输。

8.B 解析 本题考查UDP熟知端口。NTP(网络时间协议)采用的端口号是123。SNMP(简单网络管理协议)采用的是161端口。DNS采用53端口。由第7题的表5-5可知,TFTP采用的端口是69,而不是56。

9.D 解析 本题考查UDP数据报的特点。UDP协议是面向无连接的、不可靠的协议,对数据的交付采用“尽力而为”的方式。当然,UDP协议也不提供确认机制,这是可靠传输才采用的机制。UDP也不提供消息反馈,UDP不采用全双工的通信机制。

10.C 解析 本题考查UDP协议的特点。UDP是面向无连接的服务。所以,在数据传输之前,并不需要预先建立一条到达目的主机的UDP连接,而是直接发送数据。TCP是面向连接的服务。TCP在发送数据之前,需建立一条到达目的主机的TCP连接,之后才能发送数据,所以C项的说法是错误的,D项的说法是正确的,TCP的滑动窗口协议就是这么实现的。可是,这机制不是用来描述UDP协议的,这一点要牢记。

11.D 解析 接收端收到有差错的UDP报文,一般做丢弃处理。

12.A 解析 本题考查UDP数据报适用于实时性要求较高、允许数据有少量错误的网络传输。FTP是应用层协议,IP是网络层协议,显然不满足题意要求。TCP提供差错控制,适合对数据的准确性要求较高的场合。对数据的实时性要求较高、准确性较低的场合,适合用UDP协议,如视频数据传输等。