GBN和SR的优劣比较

更新时间:2024-03-11 20:03:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

GBN和SR的优劣比较

计算机科学与技术四班 廖志勇 20070810411

摘要:GBN和SR协议是TCP协议中重要的两种解决流水线的差错恢复的方法,他们各自有各自的优缺点,在不同的数据传输条件下,人们将会有不同的选择。让大家了解两种方法的优劣本文做了简单的叙述。

关键字:GBN(Go-Back-N) SR(selective repeat)

GBN概念:

GBN是Go-Back-N协议的缩写。如果发送发发送了前五个分组,而中间的第三个分组丢失了。这是接收方志勇对前两个分组发出确认。发送方无法知道后面三个分组的下路,而只好吧后面的三个分组都再重新再重传一次,这个就叫做Go-back-n,表示需要在退回来重传已经发送过的n个分组。可见当通信线路质量不好时,连续ARQ协议会带来负面的影响。当它允许发方传输多个分组(当然得有多个分组的时候)而不用等待确认,但它也受限于再流水线中未确定的分组数不能超过最大允许的数值N。这个N通常被称为窗口长度(window size),因而根据其工作的特点,GBN协议也被形象地称为滑动窗口协议(sliding-window protocol)。

GBN特点:

因为网络中流量控制的原因,它需要对这些被发送的、未被确认的分组的数目N,否则就会造成网络的拥塞。在GBN协议中,发送方可以再窗口大小N的限制内发送足够多的分组,接收方接收到分组后就发送ACK给发送方(例如:接受到分组0,发送ACK 0),当如果发送方接收到连续的ACK(例如ACK 0和ACK 1)时,该窗口就向前滑动,发送方方便传输新的分组。在接收方,分组丢失了话,就必须从那个分组起再重新传那个丢失的分组号码之后的所有的分组(例如分组2丢失,因此分组3、4、5被认为是失序的分组被丢弃,必须再重新传)。但是,这样的话无需接收方准备一定空间的缓存来储存分组。

SR的概念:

SR是selective repeat的缩写,因为GBN协议发送方可能用多个分组“填充流水线”,因此便面了停等协议中所提到信道利用问题。前面提到的,GBN本身也存在性能问题,尤其是当窗口长度和贷款时延积都很大时,在流水线中会有很多分组。一个分组的差错就可能引起GBN重传大量分组,其中许多分组也许根本没有必要重传。SR协议通过发送方仅重传那些怀疑在接收方出错(即丢失或者受损)的分组而避免了不必要的重传。这种个别的、按需的重传要求接收方诸葛地确认正确接收的分组。再次用窗口长度N来限制流水线中未确认的分组数然而与GBN不同的是,发送发已经收到了对窗口中某些分钟的ACK。

SR的特点:

因为SR仅仅重传那些被怀疑为接收时出错的分组,因而相对来讲,可以节省一些时间,减少了不必要的重传。但是值得注意的是,在实现这样的功能的时

候,接收方需要一定的缓存来储存某些分组,例如分组0和分组1接收方接到了,并且交付,发送ACK0和ACK1给发送方,但是分组2丢失,没有接到,此时接收方只能继续接受分组3、4、5,分组3、4、5接受了,并且发送了ACK3、4、5给发送方,而分组3、4、5并没有直接交付,而是需要等到分组2接受到,然后一起分组2、3、4、5交付,ACK2发送。这样的机制相对来讲重传的包更少,但是需要缓存的空间也花费了一定的时间。

GBN和SR的弱点:

经过仔细分析,GBN和SR这两者机制必然也会有他们的弱点,在GBN协议中的一个最大的问题就是,当窗口大小N非常大时(例如为1000的话),而最开始的分组0错误了,就需要重传之后的999个分组,因此造成了时间上的损失,延时增加。并且对于SR协议而言,发送方和接收方并不是总能看到相同的结果,这也就说明两者的窗口不总是一致的。而SR协议会面临到的一个最重要的问题就是面临有限序号范围的现实时,发送方和接收方的窗口不同步会产生严重后果。这样的后果会导致接收方无法判断出该分组是一次重传还是下一个新的分组的,因而就SR的窗口不能够很大。

GBN和SR的优点:

但是换句话说,虽然上述说了GBN和SR的弱点,但是他们两个存在的话,必然有他们两个协议的优点。在GBN协议中,虽然得丢弃所有的时序分组,这看起来是一个弱点,其实也是GBN的一个优点。这样做的目的是因为,接收方必须按照正确的顺序将数据交付给上层,如果有分组错了,则可能要接收方缓存分组,最后按照正确的分组交付给上层。而GBN这样的做法的话一个很明显的优点就是接受缓存简单,即接收方不需要缓存任何的失序分组。我个人认为就是针对了GBN的弱点,从而产生了SR协议。SR协议的优点就在于解决了GBN中不必要的重传问题,在某种意义上说提高了信道的利用率。某个分组错误了,就只需要重传该分组,等接收方的缓存收集到了正确的顺序之后,再交付给上层,实现这点功能的要求就是要求接收方需要有一定的缓存能力。

GBN和SR适用的情况:

当某个分组序列错误较少,窗口较大的时候,应该是更适合用SR协议进行传输,因为这样可以减少很多不必要的重传,充分利用了信道;当某个分组序列错误较多,并且窗口较小的时候,应该更适合用GBN协议,因为这样的话接收方不需要缓存分组,节省了空间,并且该分组序列错误较多,相对SR来讲,也不会使得GBN的效率过于低下,如果其他情况的时候的话主要还是得根据实践和理论上的经验,综合得出结论,确定该用哪种协议。

参考文献:

计算机网络 自顶向下与Internet特色(第三版) Jmaes F.Kurose Keith W.Ross著 机械工业出版社 P143~151

本文来源:https://www.bwwdw.com/article/a408.html

Top