后退N帧协议中的滑动窗口
GBN发送方必须响应的三件事
1、上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满看,则产生一个帧并将其发送;如果窗口已满,发送方只需要将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)
2、收到了一个ACK
GBN协议中,对于n号帧的确认采用累积确认的方式,表明接收方已经接收到n号帧和他之前的全部帧。
3、超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长时发送方的行为。就像在挺等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。
GBN接收方要做的事
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息: expectedseqnum(下一个按序接收的帧序号)。
滑动窗口的长度
GBN协议重点总结
- 累计确认(偶尔捎带确认(ACK带数据))
- 接收方只按顺序接收帧,不按序无情丢掉
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为 2的次方减1 ,接收窗口大小为1
例题1
例题2
GBN协议性能分析
- 因连续发送数据帧提高了信道利用率
- 在重传时必须把原来已经正确传送的数据帧重传,是传送效率降低
总结
笔记出处