UK美女同事,让我编个关于Go-back-N.
KAO,我这水准哪是做这东东的料呀.
先看看Go-back-N.是嘛.
--------------------------------------------------------------
用以使发送方确认接收方是否正确收到了由它发送的数据信息的方法称为反馈差错控,制。通常采用反馈检测和自动重发请求(ARQ)两种基本方法来实现。
1.反馈检测法
反馈检测法也称回送校验法或"回声"法,主要用于面向字符的异步传输中,如终端与远程计算机间的通信。这是一种元须使用任何特殊代码的差错检测法。双方进行数据传输时,接收方将接收到的数据(可以是一个字符,也可以是一帧)重新发回发送方,由发送方检查是否与原始数据完全相符。若不相符,则发送方发送一个控制字符(如DEL)通知接收方删去出错的数据,并重新发送该数据;若相符,则发送下一个数据。反馈检测法原理简单,实现容易,也有较高的可靠性。但每个数据均被传输两次,信道利用率很低。这种差错控制方法一般用于面向字符的异步传输中,因为这种场合下信道效率并不是主要矛盾。
2.自动重发请求法(ARQ法)
实用的差错控制方法,既要传输可靠性高,又要信道利用率高。为此可使发送方将要发送的数据帧附加一定的冗余检错码一并发送,接收方则根据检错码对数据帧进行差错检测,若发现错误,就返回请求重发的应答,发送方收到请求重发的应答后,便重新传送该数据帧。这种差错控制方法就称为自动重发请求法(Automatic Repeat reQuest),简称ARQ法。ARQ法仅需返回少量控制信息,便可有效地确认所发数据帧是否被正确接收。ARQ法有几种实现方案,空闲重发请求(Idle RQ)和连续重发请求是其中最基本的两种方案。
(1)空闲重发请求(Idle RQ)。空闲重发请求方案也称停等(Stop and Wait)法,该方案规定发送方每发送一帧后就要停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。空闲重发请求方案的实现过程如下:
①发送方每次仅将当前信息帧作为待确认帧保留在缓冲存储器中:
②当发送方开始发送信息帧时,随即启动计时器;
③当接收方收到无差错的信息帧后,即向发送方返回一个确认帧;
④当接收方检测到一个含有差错的信息帧时,便舍弃该帧;
⑤若发送方在规定时间内收到确认帧,即将计时器清零,继而开始下一帧的发送;
⑥若发送方在规定时间内未收到确认帧(即计时器超时),则应重发存于缓冲器中的待确认信息帧。
从以上过程可以看出,空闲RQ方案的收、发送方仅需设置一个帧的缓冲存储空间,便可有效地实现数据重发并确保接收方接收的数据不会重份。空闲RQ方案最主要的优点就是所需的缓冲存储空间最小,因此在链路端使用简单终端的环境中被广泛采用。
(2)连续重发请求(Continuous RQ)。连续重发请求方案是指发送方可以连续发送一系列信息帧,即不用等前一帧被确认便可发送下一帧。这就需要在发送方设置一个较大的缓冲存储空间(称作重发表),用以存放若干待确认的信息帧。当发送方收到对某信息帧的确认帧后,便可从重发表中将该信息帧删除。所以,连续RQ方案的链路传输效率大大提高,但相应地需要更大的缓冲存储空间。连续RQ方案的实现过程如下:
①发送方连续发送信息帧而不必等待确认帧的返回;
②发送方在重发表中保存所发送的每个帧的备份;
③重发表按先进先出(FIFO)队列规则操作;
④接收方对每一个正确收到的信息帧返回一个确认帧;
⑤每一个确认帧包含一个惟一的序号,随相应的确认帧返回;
⑥接收方保存一个接收次序表,它包含最后正确收到的信息帧的序号;
⑦当发送方收到相应信息帧的确认帧后,从重发表中删除该信息帧的备份;
⑧当发送方检测出失序的确认帧(即第n号信息帧和第n+2号信息帧的确认帧已返回,而n+1号的确认帧未返回)后,便重发未被确认的信息帧。
上面的连续RQ过程是假定在不发生传输差错的情况下描述的。如果差错出现,如何进一步处理还可以有两种策略,即Go-back-N策略和选择重发策略。Go-back-N策略的基本原理是,当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了n个帧后,若发现该n帧的前一帧在计时器超时后仍未返回其确认信息,则该帧被判定为出错或丢失,此时发送方就不得不重新发送该出错帧及其后的n帧。这就是Go-back-N(退回N)法名称的由来。因为,对接收方来说,由于这一帧出错,就不能以正确的序号向它的高层递交数据,对其后发送来的n帧也可能都不能接收而丢弃。Go-back-N法操作过程如图3.13所示。图中假定发送完8号帧后,发现2号帧的确认返回在计时器超时后还未收到,则发送方只能退回从2号帧开始重发。
Go-back-N可能将已正确传送到目的方的帧再重传一遍,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可与原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(Selective Repeat),其工作过程如图3.14所示。图中2号帧的否认返回信息NAK2要求发送方选择重发2号帧。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间. 发表于:2007.02.12 10:25
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12476590/viewspace-134078/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12476590/viewspace-134078/