后退N帧协议难题解析:收到ACK 0、2、3时,为何必须重传4帧?

1. 题目解析

题目描述的是后退 N 帧(Go-Back-N, GBN)协议的超时重传机制。核心问题是:当发送方只收到编号 0、2、3 号帧的确认时,它需要重发多少个帧?

为了回答这个问题,我们需要理解:

  1. GBN 协议的工作原理
  2. 数据链路层中的其他协议(如停止等待、选择重传)
  3. 计时器在 GBN 中的作用
  4. GBN 发生超时时如何处理
  5. 计算需要重发的帧数

2. GBN(Go-Back-N)协议是什么?

GBN(后退 N 帧协议)是一种基于滑动窗口的可靠数据传输协议,属于**自动重传请求(ARQ, Automatic Repeat reQuest)**机制的一种。

GBN 协议的特点

  1. 发送方

    • 采用滑动窗口机制,最多可以连续发送 N 个未确认的帧,而不必等待每个帧的确认。
    • 发送窗口大小 N 由协议设定。
    • 维护一个计时器,如果超时,则从最早未被确认的帧开始重传所有未确认的帧。
  2. 接收方

    • 累积确认(Cumulative Acknowledgment):只会发送最新正确接收且按序排列的帧的 ACK
    • 若接收方收到一个非按序的帧,则丢弃该帧,并重新发送最新的 ACK

GBN 协议 VS 其他协议

协议传输方式确认方式超时后重传方式
停止等待协议发送一个,等待 ACK单个确认仅重发丢失的帧
GBN(后退 N 帧)发送多个,窗口大小为 N累积确认重发窗口内所有未确认帧
SR(选择重传)发送多个,窗口大小为 N逐个确认仅重发丢失的帧

GBN 适用于高丢包率的环境,但可能会导致冗余重传

GBN 的缺点与改进方案

  1. 缺点
    冗余重传:即使后续帧正确到达,仍会因超时重传。
    低效带宽利用:在高丢包率下可能导致大量重复数据传输。
  2. 改进方案
    动态调整窗口大小:根据网络状况动态调整 N(如 TCP 拥塞控制)。
    引入 SACK(选择性确认):允许接收方告知发送方哪些帧已正确接收(类似 SR 的优化)。

3. 计时器在 GBN 中的作用

  • 每个数据帧都需要 ACK(确认)
  • 发送方对最早未确认的帧启动一个计时器
  • 如果在计时器超时之前收到 ACK,则向前滑动窗口
  • 如果计时器超时,则重传所有未确认帧

4. 题目情境分析

题目条件

  • 发送方已发送帧:0 ~ 7(共 8 帧)
  • 收到确认的帧(ACK):0、2、3
  • 计时器超时

滑动窗口的起始状态

假设窗口大小 N=4(题目未给出,但一般 GBN 采用窗口大小 N<=发送序号范围的一半),帧的状态如下:

发送序号01234567
ACK 状态
  • ACK 0 表示 0 号帧正确接收,窗口向前滑动
  • ACK 2、3 表示这些帧已正确接收
  • ACK 1、4、5、6、7 没有收到,说明这些帧丢失

GBN 发生超时时如何处理

  1. GBN 采用累积确认**,接收方 ACK 了 3,说明 0-3 之前的帧都已成功接收。
  2. 最早未确认的帧是 4,因此超时时发送方需要从 4 号帧开始重传
  3. 4、5、6、7 这些帧都需要重发
  4. 最终需要重传的帧数 = 4 号帧到 7 号帧,共 4 个

5. 计算重传帧数

  • 最早未被确认的帧:4
  • 未确认的帧范围:[4, 5, 6, 7]
  • 需要重发的帧数 = 4(因为 GBN 从最早未确认的开始重传)

答案:4 帧


6. 详细举例

假设窗口大小 N = 4,我们模拟 GBN 发送、ACK 接收和超时重传过程。

(1) 初始发送

时间发送方发送的帧接收方收到的帧发送方收到的 ACK
T10,1,2,30,1,2,3✅ACK 0
T24,5,6,72,3,4,5✅ACK 2, ✅ACK 3
T3超时,未收到 ACK

(2) 计时器超时

  • 由于 1 号帧没有收到确认,GBN 需要从最早未确认的帧(4)开始重传

(3) 发送方重传

时间发送方重发的帧
T44, 5, 6, 7

最终,发送方需要重发 4 帧。


7. 练习题与思考

练习题 1

条件:窗口大小 N=5,发送方已发送帧 0~9,收到 ACK 4、6、7。超时后需重传多少帧?
答案: 接收方发送 ACK 4 表示 0~4 已确认,ACK 6、7 无效(非累积确认)。
最早未确认帧是 5,需重传 5~9,共 5 帧。

练习题 2

条件:若 GBN 接收方改为缓存非按序帧(类似 SR),会发生什么?
分析: 发送方可能减少重传量,但需修改协议逻辑(如增加逐个 ACK),此时协议退化为 SR。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值