跳转至

单元测验 2(第 3-4 章):传输层 + 网络层数据平面 —— 计算强化卷

本卷覆盖第 3 章(传输层:UDP/TCP/可靠传输/拥塞控制)与第 4 章(网络层数据平面:IP 编址/分片/CIDR/NAT/DHCP)的全部高频考点。计算题与正文例题同型但参数已更换,真题大题按统考风格改编,答案必须完整推导、可核验。

项目 内容
考试范围 第 3 章(多路复用/解复用、UDP 校验和、RDT/GBN/SR、TCP 可靠传输与流量控制、连接管理、拥塞控制)+ 第 4 章(路由器内部、IPv4 分片、子网划分、CIDR 聚合、NAT、DHCP、IPv6)
考试时长 100 分钟
总分 75 分
题量 单选 15 题 × 2 分 + 计算 3 题 × 10 分 + 真题大题 1 道 × 15 分
及格线 45 分(60%)
对应章节 03-transport-layer.md、04-network-layer-data-plane.md

📖 第一部分:单项选择题(15 题 × 2 分 = 30 分)

1.(单选)TCP 通过( )实现接收进程的解复用。

  • A. 源 IP 地址 + 目的 IP 地址
  • B. 源 IP + 源端口 + 目的 IP + 目的端口(四元组)
  • C. 目的端口号
  • D. 协议号
查看答案

答案:B

TCP 是面向连接的,其报文段经四元组(源 IP、源端口、目的 IP、目的端口)唯一标识一条连接,接收端按四元组把段交给对应套接字。UDP 只用二元组(目的 IP、目的端口)。

2.(单选)UDP 首部的长度为( )。

  • A. 8 字节
  • B. 20 字节
  • C. 16 字节
  • D. 4 字节
查看答案

答案:A

UDP 首部只有 4 个字段(源端口、目的端口、长度、校验和),每字段 2 字节,共 8 字节;TCP 首部最小 20 字节。首部开销小是 UDP 的优点之一。

3.(单选)关于 UDP 校验和,下列说法正确的是( )。

  • A. 只校验 UDP 首部
  • B. 能检测并纠正传输差错
  • C. 接收方把包括校验和在内的所有 16 位字相加,无差错时结果为全 1
  • D. 传输层无需校验和,因为链路层已做差错检测
查看答案

答案:C

接收方把所有 16 位字(含校验和)相加,无差错时得 全 1。校验和只能 检测 不能 纠正 差错;UDP 校验和覆盖首部 + 数据;链路层检错不能替代端到端检错(端到端原则)。

4.(单选)GBN(回退 N 步)协议中,接收方收到失序分组时( )。

  • A. 缓存失序分组并单独确认
  • B. 丢弃失序分组,并重发对最近按序接收分组的确认
  • C. 缓存失序分组并发送重复确认
  • D. 立即通知发送方重传全部窗口
查看答案

答案:B

GBN 接收方对失序分组 一律丢弃,并重发对最近按序接收分组的 ACK(累积确认)。因为发送方超时后会重传从 base 起的所有分组,缓存失序分组没有意义。缓存失序分组并单独确认是 SR 的做法。

5.(单选)序号用 4 bit(0~15),GBN 协议允许的最大发送窗口为( )。

  • A. 16
  • B. 15
  • C. 8
  • D. 7
查看答案

答案:B

GBN 窗口须满足 W ≤ 2ⁿ - 1 = 16 - 1 = 15。若 W = 2ⁿ,当 ACK 全部丢失、发送方重传整窗分组时,接收方无法区分新分组与重传的旧分组。SR 收发窗口相等时最大为 2ⁿ⁻¹ = 8。

6.(单选)TCP 报文段的序号字段表示( )。

  • A. 报文段本身的编号
  • B. 数据字段首字节的字节流编号
  • C. 期望收到的下一个字节编号
  • D. 报文段长度
查看答案

答案:B

TCP 把数据视为字节流,序号 = 数据字段首字节的字节流编号(MSS = 1000 时各段序号为 0、1000、2000…)。确认号才是「期望收到的下一个字节编号」。

7.(单选)TCP 三次握手中,第二次握手报文段的标志位为( )。

  • A. SYN = 1,ACK = 0
  • B. SYN = 1,ACK = 1
  • C. SYN = 0,ACK = 1
  • D. FIN = 1,ACK = 1
