数据链路层流量控制滑动窗口机制窗口个数问题

0.009字数 472阅读 574
汤神镇楼

数据链路层的流量控制是限制发送方发送数据的速率。

接受端的接受窗口:每收到一个数据后,接收窗口就向后滑动一个位置并返回确认帧。

发送端的发送窗口:发出一个数据后设置一个计时器,收到确认帧后发送窗口向后滑动一个位置,如果超时则重新发送数据帧。


发送窗口



停止等待协议:发送窗口为1,接收窗口为1。

后退 N 帧:接收窗口为1。

故停止等待协议和后退 N 帧协议可以保证帧的有序接收。


后退N帧协议发送窗口个数 <= 2^n-1

当 n = 3 时,帧的序号为 0 - 7,此时若发送窗口 = 8,接收窗口每收到一个数据帧都会发送一个确认帧,窗口向前滑8个后指向下一组的 0 ,若 8 个确认帧全部丢失,发送端序号为 0 的数据帧会超时重发,接收端再收到序号为 0 的数据帧时会误以为是新的帧,此时就出现了差错。可以看到,若发送窗口 = 7 时就不会出现这种情况。


选择重传协议,新窗口序号和旧窗口序号不应该拥有同样的序号。故发送窗口 = 接收窗口 <= 2^(n-1)


当窗口个数 > 2^(n-1) 时的错误情况

可以看到当发送窗口与接收窗口的个数 = 5 时,发送端发送5个数据后等待,接收端收到数据帧后向后滑动 5 个并发送确认帧,此时接收窗口中会含有下一轮序号为 0 的数据帧,若确认帧丢失,发送端超时重传时又会出现新旧帧不分的错误。