dw做aspx网站,python基础教程推荐,深圳家装,中企动力科技股份有限公司广州分公司引言
GBN协议的弊端
累计确认#xff0c;从而导致某一帧错误后会批量重传。
可行的解决方案
可以只重传出错的帧#xff0c;设置单个确认#xff0c;同时加大接收窗口#xff0c;设置接收缓存#xff0c;缓存乱序到达的帧。这也就是选择重传协议SR。
SR中的滑动窗口 …引言
GBN协议的弊端
累计确认从而导致某一帧错误后会批量重传。
可行的解决方案
可以只重传出错的帧设置单个确认同时加大接收窗口设置接收缓存缓存乱序到达的帧。这也就是选择重传协议SR。
SR中的滑动窗口
如图所示为SR中的发送窗口假设此时3的确认帧已经收到 可分为以下部分
发送完被确认的01
发送完等待确认的24
目前可发送5
不可发送的其余的
再看接收方假设此时5号帧没有收到 希望收到还未收到5号帧
收到且确认的6号帧
等待接收的70
SR发送方必须响应的事件
上层的调用
从上层收到数据后SR发送方检查下一个可用于该帧的序号如果序号位于发送窗口内则发送数据帧否则就像GBN一样要么将数据缓存要么返回给上层之后再传输。
收到ACK
如果收到ACK假如该帧序号在窗口内则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界最左边第一个窗口对应的序号则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧则发送这些帧。
超时事件
每个帧都有自己的定时器一个超时事件发生后只重传一个帧。
SR接收方要做的事
对于窗口内的帧无条件接收
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存并返回给发送方一个该帧的确认帧收到谁确认谁直到所有帧即序号更小的帧皆被收到为止这时才可以将一批帧按序交付给上层然后向前移动滑动窗口。
如果收到了窗口下界之前的帧就返回一个ACK。其他情况就忽略该帧。
运行中的SR
假设发送窗口和接收窗口都为4发送方发送0帧接收方收到0帧并回复0帧确认由于0帧是接收窗口下界于是移动窗口使得窗口下界为第一个未被接收的帧1号帧同时把新加入帧4号帧的状态置为可接收状态 发送方发送1帧接收方收到1帧并回复1帧确认由于1帧是接收窗口下界于是移动窗口使得窗口下界为第一个未被接收的帧2号帧同时把新加入帧5号帧的状态置为可接收状态 发送方发送2帧但是2帧丢失接收方未收到2帧
发送方发送3帧接收方收到3帧缓存三帧发送ACK3
发送方收到ACK0由于窗口下限被确认所以窗口右移一个发送4帧接收方收到4帧缓存发送ACK4
发送方收到ACK1由于窗口下界被确认所以窗口右移1个发送5帧接收方接收5帧缓存发送ACK5 发送方2帧超时未收到2帧确认重新传2帧这次接收方收到了2-5帧交付发送给上层网络层发送ACK2
发送方收到ACK3但是无帧可发等待一直到ACK2到达然后下界移至6.
滑动窗口长度
发送窗口最好等于接收窗口
大了会溢出小了没意义
存在以下公式
其中分别是发送窗口和接收窗口大小n是帧号的比特位数。
SR协议重点总结
对数据帧逐一确认收一个确认一个
只重传出错帧
接收方有缓存