传输层 章节测

  • 适用章节:传输层
  • 题型结构:单项选择 22 题 + 综合计算 6 题,共 28 题
  • 用法:限时 75 分钟完成;对答案后按错题考点回读讲解对应小节,并登记进错题本
  • 题目来源:除标注"2009 年真题"外均为模拟题(自编,风格对齐统考)

一、单项选择题(每题 2 分)

1. 传输层与网络层功能边界的最准确表述是( )

A. 网络层实现主机到主机通信,传输层实现进程到进程通信 B. 网络层实现进程到进程通信,传输层实现主机到主机通信 C. 两者都实现进程到进程通信,但传输层更可靠 D. 网络层提供可靠交付,传输层提供尽最大努力交付

2. 下列端口号中,全部属于熟知端口(well-known ports)范围的一组是( )

A. 21、25、53、80 B. 80、110、1433、3306 C. 25、53、3306、49152 D. 80、443、5000、6000

3. 一台服务器上同时运行 HTTP 服务(80)与 SSH 服务(22),收到一个目的端口为 80 的 UDP 报文,传输层分用时依据的字段/组合是( )

A. 仅目的端口号 80 B. 目的 IP + 目的端口 + 协议号(UDP/TCP) C. 源 IP + 源端口 D. 目的 MAC 地址 + 目的端口号

4. 关于 UDP,下列说法错误的是( )

A. UDP 首部共 8 B,长度字段的最小取值为 8 B. UDP 校验和字段为全 0 表示不使用校验和(IPv4 中允许) C. UDP 面向字节流,不保留报文边界 D. UDP 支持一对一、一对多、多对一与多对多通信

5. UDP 计算校验和时使用的伪首部,其中"协议"字段的取值与伪首部的总长度分别是( )

A. 17、12 B B. 6、12 B C. 17、8 B D. 6、20 B

6. 主机甲向主机乙发送一个 UDP 用户数据报,数据部分 99 B。若将整个报文按 16 位字做反码求和(含伪首部)计算校验和,参与求和的 16 位字共有( )

A. 59 个 B. 60 个 C. 61 个 D. 99 个

7. TCP 报文段首部中"数据偏移"字段的值为 8,该报文段首部长度为( )

A. 8 B B. 16 B C. 32 B D. 60 B

8. TCP 报文段的确认号有效的条件、及其含义分别是( )

A. SYN=1;本段数据最后一个字节的序号 B. ACK=1;期望收到对方下一个字节的序号 C. PSH=1;本段数据第一个字节的序号 D. ACK=1;已收到的对方数据最后一个字节的序号

9. 下列 TCP 控制位中,"接收方收到此类报文段后应尽快向上交付给应用进程而不必等缓存填满"描述的是( )

A. URG B. ACK C. PSH D. RST

10. 关于 URG 与紧急指针,正确的是( )

A. 紧急指针在 URG=0 时也有效 B. 紧急数据必须放在报文段数据部分的开头 C. 即使窗口为 0,也可以发送紧急数据 D. 紧急指针给出紧急数据在字节流中的绝对序号

11. TCP 面向字节流,"不保留报文边界"的含义是( )

A. 发送方一次 write 100 B,接收方应用必然一次 read 得到 100 B B. 发送方两次 write(30 B、70 B)可能被合并成一个报文段发送 C. TCP 报文段的数据长度必须固定 D. 接收方无法判断数据的起止,应用层协议无法解析

12. 三次握手中,第二个报文段(S→C)的正确描述是( )

A. SYN=1, ACK=0, seq=y B. SYN=1, ACK=1, seq=y, ack=x+1 C. SYN=0, ACK=1, seq=y, ack=x+1 D. SYN=1, ACK=1, seq=x+1, ack=y+1

13. TCP 连接建立采用三次握手而非两次的根本原因是( )

A. 两次握手无法交换初始序号 B. 防止已失效的连接请求报文段突然又传送到服务器,造成服务器资源浪费 C. 三次握手可以携带数据,两次不能 D. 两次握手无法让服务器进入 LISTEN 状态

14. 三次握手过程中,客户端从 SYN_SENT 进入 ESTABLISHED 的触发条件是( )

