📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
🎯 课程摘要:本节课介绍回退 N 帧协议(Go-Back-N, GBN)。该协议采用流水线传输方式,通过发送窗口限制发送方连续发送数据分组的数量,显著提高信道利用率。重点包括滑动窗口机制、累积确认、回退重传过程、发送窗口大小限制(WT ≤ 2^n - 1)以及信道利用率分析。
📝 详细笔记
1. 流水线传输的引入
- 问题背景:停止-等待协议(SW)每发送一个分组就停止等待,当 RTT ≫ T_D(如同步卫星链路)时信道利用率很低。
- 解决方案:采用流水线传输方式——发送方在未收到确认分组的情况下,可以连续发送多个数据分组,而不必每发送完一个就停下来等待。
- ⚠️ 重点/考点:发送方不能无限制连续发送,否则路由器或接收方来不及处理导致分组丢失,浪费通信资源。必须用发送窗口限制发送方连续发送的数量。
- GBN 协议采用流水线传输方式并利用发送窗口限制发送方,属于连续 ARQ 协议。
2. 滑动窗口机制
发送窗口 W_T
- 概念定义:发送方维护发送窗口 W_T,序号落入发送窗口内的数据分组可在未收到确认时连续发送。
- 序号方案:采用 n 个比特给分组编序号,序号范围 0 ~ 2^n - 1,循环使用。
- W_T 取值范围:1 < W_T ≤ 2^n - 1
- W_T = 1 → 退化为停止等待协议(SW)。
- W_T 超过上限 2^n - 1 → 会出现严重错误(接收方无法分辨新旧分组)。
- 本例:n = 3,序号范围 0~7,W_T 取值范围 2~7,本例取 W_T = 5。
接收窗口 W_R
- 概念定义:接收方维护接收窗口 W_R,只有正确到达且序号落入接收窗口内的数据分组才被接收。
- W_R 取值:只能为 1(与停止等待协议相同)。
- 接收方每正确收到一个序号落入接收窗口的数据分组,接收窗口向前滑动一个位置,并给发送方发送针对该数据分组的确认分组。
滑动窗口协议
- 发送方每收到一个按序确认的 ACK,发送窗口向前滑动一个位置,新序号落入发送窗口可继续发送。
- 发送窗口与接收窗口按规则不断向前滑动,因此这类协议又称为滑动窗口(sliding window)协议。
3. 工作过程(Mermaid 时序图)
场景一:无传输差错
场景二:2 号分组误码 → 回退 N 帧重传
- ⚠️ 重点/考点:一旦 2 号分组误码被丢弃,其后连续发送的 3~6 号分组都要被重传——这就是**"回退 N 帧"名称的由来**:一旦出错,就退回去重传已发送过的 N 个数据分组。
4. 累积确认(Cumulative Acknowledgment)
- 概念定义:GBN 协议的接收方采用累积确认方式,不必对每个数据分组都发送确认,而是可在正确接收几个序号连续的数据分组后,对按序到达的最后一个数据分组发送确认分组。
- ACK 含义:ACK_N 表明序号为 N 及之前的所有数据分组都已正确接收。
- 优点:
- 减少向网络中注入确认分组的数量。
- 即使确认分组丢失,也可能不必重传数据分组(如 ACK1 丢失但 ACK4 到达,ACK4 表明 4 号及之前全部正确接收)。
- 缺点:不能向发送方及时准确地反映接收方已正确接收的所有数据分组的数量。
累积确认示例
5. 发送窗口大小限制
- 限制条件:W_T ≤ 2^n - 1(n 为序号比特数)。
- 超出上限的后果:接收方无法分辨新旧数据分组,产生分组重复传输差错。
- 示例(n=3,W_T 上限 = 7):
- 若取 W_T = 8(超过上限),发送方发送 0~7 号共 8 个分组 → 接收方按序接收,发送累积确认 ACK7,窗口滑动 8 个位置,新序号 0 落入接收窗口。
- 假设 ACK7 丢失 → 发送方超时重传 0~7 号 → 接收方根据当前接收窗口(序号 0)按序接收,但之前已正确接收过这些分组,无法分辨新旧 → 分组重复。
6. 信道利用率与适用场景
- 优点:无差错情况下,信道利用率比 SW 协议显著提高,提高程度取决于发送窗口大小。
- 缺点:一个数据分组差错可能引起大量数据分组重传(这些分组原本已正确到达但因序号未落入接收窗口被丢弃)。
- 适用场景:
- 信道质量好时,GBN 利用率高于 SW。
- 信道质量差(如无线信道,易出现误码)时,GBN 利用率并不比 SW 高,应考虑选择重传协议(SR)。
7. 408 考研真题示例
真题一(2009 年)—— 答案 C
- 题意:已发送编号 0~7 的帧,收到 0、2、3 号帧的确认,此时超时,需重传几个帧?
- 分析:
- GBN 采用累积确认。收到 ACK0 → 窗口滑动 1 位;收到 ACK2 → 表明 2 号及之前全部正确,窗口滑动 2 位;收到 ACK3 → 窗口滑动 1 位。
- 此时 4 号帧超时 → 重传发送窗口内已发送的 4~7 号帧 → 需重传 4 个帧。
真题二(2014 年)—— 答案 C
- 题意:GBN 协议,发送窗口 = 1000,数据帧长 1000 字节,单向传播时延、发送速率已知,忽略确认帧发送时延,求最大平均数据传输速率。
- 分析:
- 一个发送周期 = 数据帧发送时延 + 单程传播时延 + 确认帧返回单程传播时延。
- 一个发送周期内可发送 1000 个数据帧(窗口大小)。
- 最大平均速率 = (一个周期发送数据量) / (发送周期) = 80 Mb/s = 80 Mbps。
💡 核心总结
- GBN 协议:发送窗口 W_T > 1,接收窗口 W_R = 1,流水线传输。
- 序号 n 比特,W_T 取值范围 1 < W_T ≤ 2^n - 1,超出则无法分辨新旧分组。
- 采用累积确认(ACK_N 表示 N 及之前全部正确接收),优点是减少确认数量、容忍确认丢失。
- 一旦某分组出错,其后已发送的分组全部重传(回退 N 帧),信道差时利用率反不如 SW。
- 信道利用率高于 SW,提高程度取决于发送窗口大小。
❓ 课后思考 / 经典考题
- 回退 N 帧协议的接收窗口为什么只能是 1?若大于 1 会怎样?
- 发送窗口 W_T 为什么不能超过 2^n - 1?请用具体例子说明。
- 累积确认的优缺点分别是什么?ACK_N 的确切含义是什么?
- (408 真题)已发送 0~7 号帧,收到 0、2、3 号确认后 4 号超时,需重传几个帧?
- 信道质量较差时,GBN 为何不一定比 SW 信道利用率高?