发送方可以连续发送多个帧(窗口大小 Wt > 1),接收方只接收按序到达的帧。若某帧出错,接收方丢弃该帧及后续所有帧,发送方从出错帧开始重传后续所有帧。
发送窗口 Wt: 可连续发送的帧数(1 < Wt ≤ 2ⁿ - 1)
接收窗口 Wr = 1: 只接收按序到达的帧
序号位数 n 与窗口大小:Wt ≤ 2ⁿ - 1
例:3 位序号 → Wt ≤ 7
发送方: [发0][发1][发2][发3]──等待──[收ACK0]──[发4]...
接收方: [收0][收1][收2][收3]──[发ACK3(累积)]
ACK3 表示帧 0,1,2,3 都已正确收到
发送方: [发0][发1][发2(出错)][发3]...
接收方: [收0][收1][2出错丢弃][3丢弃(失序)]
接收方连续发 ACK1 → 发送方超时后重传帧2和帧3
ACKn 表示:序号 n 及之前的所有帧都已正确接收
即使中间 ACK 丢失,后续 ACK 也可覆盖
例:收方发 ACK0..ACK3,若 ACK1 丢失,收 ACK3 仍表示 0~3 全确认
收到帧 n:
1. 是期望的下一帧 → 接收,发 ACKn,窗口前移
2. 不是期望帧 → 丢弃,重发上一个 ACK
3. 不缓存失序帧(与 SR 的关键区别)
| 特性 | 停止-等待 | GBN |
|---|---|---|
| 发送窗口 | 1 | 1 < Wt ≤ 2ⁿ−1 |
| 接收窗口 | 1 | 1 |
| 确认方式 | 逐帧 | 累积确认 |
| 重传出错帧 | 重传 1 帧 | 重传后续所有帧 |
| 信道利用率 | 低 | 较高 |
| 缓存需求 | 无 | 接收方无需缓存 |
U = (Wt × T_D) / (T_D + RTT)
当 Wt 足够大时 U → 1;Wt=1 退化为停止-等待
例:Wt=4, T_D=8ms, RTT=20ms
U = (4×8)/(8+20) = 32/28 > 1 → Wt=4 已足够充分利用信道
实际最大利用率 = min(Wt×T_D/(T_D+RTT), 1)
| 考点 | 说明 |
|---|---|
| GBN 工作流程 | 发送、接收、确认、重传完整过程 |
| 累积确认含义 | ACKn 确认 n 及之前所有帧 |
| 出错重传行为 | 重传出错帧及后续所有帧 |
| 窗口大小限制 | Wt ≤ 2ⁿ − 1 |
| 与 SR 区别 | 接收窗口、缓存、重传范围 |
↑ 站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。