选择重传协议-SR

本文详细介绍了SR选择重传协议的工作原理及特点,包括如何通过设置单个确认和接收缓存来提高传输效率,解决了GBN协议中累积确认带来的批量重传问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:由于GBN协议的弊端:
在累积确认的机制下,如果有错误的话,则发送方将会批量重传,
这样使效率降低。

那可不可以只重传出错的帧?
解决办法:
设置单个确认,同时加大接收窗口(相比于GBN协议)
设置接收缓存,缓存乱序到达的帧(GBN协议没有缓存,直接丢弃)

SR发送方必须要响应的三件事
1.上层的调用:
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号
位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。

2.收到了一个ACK:
如果收到了ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记记为已接收,如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处,如果窗口移动了,并且有序号在窗口内的未发送帧,则发送这些帧。

3.超时重传:
每一个帧都有自己的定时器,一个超时事件发生后只重传一个帧。

SR接收方要做的事:
来者不拒(窗口内的帧)
SR接收方将确认一个正确接收的帧而 不管其是否按序,失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口

滑动窗口可以无限吗?
发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
Wtmax = Wrmax = 2(n-1)次方

SR协议重点总结:
1.对数据帧逐一确认,收一个确认一个
2.只重传出错的帧
3.接收方有缓存
4.Wtmax = Wrmax = 2(n-1)次方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值