A. 发出第一个 SYN 报文段 B. 收到服务器发来的 SYN+ACK 报文段 C. 发出第三个 ACK 报文段 D. 收到服务器对第三个 ACK 的确认

15. 关于 TCP 连接释放过程中的 TIME_WAIT 状态,等待 2MSL 的原因不包括( )

A. 保证最后一个 ACK 若丢失可响应服务器重传的 FIN 并重发 ACK B. 让本连接产生的所有报文段在网络中消逝,防止窜入新连接 C. 让本方应用进程有时间处理接收缓存中的剩余数据 D. 为重发最后的 ACK 保留可能

16. 服务器上观察到某连接长时间停留在 CLOSE_WAIT 状态,最可能的原因是( )

A. 服务器网络中断 B. 服务器应用未调用 close 关闭连接 C. 客户端未发送 FIN D. 最后一个 ACK 丢失

17. TCP 半关闭状态是指( )

A. 连接只建立了一半,尚不能传输数据 B. 一方发送 FIN 并获确认后,其发送通道关闭但接收通道仍可用 C. 窗口大小减半 D. 拥塞窗口减半的状态

18. TCP 超时重传的 RTO 若设置得远小于实际 RTT,最主要的后果是( )

A. 大量不必要的重传,浪费带宽并可能加剧拥塞 B. 报文段丢失后长时间得不到重传 C. 接收窗口自动清零 D. 连接被 RST 复位

19. 收到 3 个冗余 ACK 触发快重传时,重传的对象是( )

A. 接收方通告窗口内的全部报文段 B. 从缺失段开始的所有已发送报文段(GBN 式) C. 被重复确认指向的那一个缺失报文段 D. 随机选择一个未确认报文段

20. 下列关于 TCP 流量控制的说法,错误的是( )

A. 接收方通过 ACK 报文段的窗口字段通告 rwnd B. 发送窗口取 rwnd 与 cwnd 中的较小值 C. 收到零窗口通告后,发送方立即放弃该连接 D. 坚持计时器用于对抗零窗口死锁

21. 关于 Nagle 算法与糊涂窗口综合征,正确的是( )

A. Nagle 算法是接收方策略,用于尽快通告窗口 B. Nagle 算法在攒满一个 MSS 或收到前一段确认后才发送,可减少小报文段 C. 糊涂窗口综合征只可能由接收方引起 D. Nagle 算法能降低传输时延,因此所有应用都应启用

22. 慢开始阶段,cwnd 从 1 MSS 开始,每经过 1 个 RTT 的变化规律是( )

A. 加 1 MSS B. 翻倍 C. 减半 D. 保持不变

二、综合应用题(共 6 题)

23.(三次握手序号推演,模拟题) 主机甲(客户端)与主机乙(服务器)建立 TCP 连接,甲的初始序号 ISN₁ = 2000,乙的初始序号 ISN₂ = 5000。第三次握手捎带 100 B 数据,随后甲又发送一个 200 B 的数据段。要求:

  1. 用"方向 / 序号·确认号 / 标志位 / 双方状态"四列表格写出三次握手全过程
  2. 写出第三次握手后那个 200 B 数据段的 seq 与乙对其的确认号
  3. 从连接建立到此时,甲总共消耗了多少个序号?

24.(四次挥手推演,模拟题) 承接上题连接,甲数据发送完毕后主动关闭连接。设甲发出 FIN 时其数据流序号已推进到 7300(FIN 的 seq = u = 7300),乙响应时 seq = v = 9000,乙数据随后也发完,其 FIN 的 seq = w = 9500。要求:

  1. 用四列表格写出四次挥手全过程(含每步状态变迁)
  2. 说明为什么步骤 2 的 ACK 与步骤 3 的 FIN 通常分开发送
  3. 简述甲在 TIME_WAIT 状态等待 2MSL 的两个原因

25.(拥塞控制完整推演:超时分支,模拟题) TCP 连接建立时 cwnd = 1 MSS,ssthresh = 8 MSS。事件序列:cwnd 增长到 12 MSS 时发生超时;此后重新增长,再次达到 12 MSS 时收到 3 个冗余 ACK;再继续线性增长 3 个 RTT。要求以 RTT 为单位列出从建立到冗余 ACK 后第 3 个 RTT 的完整 cwnd/ssthresh 数值表(标注每轮所处算法与事件),并回答:冗余 ACK 事件后新 ssthresh 是多少?

