GBN(后退n帧协议)与SR(选择性重传协议)
Posted issue是fw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GBN(后退n帧协议)与SR(选择性重传协议)相关的知识,希望对你有一定的参考价值。
索引
后退 N \\rm N N帧协议 G B N \\rm GBN GBN
G B N \\rm GBN GBN发送方
Ⅰ.上层调用
上层要发送数据时,发送方先检查发送窗口是否已满。
如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示窗口已满.
Ⅱ.收到 A C K \\rm ACK ACK
G B N \\rm GBN GBN协议中,对 n n n号帧的确认采用累计确认,标明接收方已经收到 n n n号帧和它之前的全部帧
Ⅲ.超时事件
若出现丢失和时延过长帧时,发送方将重传所有已发送但未收到确认的帧
G B N \\rm GBN GBN接收方
Ⅰ.若正确收到 n n n号帧,并且按序,那么接收方为 n n n帧返回一个 A C K \\rm ACK ACK,并将该帧中的数据部分交给上层
Ⅱ.其余情况都丢弃帧,并为最近按序接收的帧重新发送 A C K \\rm ACK ACK.接收方无需缓存任何失序帧,只需要维护一个信息: e x p e c t e d s e q n u m \\rm expectedseqnum expectedseqnum(下一个按序接收的帧序号)
例子:
比如现在接收方收到了序号 0 , 1 0,1 0,1的帧,那么 e x p e c t e d s e q n u m = 2 \\rm expectedseqnum=2 expectedseqnum=2
但是此时来了一个序号为 3 3 3的帧,那么会直接丢弃,并返回一个 A C K 1 \\rm ACK1 ACK1
一个 G B N \\rm GBN GBN协议的工作图解
这样做的弊端其实非常明显!!
一旦中间有一个帧丢失,那么需要重发后续所有帧!!这就做了很多无用功,所以有了
选择性重传协议 S R \\rm SR SR
S R \\rm SR SR发送方
Ⅰ Ⅰ Ⅰ.上层的调用
从上层收到数据后, S R \\rm SR SR发送方检查下一个可用于该帧的序号.如果序号位于发送窗口内,则发送该数据帧.否则要么将数据缓存,要么返回给上层之后再传输
Ⅱ . Ⅱ. Ⅱ.收到 A C K \\rm ACK ACK
S R \\rm SR SR发送方将这个被确认的帧标记为已接收.如果该帧序号是窗口的下界,则窗口向前移动到最小序号的未被确认帧处.如果窗口移动了且有序号在窗口内的未发送帧,则发送这些帧.
Ⅲ . Ⅲ. Ⅲ.超时事件
只重传超时帧
S R \\rm SR SR接收方
来者不拒(窗口内的帧)
S R \\rm SR SR接收方将确认一个正确接收的帧而不管其是否按序,失序的帧将被缓存,并返回给发送方一个该帧的确认帧[收谁确认谁],直到所有帧(序号更小的帧)都被收到为止,这时将一批帧顺序交付上层,然后向前移动滑动窗口
以上是关于GBN(后退n帧协议)与SR(选择性重传协议)的主要内容,如果未能解决你的问题,请参考以下文章
王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR