首页 > 编程知识 正文

数据链路层的流量控制由接收方控制,数据链路层的流量控制方法

时间:2023-05-05 12:18:32 阅读:181739 作者:4671

数据链路层协议的一个重要功能是进行流量控制,那么链路层如何进行流量控制呢?

首先什么是流量控制? 为什么要进行流量控制?

让我们看看下面链接的跳转。 如果向发送方发送数据,发送方每秒发送100个数据包,而接收方每秒只能处理50个数据包,会发生什么现象? 接收方在缓存中大量缓存收到的包,直到缓冲区已满。 装满了会怎么样? 其次,发生最无法忍受的情况,缓冲器溢出,发生丢包。 因此,接收方必须在缓冲器填满时通知发送方降低发送速度。 这就是链路层的流量控制。 流量控制用于防止实体发送的数据覆盖实体接收的数据。

流量控制有什么方法呢? 主要有停止-等流量控制和滑动窗流量控制两种。 让我具体说明一下:

1 .停止等业务控制:发送方实体发送一帧,在接收方实体完成接收处理后,必须回复对一帧的确认,表示自己已经同意接收下一帧; 发送方在收到该确认后,可以发送下一帧。 停止等是指接收侧可以通过简单地停止发送确认来阻止数据流的发送。

停止等方法有点明显。 其控制非常简单,发送方不仅是数据,还有接收确认,接收方每次发送一个确认就可以了。 但是,他也有明显的缺点。 效率低。 考虑一下下面的情景。 如果发送两端相距1000km的数据包长度424b,光纤传输数据速率为155Mbps,则传输时间(实体发送数据的时间) Tframe为424/155000000=2.7*10^-6。 但是,媒体的传输时间Tprop达到了100000/,也就是说线路长时间空闲,效率很低。

2 .因为是滑动窗口流程控制,所以无论什么时候都只有一个发送效率很低,所以我很自然地认为一次发送n个,等待一个确认的话效率会不会变高。 这就是滑动窗口协议的思想。 滑动窗口协议:通过窗口控制连续发送的数据量。 注:必须为每个帧分配序列号。 接收方必须按照序列号进行接收,并检查是否有错误。

如上图所示,发送窗口为5,因此一次最多可以发送5帧。 因为只有一个受理窗口,所以一次只能接收一帧。 在这里可以看到,发送窗口和接收窗口可以不同。 发送方一次发送5个帧,接收方接收并确认,发送方接收确认并将窗口向前发送下一帧(5、6、7、0…)。 接收方在发送确认后,窗口也向前移动,等待接收下一帧。

这里需要注意的第一点是,序列号是循环利用的。 这个我很清楚。 因为总共有那么多存储空间,所以一定会从7回到0。 否则,它会一直变大,没有存储空间。 其次,滑动窗口只是一个编号,滑动时会发送和接收对应的帧。 并不表示窗口中就是这个帧。 实际上,应该有专用的缓冲区来存储这些帧。 当滑动窗口滑动到那里时,对应于滑动窗口的编号,去取缓冲区中有帧编号的帧就可以了。

请看上面的图。 最初在滑动窗口中出现的是0~4共5帧,接收方的滑动窗口为1帧,编号为0。 如果发送方一次发送2帧0、1,则滑动窗口滑动2位,帧编号为2~6,如果接收方接收到0、1,则他的滑动窗口也为2。 接下来是接收帧编号2的帧,表示期待向发送端发送ACK2,更具体地说:

发送端在连续发送5帧后,每次再发送时窗口下限前进(窗口变小),每次收到之前的确认时窗口上限前进(窗口变大恢复到原来的大小)。 另一方面,在接收端,每次接收帧时,提前窗口下限(缩小窗口),在接收到帧并发送确认后,提前窗口上限(增大窗口恢复到原来的大小)。 这样可以保证接收方和发送方的窗口大小不会相对变化,不会随着发送时间的推移而变大或变小。

只能将与发送窗口中的序列号相对应的帧发送到发送方。 对接收方来说,发送确认的前提条件是接收到的帧在自己的受理窗口中,检查正确进行。 这样,您就可以发回确认,发回确认,然后继续进行自己的窗口上限。

对于滑动窗口协议,由于总是可以发送,所以效率大幅提高。 如果窗口大小n大于传输延迟与传输时间之和t,则传输延迟与传输时间之和t (该时间可以认为是从发送一帧到进入信道的时间,以及返回确认的时间之和) ) ) 在NT的情况下,将最多n个帧集中发送,不能再频繁发送。 由于循环序列号的问题,不能同时存在两个相同序列号的帧,因此如果一次发送最多n个帧,则会在信道中出现空闲,并且效率将为N/T。

无论是停止等协议还是滑动窗口协议,接收端都将自己的反馈(ACK )发送给接收端,发送端通过该反馈判断接收端的状态并发送。 停止等协议只是滑动窗口协议的特殊版(WT=1)。 这就是链路层用于流量控制的方法。

这一篇可以和我的下一篇《数据链路层的差错控制ARQ》一起看。 两种思想是共通的,所以都是停止等和滑动窗。 一起看有助于迅速理解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。