首页 > 技术文章 > 停止-等待协议

lhy55 2019-11-27 21:20 原文

停止-等待协议
从名称上可以看出,停止-等待协议是基于停止-等待流量控制技术的。从滑动窗口的角度来看就是其发送窗口大小等于 1,接收窗口大小也是 1.
基本思想:发送方传输一个帧之后,必须等待对方的确认才能发送下一帧。如果在规定的实践之内没有收到确认,则发送方超时,并重传原始帧。
有人会问,停止-等待流量控从v行程序制技术(这里是停止-等待流量控制技术而不是停止-等待协议)为什么要一直在等待?为什么不设置一个规定时间?我们来看协议的指定。首先协议需要建立在一定的技术(停止-等待流量控制技术)之上,然后在此技术上需要考虑一切可能突发的不利状况(可以理解:协议 = 技术 + 考虑不利因素,即 停止-等待协议 = 停止-等待流量控制技术 + 不利因素),设定规定时重传就是为了解决这些不利因素。如果不设定时间就会造成死锁,这样就无法推进,在这里可以联想操作系统的死锁,如果没有外力参与打破死锁,就会一直等待下去,而这个外力就是重传计时器。
停止-等待协议会出现的差错主要有以下两大类:
帧一般被分为数据帧和确认帧。
第一类错误就是数据帧被损坏或者丢失,那么接收方在进行差错校验时,会被检测出来。处理数据帧被损坏的情况时,使用计时器可以解决。这样发送方再发送一个帧之后,如果数据能够被正确的接收到,那么就接收方就发送一个确认帧,没有问题;如果接收方接收到的是一个被损坏的数据帧,则直接丢弃,此时发送方处于等待状态,直到计时器超市,发送方就会重新发送这个数据帧,如此重复,直到这一个数据帧无错误地到达接收方为止。
第二类错误就是确认帧被破坏或者丢失。一旦确认帧被破坏或者丢失,造成的后果就是发送方会不断地重新发送该帧,从而导致接收方不断地重复接受该帧。如何解决?显然,对于接收方而言,需要有能力区分某一帧是新帧还是重复帧。解决方法很简单,让发送方再每一个待发地帧地头部加一个编号,而接收方对每一个到达的帧地编号进行识别,判断是新帧还是需要抛弃的重复帧。

推荐阅读