TCP流量控制
接收方控制发送方的发送速率就叫流量控制。 接收方每次收到数据包,可以在发送确定报文的时候,同时告诉发送方自己的缓存区还剩余多少是空闲的,我们也把缓存区的剩余大小称之为接收窗口大小,用变量win来表示接收窗口的大小。 发送方收到之后,便会调整自己的发送速率,也就是调整自己发送窗口的大小,当发送方收到接收窗口的大小为0时,发送方就会停止发送数据,防止出现大量丢包情况的发生。 当发送方收到接受窗口 win = 0 时,这时发送方停止发送报文,并且同时开启一个定时器,每隔一段时间就发个测试报文去询问接收方,打听是否可以继续发送数据了,如果可以,接收方就告诉他此时接受窗口的大小;如果接受窗口大小还是为0,则发送方再次刷新启动定时器。(为了避免win>0的数据包丢失)
数据链路层流量控制
与TCP流量控制的区别: (1)数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
(2)数据链路层流量控制的手段是接收方收不下就不回复确认帧。传输层的流量控制手段是接收端通过滑动窗口告诉发送方。
数据链路层的流量控制方法主要是停止等待协议和滑动窗口协议,滑动窗口协议还包括后退N帧协议GBN和选择重协议SR。
停止等待协议就是每发送完一个帧就停止发送,等待对方的确认帧,在收到确认帧后再发送下一个帧。
后退N帧协议相比于停止等待协议,它不需要等待前一个帧的确认帧便可发送后面的帧,之所以是叫后退N帧,是当有一个帧x发送失败的话,x之后的所有帧都需要重传。如下图: (后退N帧采用累积确认机制,标明接收方已经收到n帧和它之前的全部帧。)
选择重传协议SR解决了后退N帧协议GBN数据帧丢失需要重传确认的问题,选择重传协议SR解决问题的办法是设置单个确认(与累积确认相区别),同时加大接收窗口,设置接收缓存(缓存乱序帧)。如下图:
参考
1.通俗易懂讲解TCP流量控制机制,了解一下 2.选择重传协议(SR)
|