Skip to content

2019年 408 计算机网络 第 35 题

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

题目

对于滑动窗口协议,如果分组序号采用 3 比特编号,发送窗口大小为 5,则接收窗口最大是( )。

错因

A

按""等更紧的约束推:,得 2。错的根源:把约束记成了"严格小于 "——其实正确的滑动窗口约束是 (取等也合法),不需要再 −1。多扣 1 就把答案压低到 2。

C

只用了"接收窗口上限 "这一条独立约束,没考虑发送窗口的影响。这条上限本身没错(接收窗口确实不能超过序号空间的一半,否则在重传场景下分不清新旧帧),但本题发送窗口 已经接近序号空间 的极限——必须再叠加 这条联合约束,比 4 更紧。错的根源:忘了双约束并存时要取较紧的那条。

D

误以为接收窗口可以等于发送窗口()——但接收窗口本身就有上限 ,5 已经超出了。错的根源:把"对称"想象成无条件成立,没意识到接收窗口的"序号空间一半"硬约束。

总解析

第一步:明确序号空间

3 比特编号 → 序号空间

第二步:列出滑动窗口协议的两条核心约束

对于使用接收窗口缓存乱序帧的滑动窗口协议(典型如 SR),有两条并存的约束:

约束含义本题代入
接收窗口本身上限:不能超过序号空间一半
联合约束:发送方重传与接收方期待在 mod 下不重叠

第三步:取较紧的那条

两条约束必须同时满足,所以取较紧(数值较小)的那条作为最终上限:

为什么 ② 是必要的?

考虑最坏场景:发送方发出 5 个帧 [a, a+1, a+2, a+3, a+4](mod 8),所有 ACK 全丢,发送方等不到 ACK 后重传同样 5 个帧。

  • 接收方下一轮期待的"新一组"序号 = (mod 8)
  • :期待集合 = (mod 8)—— a 与重传的旧帧重叠!接收方收到序号 的帧时无法判断是"新一轮的新帧 "还是"上一轮重传的旧帧 ",产生歧义
  • :期待集合 = (mod 8)—— 不与 相交 ✓

所以本题 不安全,必须

第四步:核对

最大 = 3,命中选项 B

最终答案是 B(3)

编者注(生僻术语):序号回卷(sequence number wrap-around)防护是滑动窗口协议设计的关键考量——序号字段位数有限(n 比特,仅 个值循环使用),如果允许接收窗口和发送窗口加起来超过 ,重传场景下接收方无法区分新旧帧。所以一般教材把约束写成 ;又因 SR 协议默认收发对称(),单边约束就是 。本题发送窗口被故意取得偏大(),就是为了让"联合约束"成为更紧的那一条,考查能否同时考虑两条约束。

最后更新:

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