后退N帧协议(GBN)
- 克服了停等协议的缺点
- 发送方发送多个帧,接收方返回多个帧
- 后退N帧协议类似于流水线技术。必须增加序号范围,发送方需要缓存多个分组。
后退N帧协议中的滑动窗口
- 存在的帧类型
- 发完被确认的
- 已经发送但等待确认的
- 还能发送的,存在窗口总的
- 还不能发送的,在窗口外的
- 接收窗口
- 接收方维持一段连续的允许接收帧的序号。
- GBN必须响应的三件事
- 上层的调用
- 收到了一个ACK 对n号帧采用累积确认的方式,表明接收方已经收到n号帧和它之前的全部帧。
- 超时事件hexo
- GBN要做的事
如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将改帧中的数据交付给上层(网络层) - 滑动窗口长度
若采用n个比特对帧编号,那么发送窗口的尺寸Wr应满足,若发送窗口过大,就会使得接收方无法区别新帧和旧帧。 - GBN协议重点总结
- 累积确认(偶尔捎带确认)
- 接收方只按顺序接收帧,不按顺序的丢弃
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为2的n方-1,接收窗口大小为1。
选择重传协议(SR)
- 累积确认,会导致批量重传。
- 解决办法:设置单个确认,加大接收窗口,设置缓存机制,缓存乱序到达的帧。
- SR发送方必须响应的三件事
- 上层的调用 (SR发送方检查下一个可用于该帧的序号。假如序号位于发送窗口内,则发送数据,否则缓存数据,或者返回给上一层之后再传输)
- 收到了一个ACK
- 超时事件(每个帧都有自己的定时器,一个超时事件发生后只能重传一个帧)
- SR接收方要做的事
对于窗口内的帧,来者不拒。 - 选择重传协议中的窗口
对于选择重传协议来说,发送窗口最好等于接受窗口。(大了会溢出,小了没意义)
WTmax=WRmax=2的(n-1)方。 - SR协议重点总结
- 对数据帧逐一确认,收一个确认一个
- 只重传出错的帧
- 接收方有缓存(WTmax=WRmax= 2n-1方)