查看答案

答案:B

第一次握手:SYN = 1、ACK = 0(客户端发 SYN 段,选初始序号);第二次:SYN = 1、ACK = 1(服务器回 SYNACK,确认号 = 客户端 ISN + 1);第三次:ACK = 1(可携带数据)。注意 SYN 段与 FIN 段即使不携带数据也要消耗一个序号。

8.(单选)TCP 流量控制(rwnd)与拥塞控制(cwnd)的关系是( )。

  • A. 二者互不影响,发送窗口只由 rwnd 决定
  • B. 实际发送窗口 = min{rwnd, cwnd}
  • C. 实际发送窗口 = rwnd + cwnd
  • D. cwnd 只影响接收方
查看答案

答案:B

实际允许的未确认数据量 ≤ min{rwnd, cwnd}:rwnd 是接收方通告的缓冲区空闲空间(端到端流量控制),cwnd 是发送方维护的拥塞窗口(全局拥塞控制),两者共同限制发送速率。

9.(单选)TCP 发送方收到 3 个重复 ACK 时,将执行( )。

  • A. 置 cwnd = 1,重新慢开始
  • B. 快重传 + 快恢复:ssthresh = cwnd/2,cwnd = ssthresh
  • C. 立即关闭连接
  • D. 加倍超时时间后重传
查看答案

答案:B

3 个冗余 ACK 说明网络仍在交付(后续段陆续到达),拥塞程度较轻,执行 快重传(不等超时立即重传丢失段)+ 快恢复(ssthresh = cwnd/2,cwnd = ssthresh,直接进入拥塞避免)。口诀:超时 = 狠惩罚(cwnd = 1 慢开始);3 冗余 ACK = 轻惩罚(减半快恢复)。

10.(单选)慢开始算法中,每经过一个 RTT,拥塞窗口 cwnd( )。

  • A. 增加 1 个 MSS
  • B. 翻倍
  • C. 保持不变
  • D. 减半
查看答案

答案:B

慢开始每收到一个对新报文段的确认,cwnd 增加 1 MSS,故每 RTT 内所有段的 ACK 使窗口 翻倍(指数增长)。拥塞避免阶段才改为每 RTT 增加 1 MSS(线性增长)。

11.(单选)IPv4 数据报首部中,协议字段值为 6 表示上层协议为( )。

  • A. UDP
  • B. TCP
  • C. ICMP
  • D. IP
查看答案

答案:B

协议字段值为 6 = TCP、17 = UDP。协议号在网络层的作用类似端口号在传输层的作用——把网络层与传输层粘合的胶水。

12.(单选)IP 分片中,片偏移字段以( )为单位,除最后一个分片外每个分片的数据长度必须是( )的整数倍。

  • A. 1 字节;4 字节
  • B. 4 字节;8 字节
  • C. 8 字节;8 字节
  • D. 8 字节;16 字节
查看答案

答案:C

IP 首部三个长度字段单位不同:首部长度字段以 4B 为单位、总长度字段以 1B 为单位、片偏移字段以 8B 为单位。除最后一个分片外,每片数据长度必须是 8B 的整数倍。

13.(单选)主机 A 与主机 B 属于同一子网(子网掩码 255.255.255.0),A 向 B 发送数据报,帧的目的 MAC 地址应为( )。

  • A. B 的 MAC 地址
  • B. 默认网关接口的 MAC 地址
  • C. 广播地址 FF-FF-FF-FF-FF-FF
  • D. A 自己的 MAC 地址
查看答案

答案:A

同子网内 A 直接用 ARP 解析 B 的 IP 对应的 MAC,帧的目的 MAC 填 B 的 MAC。只有跨网段时才把帧交给默认网关(目的 MAC = 网关接口 MAC),由路由器逐跳转发。

14.(单选)关于 DHCP,下列说法错误的是( )。

  • A. DHCP 客户发送 discover 报文时源 IP 为 0.0.0.0、目的 IP 为 255.255.255.255
  • B. DHCP 运行在 UDP 之上
  • C. 主机可从 DHCP 获得 IP 地址、子网掩码、默认网关与 DNS 服务器地址
  • D. DHCP discover 报文的目的端口是 80
