Appearance
题目
如下图,2 段链路的数据传输速率为 100 Mbps,时延带宽积(即单向传播时延 × 带宽)均为 1000 bit。若 H1 向 H2 发送 1 个大小为 1 MB 的文件,分组长度为 1000 B,则从 H1 开始发送时刻起到 H2 收到文件全部数据时刻止,所需的时间至少是(注:M = 10⁶)( )。
错因
A
少算了最后一跳的传输时延。误以为 R 的转发完全可以和 H1 的发送重叠,于是只算 1000 个分组 × 80 μs + 2 × 10 μs(两跳传播)= 80020 μs。问题在于:H1 发完最后一个分组后,这个分组还要从 R 转发到 H2,此时 H1 已停止发送、R 不再有"上一个分组在传"作为重叠对象,最后这 80 μs 的传输时延必须算进去。
B
漏算了两跳传播时延。算了 1000 × 80 + 1 × 80 = 80080 μs(流水线主体 + 最后一跳传输),但把"时延带宽积 = 传播时延 × 带宽"换算出的 10 μs 传播时延整体忽略了。题面给的"时延带宽积 1000 bit"本就是为了让你反推传播时延,跳过这一步等于丢了关键参数。
C
只算了一跳传播时延。算到 80000 + 80 + 10 = 80090 μs。错因是脑子里只记得"端到端要加传播时延",但把它当成 1 次而不是 2 次——这条链路上数据要走 H1→R 和 R→H2 两段独立物理介质,每段都有自己的传播时延 10 μs。
总解析
先抠题目隐含的两个参数:
- 每跳传播时延 = 时延带宽积 ÷ 带宽 = 1000 bit ÷ 100 Mbps = 1000 / 10⁸ s = 10 μs
- 每分组传输时延 = 分组长度 ÷ 带宽 = 1000 B × 8 bit/B ÷ 100 Mbps = 8000 / 10⁸ s = 80 μs
分组数:1 MB / 1000 B = 10⁶ / 10³ = 1000 个分组
存储转发的流水线时序(这是核心):
R 收完一个分组才能转发,但收和转可以与 H1 发下一个分组并行——所以稳态下,瓶颈在带宽最低的链路(这里两段都是 100 Mbps,瓶颈即 H1 的发送速率)。
- t = 0:H1 开始发分组 #1
- t = 80 μs:H1 发完分组 #1,开始发分组 #2
- t = 90 μs:分组 #1 完整到达 R(80 + 10 传播)
- t = 170 μs:R 转发完分组 #1 到 L2 链路(90 + 80)
- t = 180 μs:分组 #1 完整到达 H2(170 + 10 传播)
- ……(中间分组流水线推进,每 80 μs 多到一个)……
- t = 1000 × 80 = 80000 μs:H1 发完最后一个分组(#1000)
最后一个分组从 H1 发完到 H2 收完,还要走 传播 10 + 转发 80 + 传播 10 = 100 μs:
换算 80100 μs = 80.10 ms。
理解要点:流水线下"每个分组都要走两跳"看似要乘 2,但中间 999 个分组的两跳时延已经被 H1 的连续发送掩盖——每 80 μs 出一个分组的输出端,新分组就排进来了。只有第一个分组的"启动延迟"和最后一个分组的"收尾延迟"无法被掩盖。收尾延迟 = 1 个传输时延 + 2 个传播时延(最后一个分组从 H1 出发到 H2 收完)。
最终答案是 D(80.10 ms)。