流量控制

掌握停等、回退N帧、选择性重传的过程以及窗口大小,可能在选择题中考察。

Stop Wait

停等 (Stop-and-Wait) 是一种基础的自动重传请求 (ARQ) 协议。其基本思想是在发送每个数据帧后都停下来,等待接收方的确认。只有在收到确认后,发送方才会继续发送下一个帧。由于这种方法在任何时刻只允许一个帧在传输中,因此它被称为“停等”。

0
1
2
0
1
停等协议
发送方
接收方

过程关键:

  1. 发送数据:发送方发送一个数据帧到接收方,并启动一个计时器等待确认。
  2. 等待确认:发送方在发送数据帧后处于等待状态,直到接收到确认或计时器到期。
  3. 确认的接收:接收方在收到数据帧后,检查其完整性(例如通过校验和)。如果数据帧正确,接收方会发送一个确认帧回到发送方。
  4. 计时器到期:如果发送方的计时器在收到确认之前到期,发送方会假设数据帧丢失或确认丢失,并重新发送数据帧。然后再次启动计时器。

GBN

在 回退N帧(GBN, Go Back N)协议中,发送方可以连续发送多个帧,而不需要等待每个帧的确认。但是,发送方需要为每个帧维护一个计时器。如果一个帧的计时器到期而没有收到确认,发送方会重新发送该帧及其之后发送的所有帧。

0
1
2
0
1
1
x
1
2
0
1
2
0
回退N帧
发送方
接收方

过程关键:

  1. 窗口大小:在GBN中,若帧序号的比特数为 $n$,则发送窗口的最大值为 $2^n - 1$,接受窗口的大小为 $1$。
  2. 发送过程:发送方连续发送窗口内的帧,每发送一个帧,都会为其启动一个计时器。
  3. 接收过程:接收方只接收期望的帧序号。如果接收到的帧是期望的,它会发送一个确认。如果接收到的帧不是期望的(可能是由于前面的帧丢失),它会丢弃该帧并重新发送对上一个正确接收的帧的确认。
  4. 超时和重传: 发送方通常只为 最早发送但未确认的帧(窗口内的第一个未确认帧)设置一个单一的超时定时器。 如果计时器到期,该帧及其之后发送的所有帧都会被重传。重传的原因是,如果一个帧丢失,后续的帧虽然可能已经到达接收方,但由于接收方的窗口大小为1,它们会被丢弃。
  5. 滑动窗口:当发送方收到一个帧的确认,它知道该帧及其之前的所有帧都已正确接收。于是,它会将窗口向前滑动,从而可以发送新的帧。

通过GBN, SR交互演示你可以更好理解GBN、SR的过程。

SR

选择性重传(SR,Selective Repeat)是另一种自动重传请求 (ARQ) 协议,它旨在解决 Go-Back-N 协议在高误码率环境下的效率问题。与 Go-Back-N 不同,Selective Repeat 只重传那些确实丢失的帧,而不是所有之后的帧。这使得 SR 在高误码率环境下比 GBN 更为高效。

0
1
2
0
1
2
x
1
0
1
2
0
选择性重传
发送方
接收方

过程关键:

  1. 窗口大小:在SR中,一般发送窗口和接受窗口大小一致,若帧序号的比特数为 $n$,则窗口大小最大为 $2^{n-1}$。
  2. 发送过程:发送方连续发送窗口内的帧,并为每个发送的帧启动一个计时器。
  3. 接收过程:接收方接收所有在其窗口范围内的帧,并为正确接收的每个帧发送确认。接收到的帧可能是乱序的,但接收方可以缓存这些乱序的帧,直到可以按正确的顺序将其传递给上层。
  4. 超时和重传:如果发送方的某个帧的计时器到期,只有这个特定的帧会被重传,而不是所有的帧。这是 SR 与 GBN 的主要区别。
  5. 滑动窗口:发送方和接收方的窗口都是动态移动的。当发送方收到一个帧的确认时,它会尝试滑动其窗口以发送新的帧。同时,接收方在将帧按正确顺序传递给上层后,也会滑动其窗口。
  6. 处理冲突的确认:考虑到网络的延迟,发送方可能在超时并重传一个帧后才收到其早期版本的确认。为了处理这种情况,SR 协议需要具有识别和丢弃重复确认的机制。

对比

停等协议(Stop-and-Wait)、GBN(Go-Back-N)、SR(Selective Repeat)是计算机网络中用于可靠数据传输的三种流量控制和错误处理协议。它们的主要目标是确保在不可靠的通信信道上的数据传输的可靠性。

重点注意接收方和发送方的窗口大小范围。

特性停等协议GBN 协议SR 协议
发送方窗口大小范围(序号位数为n)1最大为$2^n - 1$最大为$2^{n-1}$
接收方窗口大小范围(序号位数为n)1$1$与发送方窗口一致
发送方效率低(每帧等待确认)高(并发发送多帧)高(并发发送多帧)
接收方效率高(无需缓存多帧)低(需要缓存多帧)高(需要缓存多帧)
错误处理重传单个丢失帧重传从丢失帧开始的所有帧重传单个丢失帧或乱序帧
带宽利用率高(部分带宽利用)高(部分带宽利用)

窗口大小限制

$$\text{发送窗口大小} + \text{接受窗口大小} \le 2^n$$

滑动窗口协议是计算机网络中用于控制传输层数据流的一种机制。在这种协议下,发送窗口和接收窗口的大小有一个重要的限制,即它们的和不能超过序列号空间的大小。序列号空间是由能够用于标识帧的序列号的总数确定的,这通常是由序列号的位数决定的。

对于一个使用了 $n$ 位序列号的协议,序列号的范围是从 $0$ 到 $2^n-1$ 。因此,整个序列号空间的大小是 $2^n$ ,这意味着理论上最多可以有 $2^n$ 个不同的帧在传输中被唯一区分。

这个限制的主要原因是防止所谓的“序列号回绕”(Sequence Number Wraparound)。如果发送窗口和接收窗口的大小之和大于序列号空间的大小,那么就可能发生一个新的帧使用了一个老的、已经被使用的序列号,但是该帧可能还在网络中传输或者被延迟。接收方将无法区分这是一个新的帧还是重复的帧。

链路利用率计算

A
D
Time
Time
信号传播时间
帧传输时间
A
D
Time
Time
信号传播时间
帧传输时间
停等协议
滑动窗口协议,连续传输多个帧
发送帧
确认帧

假设信号传播时间为 $T_p$,一个数据帧的传输时间为 $T_d$,一个确认帧的传输时间为 $T_a$,发送窗口的最大值为 $N$,信号往返时间 $RTT = 2 \cdot T_p$。

在此情况下,信道利用率 $U$ = 发送数据的时间 / 从发送第一个帧的时间到收到第一个确认帧的时间:

$$U = \frac{N \cdot T_d}{RTT + T_d + T_a}$$

对于停等协议,信道利用率为

$$U = \frac{T_d}{RTT + T_d + T_a}$$

对于使用了滑动窗口的协议,一次性可以传输 $N$ 个数据帧,信道利用率为

$$U = \frac{N \cdot T_d}{RTT + T_d + T_a}$$

注意有些时候确认帧比较小,在这种情况下确认帧传输时间 $T_a$ 可以忽略。

此外,帧传输时间 $T_d$ = 帧大小 / 信道传输速率,信号传播时间 $T_p$ = 距离 / 信号传播速度。

视频讲解