发送方发送一帧后停止,等待接收方的确认(ACK),收到确认后才发送下一帧。
发送方 接收方
│ │
│──── 发送帧0 ────→│
│ │ 接收帧0
│←── ACK1 ─────────│ (ACK1表示期望收到下一帧序号为1)
│ │
│──── 发送帧1 ────→│
│ │ 接收帧1
│←── ACK0 ─────────│ (ACK0表示期望收到下一帧序号为0)
│ │
时间→
发送方: [发送0]────等待────[收到ACK1]──[发送1]────等待────[收到ACK0]
接收方: [收到0,发ACK1] [收到1,发ACK0]
发送方: [发送0]────等待────[超时]──[重传0]────等待────[收到ACK1]
接收方: [收到0(有错),丢弃] [收到0(正确),发ACK1]
发送方: [发送0]────等待────[超时]──[重传0]────等待────[收到ACK1]
接收方: [未收到] [收到0(正确),发ACK1]
发送方: [发送0]────等待────[超时]──[重传0]────等待────[收到ACK1]
接收方: [收到0,发ACK1] ↓ACK丢失 [收到0(重复),丢弃,重发ACK1]
发送方: [发送0]──[等待]──[收到ACK1]──[发送1]──[收到迟到的ACK1(忽略)]
接收方: [收到0,发ACK1(迟到)] [收到1,发ACK0]
$$U = \frac{T_D}{T_D + RTT + T_A}$$
简化:$U \approx T_D / (T_D + RTT)$
帧长 $L=1000\text{B}$,数据速率 $C=1\text{Mbps}$,$RTT=20\text{ms}$。
$T_D = 1000 \times 8 / 1 \times 10^6 = 8\text{ms}$
$U = 8 / (8 + 20) = 8/28 \approx 28.6\%$
| 考点 | 说明 |
|---|---|
| 信道利用率计算 | $U = T_D / (T_D + RTT)$ |
| 各种差错情况分析 | 帧出错 / 丢失、ACK 丢失 / 迟到 |
| 序号交替规则 | 0 和 1 交替,ACK 表示期望收到的下一帧序号 |
| 与 GBN / SR 的对比 | 窗口大小、信道利用率 |
ACK1 表示"已正确收到帧 0,期望下一帧序号为 1"。↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。