26.(拥塞控制完整推演:三重 ACK 先行,模拟题) cwnd = 1 MSS,ssthresh = 16 MSS。事件序列:cwnd 增长到 18 MSS 时收到 3 个冗余 ACK;此后增长到 10 MSS 时发生超时;之后推演至重新进入拥塞避免后的第 2 个 RTT。要求给出完整数值表,并说明两个事件各自触发的算法组合差异(超时 vs 冗余 ACK)。

27.(窗口与信道利用率,模拟题) 主机甲通过 TCP 向主机乙发送大文件,RTT = 80 ms,发送速率恒为 1 Mbit/s,忽略段长限制与协议开销。要求:

  1. 若要使信道利用率达到 100%,发送窗口至少为多少字节?
  2. 若发送窗口为 6000 B,信道利用率为多少(保留两位有效数字)?
  3. 若发送窗口为 6000 B 且同时收到接收方 rwnd = 4000 B 通告,实际利用率又为多少?

28.(TCP 报文字段分析,2009 年真题改编为计算拓展,标注模拟题) 主机甲与主机乙之间已建立一个 TCP 连接。甲向乙连续发送两个 TCP 段,载荷分别为 300 B 与 500 B,第一个段的 seq = 200,首部数据偏移字段值为 5,首部含 8 B 选项。要求:

  1. 两个报文段的载荷序号范围各是多少?
  2. 乙正确收到两段后,回给甲的确认号是多少?
  3. 若第一段丢失、第二段到达,乙应答的确认号是多少?该确认号重复出现几次会触发甲的快重传?
  4. 数据偏移字段值为 5 说明首部长度是多少?与"含 8 B 选项"是否矛盾?

三、答案与解析

选择题答案速查

题号1234567891011
答案AABCABCBCCB
题号1213141516171819202122
答案BBBCBBACCBB

选择题解析

1. A。考点:传输层功能定位(易)。网络层主机到主机,传输层进程到进程(靠端口分用)。错因提醒:B 是最常见反向陷阱;D 把两层可靠性说反了,网络层(IP)尽力而为。

2. A。考点:端口号分类(易)。熟知端口 01023:A 组 21(FTP 控制)、25(SMTP)、53(DNS)、80(HTTP)全部合规。错因提醒:B 的 1433/3306 是登记端口(102449151);C 的 3306 登记、49152 临时;D 的 5000/6000 不在熟知范围。

3. B。考点:复用与分用(中)。同一端口号 80 上 HTTP(TCP)与某 UDP 服务可以并存,分用必须区分协议:五元组(源 IP、源端口、目的 IP、目的端口、协议)。错因提醒:选 A 忽略了 TCP/UDP 端口空间彼此独立。

4. C。考点:UDP 特点(易)。UDP 面向报文、保留边界;面向字节流的是 TCP。错因提醒:A、B 都是正确的细节(长度字段含首部故最小 8;IPv4 中校验和可置全 0),C 才是错误项。

5. A。考点:UDP 伪首部(易)。UDP 协议号 17,伪首部 12 B(4+4+1+1+2)。错因提醒:6 与 12 B 是 TCP 的组合(TCP 协议号 6,伪首部同为 12 B)——先辨协议再答字段值。

6. B。考点:UDP 校验和计算(中)。参与求和 = 伪首部 12 B + UDP 首部 8 B + 数据 99 B = 119 B;总长为奇数须补一个全 0 字节到 120 B,120 / 2 = 60 个 16 位字。错因提醒:直接 119/2 四舍五入会误选 A 或 C——先补零再除以 2;另外最易漏算的是伪首部 12 B。

7. C。考点:数据偏移字段(易)。单位 4 B:8 × 4 = 32 B。错因提醒:最大值 15 对应 60 B;勿按 1 B 或 8 bit 换算。

8. B。考点:确认号语义(易)。ACK=1 时确认号有效,含义是"期望收到对方下一个字节的序号",隐含确认此前全部字节。错因提醒:D 是"最后一个已收字节的序号",差 1,是最高频的错选。

