🎯 课程摘要:本节课介绍选择重传协议(Selective Repeat, SR)。为克服回退 N 帧协议(GBN)"一个出错导致大量重传"的浪费,SR 协议将接收窗口 W_R 扩大为大于 1,先缓存失序但正确到达的分组,仅重传出现差错的分组。重点包括滑动窗口大小限制(W_T = W_R ≤ 2^(n-1))、逐一确认机制、工作过程及三种可靠传输协议的对比。
- GBN 的问题:一个数据分组差错可能引起大量数据分组重传,而这些重传的分组原本已正确到达接收方,仅因序号未落入接收窗口(W_R = 1)而被丢弃,造成通信资源严重浪费。
- SR 的解决思路:设法只重传出现差错的数据分组。这就需要接收窗口 W_R > 1,以便先收下失序但正确到达且序号落入接收窗口内的数据分组,等所缺分组收齐后一并送交上层。
- 序号方案:用 n 个比特给分组编序号,序号范围 0 ~ 2^n - 1,循环使用。
- 接收窗口 W_R:
- W_R > 1(这是与 GBN、SW 的本质区别)。
- W_R ≤ W_T(接收窗口超过发送窗口没有意义,因为发送方不会发出那么多)。
- W_T + W_R ≤ 2^n(确保接收窗口向前滑动后,落入的新序号与旧序号无重叠,避免无法分辨新旧分组)。
- 推导结论:
- 由 W_R ≤ W_T 且 W_T + W_R ≤ 2^n,可得 W_R ≤ 2^(n-1)。
- 当 W_R 取最大值 2^(n-1) 时,W_T 能取到的最大值也为 2^(n-1)。
- ⚠️ 重点/考点:SR 协议的窗口限制为 W_T = W_R ≤ 2^(n-1),这是与 GBN(W_T ≤ 2^n - 1)的关键区别。
- 概念定义:为使发送方仅重传出现差错的数据分组,SR 协议的接收方不再采用累积确认,而需要对每一个正确接收的数据分组进行逐一确认。
- 助教补充:GBN 用累积确认(ACK_N 表示 N 及之前全部正确),SR 改为逐分组确认,这样才能精确告诉发送方哪些分组缺失需要重传。
| 协议 | 序号比特 | 发送窗口 W_T | 接收窗口 W_R | 确认方式 |
|---|
| 停止等待(SW) | 1 | 1 | 1 | 逐个确认 |
| 回退 N 帧(GBN) | n | 1 < W_T ≤ 2^n - 1 | 1 | 累积确认 |
| 选择重传(SR) | n | 1 < W_T ≤ 2^(n-1) | 1 < W_R ≤ 2^(n-1) | 逐一确认 |
- ⚠️ 重点/考点:当 W_T 超过取值上限(2^(n-1))时,接收窗口滑动后新序号与旧序号重叠,接收方无法分辨新旧数据分组,产生分组重复。
- 题意:发送窗口至少为 4,发送 0~3 号帧后收到 1 号帧确认,0 号和 2 号帧依次超时,需重传哪些帧?
- 分析:
- SR 协议不采用累积确认,接收方对每个正确接收的数据分组逐一确认。
- 发送方仅重传未收到确认而超时的数据帧。
- 收到 ACK1 → 1 号已确认;0 号和 2 号超时 → 仅重传 0 号和 2 号这两个帧(答案 D)。
- ⚠️ 重点/考点:SR 与 GBN 的关键区别——SR 仅重传超时的个别帧,而 GBN 会回退重传超时帧及其后所有已发送帧。
| 对比项 | 停止等待(SW) | 回退 N 帧(GBN) | 选择重传(SR) |
|---|
| 发送窗口 W_T | 1 | 1 < W_T ≤ 2^n - 1 | 1 < W_T ≤ 2^(n-1) |
| 接收窗口 W_R | 1 | 1 | 1 < W_R ≤ 2^(n-1) |
| 序号比特数 | 1 | n | n |
| 确认方式 | 逐个确认 | 累积确认 | 逐一确认 |
| 重传范围 | 仅重传当前分组 | 回退重传超时帧及之后所有已发送帧 | 仅重传出错/超时的分组 |
| 信道利用率 | 最低(RTT大时尤甚) | 较高(信道好时);信道差时反不如SW | 最高(仅重传必要分组) |
| 实现复杂度 | 最简单 | 中等 | 最复杂(需接收缓存) |
| 适用场景 | RTT 小、简单链路 | 信道质量好的链路 | 信道质量差、要求高利用率的链路 |
- SR 协议:发送窗口 W_T > 1,接收窗口 W_R > 1,仅重传出错分组,信道利用率最高。
- 窗口限制:W_T = W_R ≤ 2^(n-1),超出则接收窗口滑动后新旧序号重叠,无法分辨新旧分组。
- 采用逐一确认(非累积确认),精确告知发送方哪些分组缺失。
- 三种协议中 SW 最简单但利用率最低,GBN 利用率较高但出错浪费大,SR 利用率最高但实现最复杂。
- 选择重传协议为什么要求 W_T + W_R ≤ 2^n?请从新旧序号不重叠的角度推导。
- SR 协议为何不采用累积确认而采用逐一确认?
- 当 W_R 取最大值 2^(n-1) 时,W_T 的最大值为何也是 2^(n-1)?
- (408 真题)发送 0~3 号帧后收到 1 号确认,0 号和 2 号超时,SR 协议需重传哪些帧?与 GBN 有何不同?
- 对比 SW、GBN、SR 三种协议的发送窗口、接收窗口、确认方式和重传范围。