Dzming.Li

数据链路层

3.4 流量控制与可靠传输机制

3.4.1 流量控制、可靠传输

流量控制是指接受方控制发送方的速率,别一口气传太多接受不过来,让接受方有足够的缓存空间接受每一帧。

可靠传输是为了避免有些丢失或出现错误,要求重传。可靠传输方案着眼于重传。对于链路层来说,可靠传输并不是必需的,因为总是可以把任务交给上层,不过在底层不够可靠的情况下提供可靠传输可以提高效率。,有线的局域网,也就是接下来介绍的以太网,并不要求可靠传输,而无线的局域网就会实现可靠传输。

3.4.2 停止-等待协议

发送方每次只允许方式一帧,接受方每次成功接受一帧后,返回一个确认帧。

复制王道的图

3.4.2.1 停-等协议利用率计算

我们可以计算得到停止-等待协议的利用率 𝑈sender 为

𝑈Sender=𝑡Seg𝑡Seg+RTT+𝑡ACK

3.4.3 滑动窗口机制

3.4.3.1 滑动窗口协议工作原理

滑动窗口机制: 在任意时刻,发送方维持一组连续的帧序号,称之为发送窗口。接受方也维持一组帧序号,称接受窗口。因此每次确认都是确认一组,没收到确认的情况下还可以发几帧。

k比特帧序号需要和发送窗口和接受窗口满足如下关系

3.4.3.2 滑动窗口协议信道利用率计算

3.4.3.3 滑动窗口协议大小与分组序号字段比特位数间的约束关系

3.4.4 后退N帧协议(GBN)

停止等待协议的利用率很低,在大多数时间内,我们都在等待。而滑动窗口的好处就在于,允许我们等待的时候继续发。

接受方的窗口长度为1,对于确认,接受方可以对每一个包逐一发送确认,也可以累积确认。但总而言之,只要确认了,就说明之前的全都被确认了。
同时我们可以讲一下公式:

𝑈=𝑁𝑇𝐷𝑇𝐴+RTT+𝑇𝐷

当我们发送出一帧之后,在等待这一帧回来的时间中,要让信道利用率最高,

最理想的情况就是N足够大,我们一直在发;但是当N不够大的时候,我们的帧长越大,我们发送的帧就越少。

我们要尽可能的用慢我们的带宽,也就是发送速率。当数据帧很大的时候,我们的往返时间就一直在尽可能的多花时间在处理带宽上。

左边的发送窗口

GBN协议的窗口固定为1,严格按序接受。

假设我们的缓存窗口仍然是1,那么我们就没办法

如果某一帧超时或者出错,发送方不但需要重传这一帧,还要重传之后所有发送了但还没被确认的帧。

那么在选择重传协议下,假设发送窗口发了5个包0-4,接受窗口存了3个包,我们此时ACK0

𝑊𝑠≤2𝑘−1

这是因为序号是循环使用的。假设发送窗口发了8个包,8个包全部丢失了,我们不得不ACK0来表示需要接受第一个包,但因为序号循环使用。发送方会以为全部收到了。

3.4.4.1 选择重传协议(SR)

选择重传协议需要逐一确认每个包。

选择重传协议