9. C。考点:控制位 PSH(易)。PSH 提示接收方尽快向上交付。错因提醒:A 的 URG 是"发送方优先发送"的标记,作用对象在发送路径,不在接收交付。

10. C。考点:URG 与紧急指针(中)。窗口为 0 时仍可发紧急数据是常被忽略的规定。错因提醒:紧急指针是相对 seq 的偏移(D 错),且仅在 URG=1 时有效(A 错);紧急数据不强制位于数据开头(B 错)。

11. B。考点:面向字节流(中)。两次小 write 可被 TCP 合并成一个报文段,也可被拆分——边界消失。错因提醒:D 夸大其词,边界由应用层协议(如长度字段、分隔符)自行恢复,这正是 HTTP 用 Content-Length 的原因之一。

12. B。考点:三次握手第二步(易)。S→C:SYN=1, ACK=1, seq=y, ack=x+1。错因提醒:D 的 seq/ack 写反了方向。

13. B。考点:三次握手原因(高频易)。标准答案口径:防止失效的连接请求突然到达造成服务器资源浪费。错因提醒:A 不成立——两次也能交换序号;C 是三次握手的附带特性而非根本原因。

14. B。考点:握手状态变迁(中)。客户端收到 SYN+ACK 即进入 ESTABLISHED(随后发出第三次 ACK);服务器要收到第三次 ACK 才 ESTABLISHED。错因提醒:C 混淆"发 ACK"与"收确认",发出 ACK 前状态已切换。

15. C。考点:TIME_WAIT 2MSL 原因(高频中)。A、B 是教材标准两条(B 包含 D 的表述)。错因提醒:C 是编造项——数据处理与 TIME_WAIT 无关;此考点历年选择题反复出现,务必背熟"可靠送达最后 ACK + 旧报文消逝"两条。

16. B。考点:四次挥手状态诊断(中)。CLOSE_WAIT 是被动关闭方收到 FIN 并回 ACK 后的状态;长期停留说明本端应用迟迟不调用 close 发出自己的 FIN。错因提醒:C 反了——对方已发 FIN 才会进 CLOSE_WAIT;D 的 ACK 丢失对应 LAST_ACK 而非 CLOSE_WAIT。

17. B。考点:半关闭(易)。一方发 FIN 获确认后,其发送方向关闭、接收方向仍开放,可继续收对方数据。错因提醒:A 描述的是握手中间态,不是"半关闭"术语的含义。

18. A。考点:RTO 设置(中)。RTO 过小会把正常在途报文误判为丢失,大量无谓重传挤占带宽、可能把网络推向拥塞。错因提醒:B 是 RTO 过大的后果,方向别记反。

19. C。考点:快重传对象(易)。只重传被重复确认指向的那一个缺失段(配合 SACK 思想);GBN 式全部重传(B)正是 TCP 不采用的做法。错因提醒:3 个冗余 ACK 表明缺失点之后的数据大都已到达,只需补一段。

20. C。考点:零窗口处理(易)。零窗口只导致暂停发送,配合坚持计时器周期探测,绝不放弃连接。错因提醒:C 的"放弃连接"与 RST 场景混淆。

21. B。考点:Nagle 算法(中)。Nagle 是发送方策略:攒满 MSS 或收到前一段确认才发送,减少小段;代价是增加时延,时延敏感应用可用 TCP_NODELAY 关闭。错因提醒:A 角色说反;糊涂窗口综合征可由收发双方任一方引起(C 错),接收方对策是 Clark 算法。

22. B。考点:慢开始增长规律(易)。慢开始阶段每 RTT cwnd 翻倍(1→2→4→8…指数);+1 MSS/RTT 是拥塞避免的规律。错因提醒:"慢开始增长慢"是字面直觉陷阱。

综合题解析

23. 解析(考点:三次握手序号推演;难度:中):

  1. 四列表格(甲 = 客户端 C,乙 = 服务器 S):
