Skip to content

2022年 408 计算机网络 第 38 题

计算机网络2022年选择题2分

题目

假设主机甲和主机乙已建立一个 TCP 连接,最大段长 MSS = 1 KB,甲一直有数据向乙发送,当甲的拥塞窗口为 16 KB 时,计时器发生了超时,则甲的拥塞窗口再次增长到 16 KB 所需要的时间至少是( )。

错因

A

只算了慢启动指数翻倍的 RTT 数:cwnd 1→2→4→8→16,4 RTT。错的根源:忽略了超时后 ssthresh 被设为 cwnd/2 = 8——cwnd 增长到 8 时切到拥塞避免阶段,不再翻倍。慢启动只走到 8(3 RTT),后面 8→16 必须走线性增长。

B

可能算成了 4 RTT 慢启动 + 1 RTT 拥塞避免 = 5 RTT。错的根源:算法切换点错了——本题 ssthresh = 8,慢启动只能走到 8(3 RTT),不是走到 16(4 RTT)。

D

按"全程线性增长"算:cwnd 1→2→...→16,16 个值需 15 RTT,凑成 16 RTT。错的根源:完全没用慢启动(指数加速)的部分,把整个恢复期都当成线性增长。实际起步阶段(cwnd < ssthresh)是慢启动阶段,比线性快得多。

总解析

第一步:超时事件后的状态变化

TCP 超时(重传计时器溢出)触发"严重拥塞推断":

变量超时前超时后
cwnd16 KB(=16 MSS)重置为 1 MSS
ssthresh(不知道)= cwnd / 2 = 8 KB(即 8 MSS)
算法阶段拥塞避免重新进入慢启动

第二步:慢启动阶段(cwnd < ssthresh = 8)

cwnd 每 RTT 翻倍:

时刻(RTT 数)cwnd(MSS)
01
12
24
38(达到 ssthresh,切换到拥塞避免)

慢启动用 3 RTT 把 cwnd 从 1 增到 8。

第三步:拥塞避免阶段(cwnd ≥ ssthresh = 8)

cwnd 每 RTT + 1 MSS:

时刻(RTT 数)cwnd(MSS)
38
49
510
611
712
813
914
1015
1116

拥塞避免用 8 RTT 把 cwnd 从 8 增到 16。

第四步:合计

最终答案是 C(11 RTT)

编者注(生僻术语):TCP 拥塞控制的两类失败信号触发不同的恢复路径——

  • 超时(本题)→ 严重拥塞 → cwnd = 1 MSS、ssthresh = cwnd/2,重新慢启动
  • 3 个重复 ACK(快速重传)→ 较轻拥塞 → ssthresh = cwnd/2、cwnd = ssthresh,进入快速恢复(拥塞避免阶段直接接续,不重启)

本题用的是超时路径,所以从 cwnd=1 起步。如果换成快速重传,cwnd 直接从 8 起步走线性,恢复仅需 8 RTT,不需要慢启动那 3 RTT。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数