Appearance
题目
甲乙双方均采用后退 N 帧协议(GBN)进行持续的双向数据传输,且双方始终采用捎带确认,帧长均为 1000 B。 和 分别表示甲方和乙方发送的数据帧,其中: 是发送序号; 是确认序号(表示希望接收对方的下一帧序号);数据帧的发送序号和确认序号字段均为 3 比特。信道传输速率为 100 Mbps,RTT = 0.96 ms。下图给出了甲方发送数据帧和接收数据帧的两种场景,其中 为初始时刻,此时甲方的发送和确认序号均为 0, 时刻甲方有足够多的数据待发送。
场景 (a):
场景 (b):
请回答下列问题。
(1) 对于图 (a), 时刻到 时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少?正确接收的是哪几个帧(请用 形式给出)?
(2) 对于图 (a),从 时刻起,甲方在不出现超时且未收到乙方新的数据帧之前,最多还可以发送多少个数据帧?其中第一个帧和最后一个帧分别是哪个(请用 形式给出)?
(3) 对于图 (b),从 时刻起,甲方在不出现新的超时且未收到乙方新的数据帧之前,需要重发多少个数据帧?重发的第一个帧是哪个(请用 形式给出)?
(4) 甲方可以达到的最大信道利用率是多少?
解析
理解 GBN 中 ack 字段的含义: / 中的 是捎带确认——表示发送方累计确认到 、期待下一帧序号 。GBN 的接收窗口为 1,只接受按序到达的帧——乱序到的帧丢弃,并重发当前期待的 作为 ack。
(1) 甲断定乙已正确接收的帧数
时刻甲已收到乙发的最后一个帧 ,ack = 3 表示乙累计确认到序号 2、期待下一帧 3。
→ 乙已正确接收甲的 、、 三帧。
答案:3 帧,分别是 、、。
为什么不包含 :虽然 在图中已发出,但乙在 中给出的 ack 仍然是 3(期待 3)——说明 还没到达乙、或还没被乙处理 → 甲不能断定它"已被收到"。
(2) 后甲最多还能发多少帧
先算 GBN 发送窗口最大值:
帧序号 3 比特 → 序号空间 = 。GBN 中接收窗口 = 1、发送窗口 ≤ 序号空间 - 1 = 7。
为什么发送窗口不能等于序号空间:若发送窗口 = 8 即用满整个序号空间,已发未确认的帧序号"绕回"会让接收方分不清是新帧还是重传。GBN 必须留 1 个缝。
统计 时刻甲已发未确认的帧:甲发了 ~ 共 5 帧,其中 ~ 已确认(见 (1)),剩 、 仍在窗口内未确认。
→ 已用窗口 = 2 帧;最多再发 7 - 2 = 5 帧。
第一个重发帧的序号: 之后是 5、6、7、0、1(GBN 序号 mod 8 循环)。
ack 字段填多少:甲累计确认到的乙的最后一个连续帧。从图 (a) 看,乙发了 、、;按 GBN 接收方"只接受按序帧"原则, 因为乱序(中间缺 )会被甲丢弃 → 甲此时仍累计确认到 、期待 → ack = 2。
GBN 接收方对乱序帧的处理:丢弃 + 不动 ack。这是 GBN 与 SR 协议的本质差别——SR 会缓存乱序帧,GBN 不缓存。
答案:
- 最多再发 5 帧
- 第一个:
- 最后一个:
(3) 图 (b) 中超时后的重发
先看 (b) 中 时刻状态:
- 甲已发:~ 共 5 帧
- 甲已收乙的:、、 三帧
- 乙的 ack 序列:1、2、2 → 乙累计确认到甲的 (ack=2 表示期待 )。乙没收到
时刻 超时 → GBN 必须累计重传 及其后所有未确认帧:、、。
ack 字段填多少:甲已收乙的 、、 三帧(按序连续到达),累计确认到 2、期待 3 → ack = 3。
答案:
- 重发 3 帧:、、
- 第一个:
GBN 累计重传的代价:哪怕只丢一帧 ,后续所有 、 都要重发——即使它们本身没丢、即使乙也无法接受。这是 GBN 简单换来的代价;SR 协议只重传丢失的那一帧、收方缓存其余。
(4) 最大信道利用率
GBN 信道利用率公式(捎带确认下,):
先算 :
(题面 0.96 ms)。
代入 (取窗口最大值以求最大利用率):
为什么取 :信道利用率随窗口线性增长,发送窗口越大利用率越高。GBN 在 3 比特序号下窗口最大 7,所以代入 7 给最大值。
信道利用率的物理意义:50% 意味着甲方有一半时间在"等 ACK"——窗口太小撑不满 RTT 长度的链路。只有当 时利用率才能达到 100%。本题需要 才能 100%,但 3 比特序号撑不到,所以受限于窗口大小。