计算机网络 可靠传输与滑动窗口 考研笔记
可靠传输
滑动窗口机制
类似算法中的滑动窗口,分为发送窗口和接收窗口。窗口仅向后滑动,绝不向前后退;窗口滑动完全由接收方返回的确认帧 ACK 控制,接收方通过确认机制限制发送方窗口滑动速度,以此实现流量控制。
考研核心考点
- 帧序号采用 n 位二进制编号,总序号空间个数:$2^n$
- 不同可靠传输协议,发送窗口、接收窗口大小限制各不相同
- 只有收到确认帧,发送窗口才会向后滑动
停止-等待协议
基本概念
- 数据帧:发送方传输数据的基本单元,帧首部携带帧序号。
- 确认帧(ACK):接收方正确接收数据帧后,返回给发送方的应答帧,帧内携带对应帧序号,用于告知发送方该帧接收无误,可以发送下一帧。
- 帧序号:用于区分新旧帧、重复帧,本协议仅需 0、1 两个序号循环即可。
超时重传
为解决数据帧丢失问题:发送方每发一帧就启动超时计时器,若长时间未收到对应 ACK,判定帧丢失,超时重传该帧,并重置计时器。
- 确认帧丢失:发送方依旧超时重传该帧;接收方通过帧序号识别出重复帧,直接丢弃重复帧,并重新发送对应 ACK。
- 数据帧出错:接收方检测出差错后,直接丢弃出错帧,不发送任何 ACK,触发发送方超时重传。
窗口大小
$W_T=1,W_R=1$
信道利用率
$U = T_d / (T_d + RTT)$
- $T_d$:一帧发送时延
- $RTT$:往返传播时延
优缺点
- 优点:原理最简单,实现简单,接收端几乎不需要缓存空间
- 缺点:一次仅发送一帧,等待时间长,信道利用率极低,链路越长效率越差
后退N帧协议(GBN,回退N帧)
工作要求
发送方可以连续发送多个帧,无需逐帧等待确认;采用累积确认机制,接收方仅对按序到达的最后一个正确帧发送 ACK。
例:收到帧1、2、3全部正确,仅回复 ACK3,代表前面所有帧均接收正确。
差错处理
中间帧出错/丢失
例如发送 1、2、3 帧,帧2出错。接收方丢弃出错帧以及后续所有乱序帧,仅确认已正确的帧1;发送方超时后回退到出错帧,重传该帧及其之后全部帧(2、3、4)。确认帧 ACK 丢失
发送窗口内最早帧计时器先超时,一次性重传该帧以及后续所有未确认帧。
接收方规则
- 接收窗口大小固定 $W_R=1$
- 只按序接收,不缓存任何乱序帧,乱序帧全部直接丢弃
窗口大小限制
n 位帧序号:
$W_T \le 2^n - 1$
信道利用率
$U = (W_T * T_d) / (W_T * T_d + RTT)$
发送窗口越大,信道利用率越高,整体效率远优于停止等待协议。
优缺点
- 优点:支持连续发送,效率提升明显;接收缓存极小
- 缺点:一错全重传,出错会重传大量原本正确的帧,带宽浪费;若接收速度慢,会频繁重传
选择重传协议(SR)
工作要求
基于连续发送机制改进,不使用累积确认,一帧一单独 ACK 逐个确认;重传机制类似停止等待协议,仅重传出错的单个帧。
考研易错纠正
本协议不存在否认帧(NAK),帧出错、帧丢失均依靠超时重传机制解决,无专门的否认应答帧。
接收方接收窗口 $W_R>1$,可以缓存所有正确到达的乱序帧,等到缺失帧补齐后,再按序交付给上层。
差错处理
某一帧出错/丢失,仅该帧超时,只单独重传此出错帧,其余已正确接收的帧全部无需重传。
窗口大小限制
n 位帧序号:
$W_T \le W_R \le 2^{n-1}$
且整体满足约束:
$W_T + W_R \le 2^n$
最优性能:$W_T = W_R$
若不满足该限制,帧序号会循环混淆,无法区分新帧与旧重复帧,可靠性无法保证。
信道利用率
$U = (W_T * T_d) / (W_T * T_d + RTT)$
相同窗口大小下,三者利用率最高。
优缺点
- 优点:仅重传出错帧,带宽利用率最优,支持乱序接收
- 缺点:协议实现复杂,接收端需要大量缓存空间,逐帧确认通信开销大
协议完整对比总结(考研背诵版)
1. 窗口大小总表
| 协议 | 发送窗口 W_T | 接收窗口 W_R | n 位序号限制 |
|---|---|---|---|
| 停止等待 | 1 | 1 | 无 |
| 后退N帧 GBN | ≤ 2ⁿ−1 | 1 | W_T ≤ 2ⁿ−1 |
| 选择重传 SR | ≤ 2ⁿ⁻¹ | ≤ 2ⁿ⁻¹ | W_T ≤ W_R ≤ 2ⁿ⁻¹ |
2. 确认机制
- 停止等待:发一帧,等一帧 ACK
- GBN:累积确认,仅确认最后一个按序正确帧
- SR:逐个独立确认,一帧一 ACK
3. 重传规则
- 停止等待:仅重传当前出错帧
- GBN:出错则回退全重传
- SR:仅重传出错帧
4. 接收方处理
- 停止等待:按序接收,无缓存
- GBN:丢弃乱序帧,不缓存
- SR:缓存乱序帧,补齐后上交
5. 信道利用率排序
SR > GBN > 停止等待协议
6. 高频易错点
- GBN 接收窗口永远 = 1
- SR 没有否认帧 NAK
- SR 窗口最大为 2ⁿ⁻¹
- 滑动窗口只能向后滑动
- 全部协议依靠 帧序号 + 超时计时器 保证可靠
- 累积确认仅 GBN 独有