步骤方向序号 / 确认号标志位双方状态
1C→Sseq = 2000SYN = 1甲:CLOSED→SYN_SENT;乙:LISTEN→(收到后)SYN_RCVD
2S→Cseq = 5000, ack = 2001SYN = 1, ACK = 1乙发 SYN+ACK 处于 SYN_RCVD;甲收到后 SYN_SENT→ESTABLISHED
3C→Sseq = 2001, ack = 5001(捎带 100 B 数据,占用序号 2001~2100)ACK = 1乙收到后 SYN_RCVD→ESTABLISHED
  1. 随后的 200 B 数据段:seq = 2101(接续第三次握手捎带数据的下一字节),覆盖 2101~2300;乙对其的确认号 = 2301
  2. 甲消耗的序号:SYN 一个(2000)+ 捎带数据 100 个(20012100)+ 后续数据 200 个(21012300)= 301 个(FIN 未发生,不计入)

错因提醒:最容易漏掉 SYN 占用的 1 个序号,以及漏算第三次握手捎带的 100 B;纯 ACK 不占序号。

24. 解析(考点:四次挥手推演;难度:中):

  1. 四列表格:
步骤方向序号 / 确认号标志位双方状态
1C→Sseq = u = 7300FIN = 1, ACK = 1甲:ESTABLISHED→FIN_WAIT_1
2S→Cseq = v = 9000, ack = u+1 = 7301ACK = 1乙:ESTABLISHED→CLOSE_WAIT;甲收到后 FIN_WAIT_1→FIN_WAIT_2
3S→Cseq = w = 9500, ack = 7301FIN = 1, ACK = 1乙:CLOSE_WAIT→LAST_ACK
4C→Sseq = u+1 = 7301, ack = w+1 = 9501ACK = 1甲:FIN_WAIT_2→TIME_WAIT(等 2MSL 后 CLOSED);乙:LAST_ACK→CLOSED
  1. TCP 全双工,两个方向独立关闭:乙收到甲的 FIN 时可能还有未发完的数据,须先回 ACK 确认对方的关闭请求,待自己数据发完再发 FIN——ACK 与 FIN 分属两条独立通告,故通常分两步发送;若乙恰好无数据,可合并为 FIN+ACK 一步("三次挥手")
  2. 2MSL 两原因:① 保证最后的 ACK 可靠送达——若 ACK 丢失,乙会重传 FIN,甲留在 TIME_WAIT 才能再次响应并重发 ACK;② 让本连接的全部报文段在网络中消逝,防止窜入随后复用相同四元组的新连接

错因提醒:第 4 步甲的 seq = u+1(自己的 FIN 占了一个序号),ack = w+1(确认乙的 FIN);把 u/w 用混是大题高频失分点。

25. 解析(考点:拥塞控制超时分支完整推演;难度:难):

RTTcwndssthresh阶段/事件
118慢开始
228慢开始(翻倍)
348慢开始(翻倍)
488达门限,下轮起拥塞避免
598拥塞避免(+1)
6108拥塞避免(+1)
7118拥塞避免(+1)
8128拥塞避免,轮末超时:ssthresh = 12/2 = 6,cwnd = 1
916慢开始(重启)
1026慢开始(翻倍)
1146慢开始(翻倍,4 < 6 继续)
1266达门限,下轮起拥塞避免
1376拥塞避免(+1)
1486拥塞避免(+1)
1596拥塞避免(+1)
16106拥塞避免(+1)
17116拥塞避免(+1)
18126拥塞避免,轮末 3 个冗余 ACK:ssthresh = 12/2 = 6,cwnd = 6
1966快恢复后直接拥塞避免
2076拥塞避免(+1)
2186拥塞避免(+1)

冗余 ACK 事件后新 ssthresh = 6(恰与原值相同——按规则计算,不要凭"没变过"的直觉跳过计算)。

错因提醒:① 超时后 cwnd 回 1 而非减半;② 第二次事件是冗余 ACK 而非超时,cwnd 减半到新 ssthresh、不回 1;③ 12/2=6 恰好等于旧门限,属命题巧合陷阱。

26. 解析(考点:拥塞控制三重 ACK 分支推演;难度:难):