查看答案

答案:D

DHCP discover 报文的 UDP 目的端口为 67(DHCP 服务器端口),不是 80。客户尚未获得 IP 地址,只能广播(源 0.0.0.0,目的 255.255.255.255),不能使用 TCP(无法先建立连接)。

15.(单选)下列关于 IPv6 的说法,错误的是( )。

  • A. IPv6 地址长度为 128 位
  • B. IPv6 不允许中间路由器分片
  • C. IPv6 首部固定 40 字节,取消了首部校验和
  • D. IPv6 允许路由器对超大数据报分片后转发
查看答案

答案:D

IPv6 不允许中间路由器分片——数据报过大时路由器直接丢弃并回送 ICMPv6「Packet Too Big」,由源端重新发送更小的数据报。分片重组只能在源与目的主机进行。


📖 第二部分:计算题(3 题 × 10 分 = 30 分)

16.(计算,10 分)UDP 报文段中按 16 位分组得到如下三个字(首部 + 数据):

10011001 01100110
01010101 10101010
11100011 00011100

(1)求发送方填入校验和字段的值(写出求和、回卷、取反码的完整过程);

(2)接收方把三个数据字连同校验和共四个字相加,得到什么结果?说明其含义;

(3)若传输过程中某个字的一位发生翻转,接收方能发现差错吗?UDP 校验和能纠正差错吗?

查看答案

(1)计算校验和。 三个字十六进制为 0x9966、0x55AA、0xE31C:

第一步,前两个字相加:0x9966 + 0x55AA = 0xEF10(无溢出)。

第二步,与第三字相加:0xEF10 + 0xE31C = 0x1D22C——超过 16 位,最高位进位 1 需要 回卷:0xD22C + 1 = 0xD22D

第三步,取反码:0xD22D 按位取反 = 0x2DD2,即二进制 00101101 11010010,这就是填入校验和字段的值。

(2)接收方验证: 0x9966 + 0x55AA + 0xE31C + 0x2DD2 = 0x1FFFF,回卷后 = 0xFFFF + 1 → 再回卷 = 0xFFFF(全 1)。全 1 表示无差错——因为校验和是和的补码,「数据和 + 校验和」必为全 1。

(3) 任意一位翻转都会使最终相加结果中出现 0,接收方 能发现差错。但 UDP 校验和 只能检测、不能纠正 差错,且存在漏检可能(如两个比特同时翻转恰好抵消,和仍为全 1)。

评分标准
  • 前两字相加正确(2 分)
  • 第三字相加并识别溢出回卷(3 分)
  • 取反码得校验和 0x2DD2(2 分)
  • 接收方四字相加得全 1 并解释(2 分)
  • (3)能检错、不能纠错(1 分)

17.(计算,10 分)一条点对点链路的传输速率为 10 Mbps,帧长为 1000 B(8000 bit),链路两端主机之间的往返时延 RTT = 40 ms,忽略 ACK 传输时间、处理时延与传播时延以外的时延。

(1)采用停等协议时,信道利用率约为多少?

(2)改用 GBN 协议、发送窗口 N = 16,信道利用率是多少?有效数据率约为多少?

(3)要使信道利用率达到 100%,GBN 的发送窗口至少应为多少?此时序号至少需要几位?若改用 SR 协议(收发窗口相等),序号又至少需要几位?

查看答案

(1)停等协议。 传输一个帧的时间:

\[ T_{trans} = \frac{L}{R} = \frac{8000}{10 \times 10^6} = 0.8 \text{ ms} \]

停等利用率:

\[ U = \frac{T_{trans}}{T_{trans} + RTT} = \frac{0.8}{0.8 + 40} = \frac{0.8}{40.8} \approx 0.0196 \approx 1.96\% \]

(2)GBN(N = 16):

\[ U = \frac{N \cdot T_{trans}}{T_{trans} + RTT} = \frac{16 \times 0.8}{40.8} = \frac{12.8}{40.8} \approx 0.314 = 31.4\% \]

有效数据率 = U × R = 0.314 × 10 Mbps ≈ 3.14 Mbps

(3)利用率 100% 要求 N·T_trans ≥ T_trans + RTT,即:

