首页/计算机网络/03-data-link/后退 N 帧协议(GBN) 🔗 在 Obsidian 中打开
计算机网络 · 03-data-link

后退 N 帧协议(GBN)

重要度 ⭐⭐⭐⭐⭐ 计算机网络/数据链路层GBN后退N帧滑动窗口累积确认
速查
GBN:发送方可连续发多帧(Wt > 1),接收方只按序接收(Wr = 1)。某帧出错则丢弃该帧及后续所有帧,发送方从出错帧起重传后续全部。信道利用率 U = (Wt·T_D)/(T_D + RTT),要求 Wt ≤ 2ⁿ − 1。考试频率 ⭐⭐⭐⭐⭐。

核心概念

基本原理

发送方可以连续发送多个帧(窗口大小 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
发送窗口11 < Wt ≤ 2ⁿ−1
接收窗口11
确认方式逐帧累积确认
重传出错帧重传 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 区别接收窗口、缓存、重传范围

易错点

注意
  • GBN 接收窗口 Wr = 1,不缓存失序帧
  • 累积确认中 ACK 丢失不一定导致重传
  • 重传范围是出错帧及后续所有已发帧,不只是出错帧
  • 窗口大小 Wt ≤ 2ⁿ − 1,不是 2ⁿ
  • "后退 N 帧"指的是重传 N 个帧

核心结论

必背
  1. GBN 允许连续发送,提高信道利用率
  2. 累积确认减少了 ACK 流量
  3. 出错时重传范围大是 GBN 的主要缺点
  4. 接收方不需要缓存失序帧,实现简单

记忆卡片

GBN 的发送/接收窗口大小?
Wt > 1(≤2ⁿ−1),Wr = 1
GBN 出错时重传什么?
出错帧及后续所有已发送的帧。
GBN 接收方如何处理失序帧?
直接丢弃,不缓存
为什么 Wt ≤ 2ⁿ − 1?
防止序号歧义,保证窗口滑动后旧帧序号不与新帧混淆。

图示 · GBN 出错重传

发送方连续发送,帧2出错 帧0 ✓ 帧1 ✓ 帧2 ✗ 帧3 ✓ 重传2 重传3 接收方丢弃帧2及失序的帧3 超时后从帧2起重传 因为 Wr=1 不缓存失序帧,帧3虽正确到达也只能丢弃 → 一起重传
图:GBN 中一旦某帧出错,其后所有帧(即使正确)都会被丢弃并重传,这是它的最大缺点。

交互动画 · 回退 N 帧的滑动窗口与重传

待播放
回退 N 帧(GBN): 连续发送 + 超时回退重传 发送方 S窗口 W=4 接收方 R接收窗口=1 0 1 2 3 4 5 6 7 超时! 回退 N: 重传 2 及之后所有未确认帧 接收方丢弃乱序帧 3(期望 2) 帧 3 本已正确到达却被重传 → 带宽浪费
演示回退 N 帧(GBN): 连续发送、帧丢失、超时后回退重传。
接收按序;出错则回退重传整个未确认窗口。

相关知识点

stop-and-wait selective-repeat-sr flow-control

↑ 站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。