5.1.3 无连接服务与面向连接服务
## 5.1.3 无连接服务与面向连接服务 TCP/IP协议族在IP层之上定义了两个主要的传输协议: - TCP(传输控制协议):面向连接,提供可靠的全双工逻辑信道。 - UDP(用户数据报协议):无连接,提供不可靠的逻辑信道。 TCP 要求通信双方在数据传输前先建立连接,传输结束后释放连接。TCP 不提供广播或多播服务。TCP 通过确认、流量控制、计时器和连接管理等机制保障可靠传输,但代价是首部开销大、处理资源消耗高。因此,TCP 适用于对可靠性要求高的场景,如 FTP、HTTP、SMTP 等。 UDP无须建立连接,接收方收到数据报后,也不发送确认。它在IP层之上仅提供两项服务:多路复用与分用、数据差错检测。由于结构简单、开销小,UDP执行效率高、实时性好,适用于对时延敏感、可容忍少量丢包的应用,如TFTP、DNS、DHCP和RIP等。 表5.1列出了一些典型互联网应用及其对应的传输层协议。 <!-- page: 239 --> 第5章 传输层 227 表 5.1 一些典型互联网应用及其对应的传输层协议 | 互联网应用 | TCP/IP 应用层协议 | TCP/IP 传输层协议 | | --- | --- | --- | | 域名解析 | 域名系统(DNS) | UDP | | 文件传送 | 简单文件传送协议(TFTP) | UDP | | 路由选择 | 路由信息协议(RIP) | UDP | | IP 地址分配 | 动态主机配置协议(DHCP) | UDP | | 网络管理 | 简单网络管理协议(SNMP) | UDP | | 电子邮件 | 简单邮件传送协议(SMTP) | TCP | | 远程终端接入 | 远程终端协议(TELNET) | TCP | | 万维网 | 超文本传送协议(HTTP) | TCP | | 文件传送 | 文件传送协议(FTP) | TCP | **注意** IP 数据报和 UDP 数据报的区别;IP 数据报在网络层需经路由器存储转发;而 UDP 数据报作为 IP 数据报的载荷,在网络层传输时,其内容对路由器不可见。 ## 5.1.4 本节习题精选 ### 单项选择题 01. 在 OSI 参考模型中,提供端到端的透明传输服务、差错控制和流量控制的层是( )。 A. 物理层 B. 网络层 C. 传输层 D. 会话层 02. 传输层为( )之间提供逻辑通信。 A. 主机 B. 进程 C. 路由器 D. 操作系统 03. 下列关于传输层的面向连接服务特性的说法中,正确的是( )。 A. 不保证可靠和顺序交付 B. 不保证可靠但保证顺序交付 C. 保证可靠但不保证顺序交付 D. 保证可靠和顺序交付 04. 在 TCP/IP 模型中,传输层的主要作用是在互联网的源主机和目的主机对等实体之间建立用于会话的( )。 A. 操作连接 B. 点到点连接 C. 控制连接 D. 端到端连接 05. 可靠传输协议中的“可靠”指的是( )。 A. 使用面向连接的会话 B. 使用尽力而为的传输 C. 使用滑动窗口来维持可靠性 D. 使用确认机制来确保传输的数据不丢失 06. 下列选项中,( )能够唯一确定一个在互联网上通信的进程。 A. 主机名 B. IP 地址及 MAC 地址 C. MAC 地址及端口号 D. IP 地址及端口号 07. 在()范围内的端口号被称为熟知端口号并限制使用,这些端口号是为常用的应用层协议如 FTP、HTTP 等保留的。 A. 0~127 B. 0~255 C. 0~511 D. 0~1023 08. 下列哪个 TCP 熟知端口号是错误的?( ) A. TELNET:23 B. SMTP:25 C. HTTP:80 D. FTP:24 09. 下列关于 TCP 和 UDP 端口的说法中,正确的是( )。 A. TCP 和 UDP 分别拥有自己的端口号,它们互不干扰,可以共存于同一台主机 <!-- page: 240 --> 2027年计算机网络考研复习指导 B. TCP 和 UDP 分别拥有自己的端口号,但它们不能共存于同一台主机 C. TCP 和 UDP 的端口没有本质区别,但它们不能共存于同一台主机 D. 当一个 TCP 连接建立时,它们互不干扰,不能共存于同一台主机 10. 下列关于传输层及相关协议的说法中,错误的是( )。 A. 传输层是 OSI 参考模型的第四层 B. 传输层提供的是主机间的点到点数据传输 C. TCP 是面向连接的,UDP 是无连接的 D. TCP 进行流量控制和拥塞控制,而 UDP 既不进行流量控制,又不进行拥塞控制 ## 5.1.5 答案与解析 ### 单项选择题 01. C 端到端即进程到进程,物理层只提供节点之间的比特流传输服务,网络层提供主机到主机的通信服务,主要功能是路由选择。本题条件若换成 TCP/IP 模型,答案依然是选项 C。 02. B 传输层提供的是端到端服务,为进程之间提供逻辑通信。 03. D 面向连接服务是指通信双方在进行通信之前,要先建立一个完整的连接,在通信过程中,整个连接一直可以被实时地监控和管理。通信完毕后释放连接。面向连接的服务可以保证数据的可靠和顺序交付。 04. D 传输层的主要作用是在源主机进程和目的主机进程之间提供端到端的数据传输。一般来说,端到端通信是由一段段的点到点信道构成的,端到端协议建立在点到点协议的基础之上。 05. D 若一个协议使用确认机制对传输的数据进行确认,则可以认为它是一个可靠的协议;若一个协议采用“尽力而为”的传输方式,则是不可靠的。例如,TCP 对传输的报文段提供确认,因此是可靠的传输协议;而 UDP 不提供确认,因此是不可靠的传输协议。 06. D 要在互联网上唯一确定一个进程,就要使用 IP 地址和端口号的组合,通常称为套接字(Socket),IP 地址确定某主机,端口号确定该主机上的某进程。 07. D 熟知端口号的数值为 $0 \sim 1023$,登记端口号的数值是 $1024 \sim 49151$,客户端使用的端口号的数值是 $49152 \sim 65535$。 08. D FTP 控制连接的端口是 21,数据连接的端口是 20。 09. A 端口号只具有本地意义,即端口号只标识本计算机应用层中的各个进程。同一台计算机中的 TCP 和 UDP 分别拥有自己的端口号,它们互不干扰,因此 UDP 和 TCP 可以使用相同的端口号。 10. B 传输层是 OSI 参考模型中的第 4 层,TCP 是面向连接的,它提供流量控制和拥塞控制,保证 <!-- page: 241 --> 第5章 传输层 229 服务可靠;UDP是无连接的,不提供流量控制和拥塞控制,只能做出尽最大努力的交付。传输层提供的是进程到进程间的传输服务,也称端到端服务。 ## 5.2 UDP ### 5.2.1 UDP数据报 #### 1. UDP概述 UDP仅在IP层的数据报服务之上增加了复用、分用和差错检测的功能。若应用开发者选择UDP而非TCP,则应用程序几乎直接与IP打交道。尽管TCP提供可靠服务,而UDP不提供,但TCP并非总是首选。许多应用更适合采用UDP,主要原因如下。 **考虑因素** ⊞ UDP协议的优点(2014、2024) 1)UDP是无连接的,没有建立连接的时延。TCP需要在主机中维护连接状态(包括发送和接收缓存、拥塞控制参数、序号和确认序号等),而UDP无须维护这些状态。 2)UDP是面向报文的。发送方UDP对应用层交下的报文,在添加首部后即向下交付给IP层,一次发送一个完整的报文(不可分割),既不合并也不拆分,而是保留报文的边界。因此,应用程序必须选择合适大小的报文,若报文太长,则交付给IP层后,可能导致分片;若报文太短,则会使IP首部的开销占比过大。两者均会降低传输效率。相比之下,TCP是面向字节流的,每个字节都有编号,支持自动拆分与重组,对报文长度无限制。 3)UDP的首部开销小,仅有8B;而TCP首部至少20B。 4)UDP支持一对一、一对多和多对多的通信。TCP仅支持一对一的通信。 5)UDP没有拥塞控制,因此网络拥塞不会影响源主机的发送速率。某些实时应用要求以稳定的速率发送数据,可以容忍少量丢包,但无法接受较大的传输时延。 UDP常用于一次性传输少量数据的应用(如DNS、DHCP等),因为TCP的连接建立、维护和释放会带来显著开销。UDP也广泛用于多媒体应用(如视频会议、流媒体等),因为这些应用更关注低时延而非可靠性,而TCP的拥塞控制会引入不可接受的延迟。 UDP不保证可靠交付,但这并不意味着应用不要求可靠性——所有可靠性机制可由应用层自行实现,开发者可根据需求灵活设计。 #### 2. UDP的首部格式 UDP数据报包含两部分:首部字段和数据字段。UDP首部有8B,由4个字段组成,每个字段的长度都是2B,如图5.2所示。各个字段的意义如下: **考虑因素** ⊞ UDP的首部格式及字段含义(2018) 1)源端口号。发送进程的端口号。需要对方回复时选用,不需要回复时可置为全0。 2)目的端口号。接收进程的端口号。该字段在所有UDP报文中都必须有效。 **考虑因素** ⊞ UDP首部的长度(2021) 3)长度。UDP数据报的长度(包括首部和数据),其最小值是8(仅有首部)。 4)检验和。由发送方的传输层计算并写入,接收方的传输层检测是否有差错,有错就丢弃。在IPv4中,该字段可置为全0表示未使用(但不建议),在IPv6中则强制启用。 当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给最后的终点——应用进程,如图5.3所示。 <!-- page: 242 --> 2027年计算机网络考研复习指导
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图5.2 UDP数据报格式
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图5.3 UDP基于端口的分用 若接收方UDP发现收到的报文中的目的端口号不正确(不存在对应于端口号的应用进程),则丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方。 ## 5.2.2 UDP检验 **考虑语法** ▶ UDP检验的原理(2025) 在计算检验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部。只是在计算检验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。检验和就是按照这个临时的UDP数据报来计算的。伪首部既不向下传递给网络层,也不向上递交给应用层,而只是为了计算检验和。图5.4给出了UDP数据报的首部和伪首部。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图5.4 UDP数据报的首部和伪首部 UDP检验和的计算方法与IP首部检验和基本类似。不同之处在于:IP检验和只检验IP数据报的首部,而UDP检验和把首部和数据部分一起检验。 **UDP计算检验和的过程:在发送方,首先将检验和字段置为全0,然后将伪首部与UDP数据报视为一连串16位字。若UDP数据部分的长度为奇数个字节,则在计算时末尾补一个全0B(该填充字节仅在计算检验和时临时添加,不影响实际发送的数据内容)。随后,按二进制反码规则对所有16位字求和,并将结果的反码填入检验和字段后发送。在接收方,将收到的UDP数据报与伪首部重新组合(同样在必要时补全字节),再按二进制反码求和。若无差错,则结果应为全1(16位全为1);否则说明有差错,接收方应丢弃该UDP数据报。** **考虑语法** ▶ UDP检验和的计算(2024) **二进制反码求和的运算规则:①** 从低位到高位逐列进行计算, $0 + 0 = 0$ , $0 + 1 = 1$ , $1 + 1 = 0$ 并产生进位1;② 若最高位相加后产生进位,则需将该进位加到结果的最低位,该过程称为回卷。以下通过一个简单示例说明,假设有以下3个16位字: 01100110 01100000 01010101 01010101 10001111 00001100 <!-- page: 243 --> 第5章 传输层 231 先将前两个字相加,得 再将结果与第三个字相加(最高位产生进位,需加至最低位),得 最后对上述相加结果取反码,就得到检验和: 在接收方,将包括检验和在内的4个16位字相加,若结果为11111111 11111111,则判定无差错;若结果中的某些位是0,则说明有差错。 ## 注意 ① 若 UDP 检验和检验出数据报错误,通常应丢弃该报文;尽管 RFC 允许将其交付上层并附带错误指示,但实际实现中极少采用。 ② 通过伪首部,UDP 不仅能校验源端口、目的端口和数据内容,还能检测 IP 首部中的源地址和目的地址是否在传输过程中因错误而改变。 这种差错检验机制虽然检错能力有限,但其优势在于计算简单、处理速度快。 ## 5.2.3 本节习题精选 ### 一、单项选择题 01. 使用 UDP 的网络应用,其数据传输的可靠性由( )协议负责。 A. 传输层 B. 应用层 C. 数据链路层 D. 网络层 02. 下列关于 UDP 的描述中,错误的是()。 A. UDP 很头主要包括端口号、长度、检验和等字段 B. UDP 长度字段是 UDP 数据报的长度,包括伪首部的长度 C. UDP 检验和对伪首部、UDP 报文头及应用层数据进行检验 D. 伪首部包括 IP 分组报头的一部分 03. UDP 数据报首部不包含()。 A. UDP 源端口号 B. UDP 检验和 C. UDP 目的端口号 D. UDP 数据报首部长度 04. UDP 数据报中的长度字段()。 A. 不记录数据的长度 B. 只记录首部的长度 C. 只记录数据部分的长度 D. 包括首部和数据部分的长度 05. UDP 数据报比 IP 数据报多提供了( )服务。 A. 流量控制 B. 搁塞控制 C. 端口功能 D. 路由转发 06. 下列关于 UDP 的描述,正确的是()。 <!-- page: 244 --> 2027年计算机网络考研复习指导 A. 给出数据的按序投递 B. 不允许多路复用 C. 拥有流量控制机制 D. 是无连接的 07. 接收方收到有差错的 UDP 数据报时的处理方式是( )。 A. 丢弃 B. 请求重传 C. 差错校正 D. 忽略差错 08. 下列关于 UDP 检验和的说法中,错误的是( )。 A. 计算检验和时需按 2B 对齐,若数据部分不足,则需用一个全 0B 填充 B. 若 UDP 检验和计算结果为 0,则在检验和字段填充 0 C. UDP 检验和字段的计算包括一个伪首部、UDP 首部和携带的用户数据 D. UDP 检验和的计算方法是二进制反码运算求和再取反 09. 下列关于 UDP 检验的描述中,错误的是( )。 A. UDP 检验和字段是可选的,若源主机不想计算检验和,则应置其为全 0 B. 在计算检验和的过程中,需要生成一个伪首部,源主机需要把该伪首部发送给目的主机 C. 检验出 UDP 数据报出错时,可以丢弃或交付给上层 D. UDP 检验和还能检验 IP 数据报的源 IP 地址和目的 IP 地址 10. 下列网络应用中,不适合使用 UDP 的是( )。 A. 客户/服务器领域 B. 远程调用 C. 实时多媒体应用 D. 远程登录 11. 一个 UDP 数据报的数据字段长度为 9192B,如在数据链路层要采用以太网来传送,则应当将其划分为 IP 数据报片的片数是( )。 A. 6 B. 7 C. 8 D. 9 12. 某应用层数据大小为 200B,传输层使用 UDP,网际层使用 IP(采用最大首部长度),使用以太网进行传输(不考虑前导码和 VLAN),则该应用层数据的传输效率是( )。 A. 82.6% B. 77.5% C. 69.9% D. 67.1% 13. 在进行跨网络的 IP 通信时,不考虑 NAT,传输层使用 UDP 进行封装,数据链路层采用以太网 MAC 帧进行封装,则下列字段中一定保持不变的是( )。 I. UDP 总长度 II. UDP 检验和 III. FCS 帧检验序列 IV. 目的 MAC 地址 V. 目的 IP 地址 VI. IP 检验和 A. V B. I、II、V C. IV、VI D. III、IV、V 14. 【2014 统考真题】下列关于 UDP 的叙述中,正确的是( )。 I. 提供无连接服务 II. 提供复用/分用服务 III. 通过差错检验,保障可靠数据传输 A. 仅 I B. 仅 I、II C. 仅 II、III D. I、II、III 15. 【2018 统考真题】UDP 实现分用时所依据的首部字段是( )。 A. 源端口号 B. 目的端口号 C. 长度 D. 检验和 16. 【2024 统考真题】UDP 在计算检验和的过程中,计算得到中间结果为 1011 1001 1011 0110 时,还需要加上最后一个 16 位数 0110 0101 1100 0101,最终计算得到的检验和是( )。 A. 0001 1111 0111 1011 B. 0001 1111 0111 1100 C. 1110 0000 1000 0011 D. 1110 0000 1000 0100 17. 【2025 统考真题】假设路由器实现 NAT 功能,内网中主机 H 的 IP 地址为 192.168.1.5/24。若 H 运行某应用向 Internet 发送了一个 UDP 报文段,则路由器在转发封装该 UDP 报文段的 IP 数据报的过程中,UDP 报文段的首部字段会被修改的是( )。 I. 源端口号 II. 目的端口号 III. 总长度 IV. 检验和 <!-- page: 245 --> 第5章 传输层 233 A. 仅I、III B. 仅I、IV C. 仅II、III D. 仅II、IV ## 二、综合应用题 01. 为什么要使用 UDP?让用户进程直接发送原始的 IP 分组不就足够了吗? 02. 使用 TCP 对实时语音数据的传输是否有问题?使用 UDP 传送数据文件时有什么问题? 03. 一个应用程序用 UDP,到了 IP 层将数据报再划分为 4 个数据报片发送出去。结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传 UDP,而 IP 层仍然划分为 4 个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的 4 个数据报片组装成为完整的数据报?假定目的站第一次收到的后两个数据片仍然保存在目的站的缓存中。 04. 一个 UDP 首部的信息(十六进制表示)为 0xF7 21 00 45 00 2C E8 27。UDP 数据报的格式如下图所示。试问: | 0 | 15 16 | 31 | | --- | --- | --- | | 16位源端口号 | 16位目的端口号 | 8B | | 16位UDP长度 | 16位UDP检验和 | | | 数据(如果有) | | | 1)源端口、目的端口、数据报总长度、数据部分长度分别是什么? 2)该 UDP 数据报是从客户发送给服务器还是从服务器发送给客户?使用该 UDP 服务的程序使用的是哪个应用层协议? 05. 一个 UDP 用户数据报的数据字段为 8192B,要使用以太网来传送。假定 IP 数据报无选项。试问应当划分为几个 IP 数据报片?说明每个 IP 数据报片的数据字段长度和片段偏移字段的值。 ## 5.2.4 答案与解析 ### 一、单项选择题 01. B UDP 在网络层的 IP 基础之上增加了复用分用和有限的差错控制,IP 的特点是尽最大努力交付。UDP 在传送数据时没有流量控制机制,也没有确认机制,是一个不可靠的传输层协议。若网络应用使用 UDP 传输数据,则必须在传输层的上层即应用层提供可靠性的工作。 02. B 伪首部只是在计算检验和时临时添加的,不计入 UDP 的长度。对于选项 D,伪首部包括源 IP 和目的 IP,这是 IP 分组报头的一部分。 03. D UDP 数据报的格式包括 UDP 源端口号、UDP 目的端口号、UDP 报文长度和检验和,但不包括 UDP 数据报首部长度。因为 UDP 数据报首部长度是固定的 8B,所以没有必要再设置首部长度字段。 04. D 长度字段记录 UDP 数据报的长度(包括首部和数据部分),以字节为单位。 05. C 虽然 UDP 和 IP 都是数据报协议,但是它们之间还是存在差别。其中,最大的差别是 IP 数据 <!-- page: 246 --> 2027年计算机网络考研复习指导 报只能找到目的主机而无法找到目的进程,UDP提供端口功能及复用和分用功能,可以将数据报授递给对应的进程。 06. D UDP是不可靠的,所以没有数据的按序投递,排除选项A;UDP只在IP层的数据报服务上增加了很少的一点功能,即复用和分用功能及差错检测功能,排除选项B;显然UDP没有流量控制,排除选项C;UDP是传输层的无连接协议,答案为选项D。 07. A 接收端通过检验发现数据有差错,就直接丢弃该数据报,仅此而已。 08. B UDP检验和不是必需的,若不使用检验和,则将检验和字段设置为0。而若检验和的计算结果恰好为0,则将检验和字段置为全1(这个结论了解即可)。 09. B UDP数据报的伪首部包含了IP地址信息,目的是通过数据检验保证UDP数据报正确到达目的主机。伪首部是临时添加的,只是为了计算检验和,既不向下传送,又不向上递交。若检验出UDP数据报出错,则可以丢弃,也可以交付给上层,但是需要告诉上层这是错误的数据报。 10. D UDP的特点是开销小,时间性能好且易于实现。在客户/服务器模型中,它们之间的请求报文都很短,使用UDP不但编码简单,而且只需要很少的消息。远程调用使用UDP的理由和客户/服务器模型的类似。对于实时多媒体应用,需要保证数据及时传送,而比例不大的错误是可以容忍的,所以使用UDP也是合适的,而且使用UDP可以实现多播,为多个客户端服务。而远程登录需要依靠一个客户端到服务器的可靠连接,必须保证数据传输的安全性,使用UDP是不合适的。 11. B UDP数据字段长度为9192B,UDP首部长度为8B,共9200B。每个IP数据报片的最大长度为1500B,减去IP首部20B,剩下1480B用来存放UDP数据报。因此需要将UDP数据报划分为 $\lceil 9200 / 1480\rceil = 7$ 个IP数据报片。每个IP数据报片的数据字段长度为1480B,除了最后一个为320B。每个IP数据报片的偏移字段的值依次为0,185,370,555,740,925,1110。 12. C 以太网MAC帧首部和尾部为18B,网际层IP首部为60B(采用最大首部长度),传输层UDP首部为8B,所以该应用层数据的传输效率为 $200 \div (200 + 18 + 60 + 8) = 69.9\%$ 。 13. B UDP总长度等于应用层数据加UDP首部长度,传输过程中保持不变。UDP检验和覆盖伪首部(含源/目的IP)、UDP首部及数据内容;由于中间节点不修改这些字段,检验和无须更新。FCS是以太网帧的校验码,每经过一跳都需要重新封装帧,因此必须重新计算。MAC地址是链路层地址,路由器转发时会将其更新为下一跳的MAC地址。路由器依据目的IP地址转发分组,不改变IP地址,但每转发一次会将TTL减1,并重新计算IP首部检验和。 14. B UDP提供无连接服务(说法I正确),并在发送/接收时通过端口号实现复用与分用功能(说法II正确)。虽然UDP首部包含检验和字段用于差错检测,但其仅能发现传输错误并丢弃出错报文,不具备重传、确认等机制,无法保障可靠数据传输,可靠性需由应用层实现。因此,说法III错误。 15. B 传输层的分用是指接收方根据报文首部信息将数据交付给正确的应用进程。UDP使用目的端 <!-- page: 247 --> 第5章 传输层 235 口号标识目标进程,是分用的关键依据。源端口号主要用于回信,非分用所必需;长度和检验和字段不参与进程寻址。