RTTcwndssthresh阶段/事件
1116慢开始
2216慢开始(翻倍)
3416慢开始(翻倍)
4816慢开始(翻倍)
51616达门限,下轮起拥塞避免
61716拥塞避免(+1)
71816拥塞避免,轮末 3 个冗余 ACK:ssthresh = 18/2 = 9,cwnd = 9
899快恢复后直接拥塞避免
9109拥塞避免(+1),轮末超时:ssthresh = 10/2 = 5,cwnd = 1
1015慢开始(重启)
1125慢开始(翻倍)
1245慢开始(翻倍,4 < 5 继续)
1355达门限,下轮起拥塞避免
1465拥塞避免(+1,即"重新进入拥塞避免后第 1 个 RTT")
1575拥塞避免(+1,即"第 2 个 RTT")

算法组合差异:

  • 超时(重度拥塞信号):触发"慢开始 + 拥塞避免"从头来——ssthresh 减半、cwnd 归 1,先指数再线性
  • 3 个冗余 ACK(轻度拥塞信号):触发"快重传 + 快恢复"——立即重传缺失段,ssthresh 减半、cwnd 直接设为新 ssthresh,跳过慢开始直接进入拥塞避免的线性增长

错因提醒:① 18/2 = 9、10/2 = 5,两次减半基数不同,别串用;② 冗余 ACK 后绝不能把 cwnd 置 1;③ 10 超时发生在 cwnd=10 的轮末,本轮仍以 10 发送。

27. 解析(考点:窗口与信道利用率;难度:中):

  1. 100% 利用率要求窗口 ≥ 带宽时延积:W≥R×RTT=106 bit/s×80×10−3 s=8×104W \ge R \times RTT = 10^6 \text{ bit/s} \times 80 \times 10^{-3} \text{ s} = 8 \times 10^4 bit = 10000 B
  2. 窗口 6000 B < 10000 B,利用率先求发送时延:6000×8/106=486000 \times 8 / 10^6 = 48 ms,则 U=4848+80=48128=37.5%U = \frac{48}{48 + 80} = \frac{48}{128} = 37.5\%
  3. rwnd = 4000 B 时生效窗口 = min⁡(6000,4000)=4000\min(6000, 4000) = 4000 B:发送时延 4000×8/106=324000 \times 8 / 10^6 = 32 ms, U=3232+80=32112≈28.57%≈29%U = \frac{32}{32 + 80} = \frac{32}{112} \approx 28.57\% \approx \mathbf{29\%}

错因提醒:① 通用公式 U=W/RW/R+RTTU = \dfrac{W/R}{W/R + RTT},W 取生效窗口(rwnd 与 cwnd 的较小者);② 窗口 ≥ 带宽时延积时利用率封顶 100%,此时代入公式反而会得偏小值——先比较再选公式;③ 换算别丢 bit/Byte 的因子 8。

28. 解析(考点:TCP 报文字段与序号确认;难度:中):

  1. 第一段载荷序号 200499(300 B),第二段 500999(500 B)
  2. 两段全部正确收到:确认号 = 期望的下一字节序号 = 1000
  3. 第一段丢失:第二段失序到达,累积确认只能确认连续前缀(止于 199),确认号 = 200;该确认号随后续每到达一个失序段就重复一次,共出现 4 次(1 次原始 + 3 次冗余)时甲触发快重传
  4. 数据偏移 = 5 表示首部 5×4=205 \times 4 = \mathbf{20} B;与"含 8 B 选项"矛盾——含 8 B 选项时首部应为 20+8=2820 + 8 = 28 B,数据偏移应为 7。这说明该报文段若真带 8 B 选项,数据偏移不可能为 5;做题时应以数据偏移字段为准反推首部长度(字段本身才是实际编码的真相)。本题第 1~3 问不受影响

错因提醒:① 确认号"下一个期望字节",第一问易错答 999;② "3 个冗余 ACK"指确认号重复出现 3 次(总计 4 个同号 ACK),不是 3 个报文段;③ 数据偏移单位 4 B,值 × 4 才是首部字节数。

四、错题登记

完成后把错题按下表登记进错题本:题目出处写"传输层章节测 第 N 题",错因四选一(概念不清 / 计算失误 / 审题偏差 / 技巧缺失)。重点回读:第 6、15、16 题(概念不清高发),第 23~26 题(推演规则不熟),第 27 题(公式与单位换算)。