Appearance
停止-等待协议
考情分析
停止-等待协议是最简单的 ARQ 协议,408 中经常作为 GBN 和 SR 的对比基础出现。常考信道利用率的计算,以及协议在各种异常情况下的处理流程。
考频:★★★
协议原理
停止-等待(Stop-and-Wait)协议的核心思想:发送方每发出一帧后,就停下来等待接收方的确认(ACK)。收到 ACK 后才能发送下一帧。
这是最朴素的可靠传输策略——一次只发一帧,确认一帧再发下一帧。
三种异常情况
情况一:正常传输
一切顺利,交替发送帧 0 和帧 1。
情况二:数据帧丢失或出错
数据帧丢了或者接收方检测到帧出错后直接丢弃。发送方在超时定时器到期后重传该帧。
关键机制: 发送方每发出一帧就启动一个超时定时器。在定时器到期之前如果没收到 ACK,就认为帧丢了,自动重传。这就是 ARQ(Automatic Repeat reQuest,自动重传请求)。
情况三:ACK 丢失
接收方实际已经收到了帧 0,但 ACK 丢了。发送方超时后重传帧 0,接收方根据帧编号发现是重复帧,丢弃数据但重新发送 ACK。
这就是为什么帧需要编号——没有编号的话,接收方无法判断收到的帧是新帧还是重传帧。
帧编号:0 和 1 交替
停止-等待协议只需要 1 位编号,即 0 和 1 交替使用。因为在任何时刻,发送方最多只有一个未确认帧,只需要区分"当前帧"和"上一帧"即可。
- 发送帧 0 → 等 ACK 0 → 发送帧 1 → 等 ACK 1 → 发送帧 0 → ...
- 序号空间大小 =
- 发送窗口 = 1,接收窗口 = 1
信道利用率
停止-等待协议的最大问题是信道利用率低。大部分时间发送方都在等待 ACK,信道处于空闲状态。
设:
:发送一帧的时间 :发送一个 ACK 的时间(通常很短,可忽略) :往返传播时延
如果忽略 ACK 的发送时间和处理时间:
这里
数值例子: 数据率 1 Mbps,帧长 1000 bit,单程传播时延 20 ms。
只有 2.4% 的信道利用率,在长距离高速链路上这种协议几乎不可用。
交互可视化
优缺点
| 方面 | 评价 |
|---|---|
| 优点 | 实现简单,逻辑清晰 |
| 缺点 | 信道利用率极低,尤其在高带宽长时延链路上 |
| 适用场景 | 低速短距离链路 |
改进方向:允许发送方在收到 ACK 之前连续发送多帧 → 滑动窗口协议(GBN、SR)。
易错点
1. 超时时间的设置
超时时间应该略大于"帧的往返时间 + 对方处理时间"。设得太短会导致不必要的重传,设得太长会浪费等待时间。
2. ACK 也可能出错
如果 ACK 帧在传输中出错,发送方无法识别这个 ACK,效果等同于 ACK 丢失,同样会触发超时重传。
3. 信道利用率公式中的
高频考点清单
- 停止-等待协议在帧丢失、ACK 丢失两种情况下的处理流程
- 帧编号只需 1 位(0 和 1 交替)
- 发送窗口 = 1,接收窗口 = 1
- 信道利用率公式:
- 给定数据率、帧长、传播时延,计算信道利用率
- 与 GBN、SR 的对比