1. 题目解析
题目描述的是后退 N 帧(Go-Back-N, GBN)协议的超时重传机制。核心问题是:当发送方只收到编号 0、2、3 号帧的确认时,它需要重发多少个帧?
为了回答这个问题,我们需要理解:
- GBN 协议的工作原理
- 数据链路层中的其他协议(如停止等待、选择重传)
- 计时器在 GBN 中的作用
- GBN 发生超时时如何处理
- 计算需要重发的帧数
2. GBN(Go-Back-N)协议是什么?
GBN(后退 N 帧协议)是一种基于滑动窗口的可靠数据传输协议,属于**自动重传请求(ARQ, Automatic Repeat reQuest)**机制的一种。
GBN 协议的特点
-
发送方
- 采用滑动窗口机制,最多可以连续发送
N
个未确认的帧,而不必等待每个帧的确认。 - 发送窗口大小
N
由协议设定。 - 维护一个计时器,如果超时,则从最早未被确认的帧开始重传所有未确认的帧。
- 采用滑动窗口机制,最多可以连续发送
-
接收方
- 累积确认(Cumulative Acknowledgment):只会发送最新正确接收且按序排列的帧的 ACK。
- 若接收方收到一个非按序的帧,则丢弃该帧,并重新发送最新的 ACK。
GBN 协议 VS 其他协议
协议 | 传输方式 | 确认方式 | 超时后重传方式 |
---|---|---|---|
停止等待协议 | 发送一个,等待 ACK | 单个确认 | 仅重发丢失的帧 |
GBN(后退 N 帧) | 发送多个,窗口大小为 N | 累积确认 | 重发窗口内所有未确认帧 |
SR(选择重传) | 发送多个,窗口大小为 N | 逐个确认 | 仅重发丢失的帧 |
✅ GBN 适用于高丢包率的环境,但可能会导致冗余重传。
GBN 的缺点与改进方案
- 缺点:
• 冗余重传:即使后续帧正确到达,仍会因超时重传。
• 低效带宽利用:在高丢包率下可能导致大量重复数据传输。 - 改进方案:
• 动态调整窗口大小:根据网络状况动态调整N
(如 TCP 拥塞控制)。
• 引入 SACK(选择性确认):允许接收方告知发送方哪些帧已正确接收(类似 SR 的优化)。
3. 计时器在 GBN 中的作用
- 每个数据帧都需要 ACK(确认)
- 发送方对最早未确认的帧启动一个计时器
- 如果在计时器超时之前收到 ACK,则向前滑动窗口
- 如果计时器超时,则重传所有未确认帧
4. 题目情境分析
题目条件
- 发送方已发送帧:0 ~ 7(共 8 帧)
- 收到确认的帧(ACK):0、2、3
- 计时器超时
滑动窗口的起始状态
假设窗口大小 N=4
(题目未给出,但一般 GBN 采用窗口大小 N<=发送序号范围的一半
),帧的状态如下:
发送序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
ACK 状态 | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
- ACK 0 表示 0 号帧正确接收,窗口向前滑动
- ACK 2、3 表示这些帧已正确接收
- ACK 1、4、5、6、7 没有收到,说明这些帧丢失
GBN 发生超时时如何处理
- GBN 采用累积确认**,接收方 ACK 了 3,说明 0-3 之前的帧都已成功接收。
- 最早未确认的帧是 4,因此超时时发送方需要从 4 号帧开始重传
- 4、5、6、7 这些帧都需要重发
- 最终需要重传的帧数 = 4 号帧到 7 号帧,共 4 个
5. 计算重传帧数
- 最早未被确认的帧:4
- 未确认的帧范围:[4, 5, 6, 7]
- 需要重发的帧数 = 4(因为 GBN 从最早未确认的开始重传)
✅ 答案:4 帧
6. 详细举例
假设窗口大小 N = 4,我们模拟 GBN 发送、ACK 接收和超时重传过程。
(1) 初始发送
时间 | 发送方发送的帧 | 接收方收到的帧 | 发送方收到的 ACK |
---|---|---|---|
T1 | 0,1,2,3 | 0,1,2,3 | ✅ACK 0 |
T2 | 4,5,6,7 | 2,3,4,5 | ✅ACK 2, ✅ACK 3 |
T3 | 超时,未收到 ACK | ❌ |
(2) 计时器超时
- 由于 1 号帧没有收到确认,GBN 需要从最早未确认的帧(4)开始重传。
(3) 发送方重传
时间 | 发送方重发的帧 |
---|---|
T4 | 4, 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。