Skip to content

2020年 408 计算机网络 第 38 题

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

题目

若主机甲与主机乙已建立一条 TCP 连接,最大段长(MSS)为 1 KB,往返时间(RTT)为 2 ms,则在不出现拥塞的前提下,拥塞窗口从 8 KB 增长到 32 KB 所需的最长时间是:

错因

A

按**慢启动(指数增长)**算:cwnd 8 → 16 → 32,2 个 RTT = 4 ms。这是慢启动阶段每 RTT 翻倍的算法。错的根源:题问"最长时间"——意味着选最慢的那种增长方式(拥塞避免,线性),不是最快的(慢启动,指数)。

B

可能算了"cwnd 8 → 32 共增长 24 KB,每个 RTT 增 6 KB" → 4 RTT = 8 ms。错的根源:拥塞避免阶段每 RTT 只加 1 MSS = 1 KB,不是任意"凑出来的速率"。

C

把"24 KB 的差值"误解读为"24 ms"——把 KB 当 RTT 数:24 KB → 24 RTT = 48 ms 才对,但 24 ms 对应 12 RTT、12 KB 增量,与题面差距相反。或者用了"每 RTT 增 2 KB"的误算法:24 KB / 2 KB/RTT = 12 RTT = 24 ms。

总解析

第一步:理解 TCP 拥塞控制两个阶段

阶段cwnd 增长方式触发条件
慢启动每 RTT 翻倍(指数)cwnd < ssthresh(慢启动阈值)
拥塞避免每 RTT + 1 MSS(线性)cwnd ≥ ssthresh

题面问"最长时间"——意味着选增长最慢的方式:拥塞避免(线性,每 RTT 仅增 1 KB)。

第二步:套拥塞避免的线性增长

cwnd 从 8 KB 增到 32 KB,需要增加 KB。每 RTT 增 1 KB(= 1 MSS),共需 24 个 RTT

第三步:核对

阶段算法结果
慢启动8→16→32,2 RTT最短 4 ms(A)
拥塞避免8→9→...→32,24 RTT最长 48 ms(D)

题问"最长",对应拥塞避免:D(48 ms)

思考:为什么有"最长 vs 最短"两种可能?

题面只说"在不出现拥塞的前提下",没规定 ssthresh 是多少。

  • 若 ssthresh ≤ 8:cwnd 一开始就大于 ssthresh,全程走拥塞避免(线性)→ 24 RTT = 48 ms
  • 若 ssthresh ≥ 32:cwnd 全程小于 ssthresh,全程走慢启动(指数)→ 2 RTT = 4 ms
  • 若 8 < ssthresh < 32:先慢启动后拥塞避免,时间介于两者之间

题问"最长时间",所以取拥塞避免全程,答 D。

最终答案是 D(48 ms)

编者注(生僻术语):慢启动阈值 ssthresh(slow start threshold)是控制 cwnd 增长方式切换的临界值——cwnd < ssthresh 时走慢启动(指数翻倍)、cwnd ≥ ssthresh 时走拥塞避免(线性增长)。ssthresh 在每次发生拥塞时被设为当前 cwnd 的一半,作为下次"应该谨慎一些"的参考值。本题没给 ssthresh 是开放性的——所以问"最长 / 最短"通过取极端 ssthresh 来确定增长路径。

最后更新:

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

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