数据链路层滑动窗口协议
1. 三种协议对比表
特性 | 停止-等待协议 | GBN协议 | SR协议 |
---|---|---|---|
窗口大小 | 发送 = 1,接收 = 1 | 发送 = W (1<W≤2ⁿ-1),接收 = 1 | 发送 = C,接收 = R |
确认方式 | 单个确认 | 累积确认 | 选择性确认 |
重传策略 | 超时重传 | 回退N帧重传 | 选择性重传 |
接收缓冲区 | 不需要 | 不需要 | 需要 |
信道利用率 | 最低 | 中等 | 最高 |
典型窗口限制 | - | W ≤ 2ⁿ-1 | C + R ≤ 2ⁿ 且 R ≤ C 且 R ≤ 2ⁿ⁻¹ |
2. 关键机制图解
2.1 GBN协议运行流程
图片解析:连续ARQ协议中,接收方累积确认
是对按序到达的最后一个分组的确认:
发 0到7
只收到 0 2 3确认
说明:0123已被接收
只需要重传4 5 6 7
因为1的确认只是丢了,不代表没收到1
2.2 SR协议运行流程
图片解析:SR采用逐个确认
发 0到2
只收到1的确认
说明:0 2 超时
因此重传0 2
此时1的确认不是累积确认,可以认为0丢了
3. 窗口大小计算
3.1 最大窗口限制
协议 | 发送窗口(W) | 接收窗口( R) | 约束条件 |
---|---|---|---|
GBN | W ≤ 2ⁿ-1 | R=1 | - |
SR | W ≤ 2ⁿ⁻¹ | R ≤ 2ⁿ⁻¹ | W + R ≤ 2ⁿ |
示例(n=3位序号):
- 此时用GBN,能得到最大窗口:7
- SR典型配置:W=4, R=4,且这里W拉到最大只能是6,一样小于GBN的7
3.2 信道利用率
流量控制-最大信道利用率公式:
W发送窗口大小 × t1发数据发送时延 /( t1 + RTT往返传播时延 + t2确认数据发送时延 )
所以W发送窗口要大,利用率才会变高。
t1:发送方的发送时延
t2:确认方的发送时延
4. 典型计算题
4.1 最大利用率比较
给定条件:
- 帧序号3位
- 忽略确认帧传输时间
- 发送窗口=接收窗口
计算结果:
协议 | 最大窗口 | 利用率排序 |
---|---|---|
停止-等待 | W=1 | U1最低 |
GBN | W=7 | U2最高 |
SR | W=4 | U1<U3<U2 |
4.2 流水线传输时延
题目:
- 文件大小:1MB
- 带宽:100Mbps
- 分组大小:1000B
- 计算总时延
解答:发送总时延(流水线)= 文件的发送时延 + 一个分组的转发时延 = 1MB/100Mb/s + 1000B/100Mb/s = 80.08ms
\begin{aligned}
t_{total} &= \frac{1MB}{100Mbps} + \frac{1000B}{100Mbps} \\
&= \frac{8 \times 10^6}{100 \times 10^6} + \frac{8000}{100 \times 10^6} \\
&= 0.08s + 0.00008s \\
&= 80.08ms
\end{aligned}
5. 易错点
-
确认机制混淆:
- GBN的ACKn表示"期望收到n号帧"(即n-1及之前已收到)
- SR的ACKn表示"n号帧已收到"
-
窗口大小限制:
- SR协议要求W + R ≤ 2ⁿ(不是W ≤ 2ⁿ-1)
- 实际应用中常取W = R = 2ⁿ⁻¹
-
性能比较:
- 信道利用率:GBN > SR(当窗口相同时)
- 实际效率:SR > GBN(因减少不必要的重传)