Skip to content

2022年 408 计算机网络 第 40 题

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

题目

假设主机 H 通过 HTTP/1.1 请求浏览某 Web 服务器 S 上的 Web 页 news408.html,news408.html 引用了同目录下的 1 幅图像,news408.html 文件大小为 1 MSS(最大段长),图像文件大小为 3 MSS,H 访问 S 的往返时间 RTT = 10 ms,忽略 HTTP 响应报文的首部开销和 TCP 段传输时延。若 H 已完成域名解析,则从 H 请求与 S 建立 TCP 连接时刻起,到接收到全部内容止,所需的时间至少是( )。

错因

A

按"无慢启动 + 持久连接"算:1 RTT 握手 + 1 RTT HTML + 1 RTT 图像 = 3 RTT = 30 ms。错的根源:忽略了 TCP 慢启动——图像 3 MSS 不能一次性发完,cwnd 初始为 1 MSS,发完 HTML 后 cwnd=2,发图像第一轮只能发 2 MSS,剩下 1 MSS 还要再 1 RTT。

C

可能算成了"非持久连接 + 慢启动"或者"图像 3 MSS 串行各 1 RTT"——按 1 RTT 握手 + 2 RTT HTML + 2 RTT 图像 = 5 RTT = 50 ms。错的根源:把"图像 3 MSS 用 3 RTT"或"持久连接每对象仍要握手"。

D

按"非持久连接 + 不并行"算:每对象 2 RTT × 2 对象 = 4 RTT = 40 ms(这是骨架答案 B 的算法);如果再多算 2 RTT 凑成 6 RTT = 60 ms 就是 D,但题面是 HTTP/1.1 持久连接,不应再每对象单独握手。错的根源:把 HTTP/1.0 非持久连接的算法套到 1.1 上,且把 RTT 数算大了。

总解析

第一步:理清前提条件

  • HTTP/1.1 → 持久连接(多个 HTTP 请求复用同一条 TCP)
  • 不并行(默认顺序处理 HTML → 图像)
  • 1 个 HTML(1 MSS)+ 1 个图像(3 MSS)= 共 4 MSS 数据
  • 忽略 TCP 段传输时延 → 不影响 cwnd 增长,但 cwnd 仍受慢启动约束

第二步:列出每 RTT 的事件

TCP 连接初始 cwnd = 1 MSS。

RTT时刻事件cwnd 变化
00开始三次握手1
110 ms握手完成;H 立即发 GET HTML(与第三次握手 ACK 捎带)1
220 msS 用 cwnd=1 发 1 MSS HTML 给 H;H 收到 HTMLcwnd → 2(收 ACK 后翻倍)
220 msH 收完 HTML 立即发 GET 图像2
330 msS 用 cwnd=2 发 2 MSS 图像(剩 1 MSS 没发);H 收到 2 MSScwnd → 4
440 msS 用 cwnd=4(仍剩 1 MSS)发剩下 1 MSS 图像;H 收到第 3 个 MSS

第三步:H 在第 4 RTT 末(t = 40 ms)收到全部内容

合计:

第四步:核对

选项算法错误源
A30 ms漏慢启动,以为图像 3 MSS 一次性发完
B40 ms正确(含慢启动)
C50 ms多算 1 RTT
D60 ms误用非持久连接算法

最终答案是 B(40 ms)

编者注(生僻术语):HTTP/1.1 持久连接(默认 keep-alive)相比 HTTP/1.0 非持久连接节省的是"每对象单独握手"的开销;但 TCP 慢启动仍然作用于这条复用的连接——cwnd 从 1 起步、每 RTT 翻倍。当题面给"忽略 TCP 段传输时延"时,cwnd 是唯一限制每 RTT 能发多少数据的因素。本题里 cwnd 增长 1 → 2 → 4 → ...,3 MSS 图像在 cwnd=2 时只能发 2,要再 1 RTT 才能把第 3 MSS 发完。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题