通道在建立了以后,就需要需要考虑差错控制(EC)与流量控制(FC)
此时可以参考滑动窗口的概念
滑动窗口在数据链路层的HDLC协议与传输层的TCP协议等都有应用
滑动窗口结合ARQ(AutomaticRepeatReQuest)自动重传协议
- Go-back-N型:错误就回退N帧后全部重发
- Select型:只重发丢失的帧
所谓“发送窗口”就是发送方在收到确认帧之前能连续发送的数据帧的数量(所有窗口下的数据帧都要缓冲,以备重发),而每当收到一个确认帧,就可以多发送一个数据帧,也就是“窗口向后滑动了一帧”
另外接收方在收到错误帧的情况下依然可以接收数据帧的数量也可以叫做窗口
这是“接收窗口“
Go-back-N型:
发送方对于发送的每一个数据帧启动一个计时器,然后在窗口界限下连续发送数据帧此时有三种情况
1. 接收方回应数据帧i丢失,从编号i开始,所有帧重发,此时接收方
2. 没有收到接收方回应,计时器超时,窗口下所有帧全部重发(因此对于Go-back-N型,虽然发送方对于每一个帧都开启一个计时器,但只有窗口的第一个计时器是有用的)
3. 收到接收方回应成功接收,窗口向下滑动一帧
如果数据帧的编号是m位,那么理论上发送方大小不应超过2^m,保证编号对应唯一的数据帧;接收方不存在窗口,只要接收的数据帧错误,就停下等待
Select型:
与Go-back-N型同样地,发送方对于发送的每一个数据帧启动一个计时器,然后在窗口界限下连续发送数据帧此时有三种情况
1. 接收方回应数据帧i丢失,只重发编号为i的数据帧
2. 没有收到接收方回应,计时器超时,只重发超时的数据帧
3. 收到接收方回应成功接收,窗口向下滑动一帧
如果数据帧的编号是m位,那么理论上发送方与接收方窗口大小不应超过(2^m)/2,这是因为发送方与接收方都存在窗口,窗口大小之和不应超过2^m(模值)
所以每个窗口大小应该小于(2^m)/2