\[ N \ge \frac{T_{trans} + RTT}{T_{trans}} = \frac{40.8}{0.8} = 51 \]

GBN 序号位数 n 须满足 2ⁿ - 1 ≥ 51:2⁵ - 1 = 31 < 51,2⁶ - 1 = 63 ≥ 51,故 n = 6 位。SR 收发窗口相等时 W ≤ 2ⁿ⁻¹,需要 2ⁿ⁻¹ ≥ 51:2⁶ = 64 ≥ 51,故 n = 7 位

评分标准
  • T_trans = 0.8 ms 与停等利用率公式(3 分)
  • GBN 利用率 31.4% 与有效数据率 3.14 Mbps(3 分)
  • 100% 利用率所需窗口 N = 51(2 分)
  • GBN 需 6 位、SR 需 7 位序号(2 分)

18.(计算,10 分)一个总长度为 3200 B 的 IPv4 数据报(首部 20 B,数据部分 3180 B)到达一台路由器,需要转发到一条 MTU = 1000 B 的链路上。假定原始数据报的标识号为 888。

(1)应分为几个片?各片的数据字段长度与总长度分别为多少?

(2)各片的 MF 标志位与片偏移字段值分别为多少?

(3)分片在何处重组?为什么不能在中间路由器重组?目的主机依据哪些字段完成重组?

查看答案

(1)分片数与片长。 每片最大数据长度 = MTU - 首部 = 1000 - 20 = 980 B;980 不是 8 的倍数,向下取整为 976 B(976 ÷ 8 = 122)。分片数 = ⌈3180 / 976⌉ = ⌈3.26⌉ = 4 片

数据长度 总长度(数据 + 20B 首部)
片 1 976 B 996 B
片 2 976 B 996 B
片 3 976 B 996 B
片 4 3180 − 3×976 = 252 B 272 B

(2)标志与片偏移。 DF = 0(允许分片)。MF:前 3 片为 1,最后一片为 0。片偏移 = 该片数据首字节在原数据中的相对位置 ÷ 8:

  • 片 1:0 ÷ 8 = 0
  • 片 2:976 ÷ 8 = 122
  • 片 3:1952 ÷ 8 = 244
  • 片 4:2928 ÷ 8 = 366

(3) 分片 在目的主机重组——各片可能经不同路径到达,中间路由器无法保证收集到全部片。目的主机依据 标识(identifier) 判断片属于同一原始数据报、MF 判断是否还有后续片、片偏移 确定片在原数据报中的位置,三者共同完成重组。

评分标准
  • 每片最大数据 976 B(向下取 8 的倍数)(2 分)
  • 分片数 4 与各片数据/总长度正确(3 分)
  • MF 与片偏移 0/122/244/366 正确(3 分)
  • 目的主机重组、依据标识/MF/片偏移(2 分)

📖 第三部分:真题大题(1 题 × 15 分 = 15 分)

19.(综合计算,15 分,真题 2023#47 改编)主机甲通过一条 TCP 连接向主机乙发送一个 18000 B 的文件。MSS = 1000 B,文件被划分为 18 个报文段(段 1 ~ 段 18,段 k 的首字节序号为 (k−1)×1000 + 1)。三次握手恰好花费 1 个 RTT(握手报文段不携带数据)。连接建立后 cwnd 初始为 1 个 MSS,ssthresh 初始为 3 个 MSS,甲按慢开始/拥塞避免算法发送。假设每个 RTT 内甲发送的报文段数等于当前 cwnd 值,所有 ACK 在一个 RTT 内返回。

(1)填表:写出连接建立后前 5 个 RTT 内各 RTT 的 cwnd 值、所处阶段(慢开始/拥塞避免)、发送的段号与已发送段总数。

(2)第 5 个 RTT 传输的报文段中,段 11(首字节序号 10001)在传输中丢失。乙先后收到段 12、13、14、15 时,分别返回什么 ACK(写出确认号)?甲连续收到 4 个相同确认号的 ACK 后,会执行什么操作?写出新的 ssthresh 与 cwnd 值。

(3)快恢复后甲继续按拥塞避免发送剩余报文段(段 16、17、18),且无新的拥塞事件。求从开始建立连接起,到甲收到确认最后一个报文段的 ACK,共需多少个 RTT?若 RTT = 100 ms,求文件传输的平均发送速率(bps,含建连时间)。

查看答案

(1)前 5 个 RTT 的窗口演变。 慢开始每 RTT 翻倍;当 2×cwnd > ssthresh 时下一轮 cwnd 取 ssthresh;cwnd 达到 ssthresh 后转拥塞避免(每 RTT +1)。

RTT cwnd(MSS) 阶段 发送段号 已发送总数
1 1 慢开始 1 1
2 2 慢开始 2、3 3
3 3(2×2=4 > ssthresh=3,封顶) 慢开始 4、5、6 6
4 4 拥塞避免 7、8、9、10 10
5 5 拥塞避免 11、12、13、14、15 15

(2)重复 ACK 与快重传快恢复。 乙已正确收到段 1~10(字节 1~10000),段 11 丢失使字节 10001 缺失。段 12、13、14、15 到达时均属失序到达,乙对每个失序段都回送确认号 10001 的 ACK(累积确认到字节 10000,期望下一个字节 10001)。甲连续收到 4 个确认号均为 10001 的 ACK(1 个 ACK + 3 个重复 ACK),判定段 11 丢失,执行 快重传(立即重传段 11,不等定时器超时)+ 快恢复

\[ ssthresh = \left\lfloor \frac{cwnd}{2} \right\rfloor = \left\lfloor \frac{5}{2} \right\rfloor = 2 \text{ MSS}, \quad cwnd = ssthresh = 2 \text{ MSS} \]

(3)总 RTT 数与平均速率。 快恢复后 cwnd = 2、ssthresh = 2,进入拥塞避免(每 RTT +1):

  • 第 6 个 RTT:cwnd = 2,发送段 16、17;段 11 的重传确认(ACK 15001)与段 16、17 的确认(ACK 17001)在此期间返回;cwnd 增至 3;
  • 第 7 个 RTT:cwnd = 3,发送段 18;乙返回 ACK 18001(全部 18 段确认),甲在第 7 个 RTT 末收到。

数据传输共 7 个 RTT,加上建连 1 个 RTT,共 8 个 RTT

平均发送速率:

\[ \text{速率} = \frac{18000 \times 8}{8 \times 100 \times 10^{-3}} = \frac{144000}{0.8} = 180000 \text{ bps} = 180 \text{ kbps} \]
评分标准
  • (1)表格 cwnd 与阶段正确(每行 1 分,共 5 分;注意第 3 行封顶取 3、第 4-5 行 +1)
  • (2)4 个 ACK 确认号均为 10001 及原因(3 分)
  • (2)快重传 + 快恢复、ssthresh = 2、cwnd = 2(3 分)
  • (3)总 RTT = 8(1 + 7)(2 分)
  • (3)平均速率 = 180000 bps(2 分)

本题改编自 2023 统考真题 47 题(TCP 拥塞控制 + 文件传输时间:连续收到 4 个相同确认序号触发快重传快恢复、阈值 = 窗口/2、建连 1RTT + 传输若干 RTT 及平均速率计算)。


✅ 卷后自查清单

检查项 说明
UDP 校验和 16 位字求和 → 溢出回卷 → 取反码;接收方四字相加得全 1 表示无错
窗口与序号 GBN:W ≤ 2ⁿ−1;SR(收发窗口相等):W ≤ 2ⁿ⁻¹
TCP 序号/确认号 序号 = 数据首字节编号;确认号 = 期望的下一个字节(累积确认)
拥塞控制 慢开始翻倍 → 撞阈值转拥塞避免 +1 → 超时 cwnd=1 / 3 冗余 ACK 减半快恢复
分片三字段 标识(同一数据报)、MF(是否还有后续片)、片偏移(单位 8B)
单位陷阱 首部长度 4B / 总长度 1B / 片偏移 8B
NAT 关键 路由器改写 IP 地址与传输层端口号,靠 WAN 端口区分内网连接

🚪 下一站预告

传输层与 IP 编址过关后,下一份测验进入 网络层控制平面与链路层——Dijkstra/DV 路由算法、OSPF/RIP/BGP、CRC 检错、CSMA/CD 最短帧长与交换机转发,路由与链路层的大题将在这里登场。👉 进入单元测验 3(第 5-6 章)→