新浪博客

ARQ(Automatic Repeat-reQuest自动重传请求)(整理)

2011-08-03 20:41阅读:
如果在协议中,发送方在准备下一个数据项目之前先等待一个肯定的确认,则这样的协议称为PAR(Positive Acknowledgement with Retransmission,支持重传的肯定确认协议)或者ARQ(Automatic Repeat reQuest,自动重复请求协议)。
自动重传请求(Automatic Repeat reQuest),通过接收方请求发送方重传出错的数据报文来恢复出错的报文,是通信中用于处理信道所带来差错的方法之一;另外一个方法是信道纠错编码。

分类:
传统自动重传请求分成为三种,即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ协议。三者的区别在于对于出错的数据报文的处理机制不同。三种ARQ协议中,复杂性递增,效率也递增。除了传统的ARQ,还有混合ARQ(Hybrid-ARQ)。

停等式ARQ

  在停等式ARQ中,数据报文发送完成之后,发送方等待接收方的状态报告,如果状态报告报文发送成功,发送后续的数据报文,否则重传该报文。
  停等式ARQ,发送窗口和接收窗口大小均为1,发送方每发送一帧之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。该方法所需要的缓冲存储空间最小,缺点是信道效率很低。

回退n帧的ARQ

  在回退n帧的
ARQ中,当发送方接收到接收方的状态报告指示报文出错后,发送方将重传过去的n个报文。
  回退N,发送窗口大于1,接收窗口等于1。允许发送方可以连续发送信息帧,但是,一旦某帧发生错误,必须重新发送该帧及其后的n帧。这种方式提高了信道的利用率,但允许已发送有待于确认的帧越多,可能要退回来重发的帧也越多。

选择性重传ARQ

  在选择性重传ARQ中,当发送方接收到接收方的状态报告指示报文出错,发送方只发送传送发生错误的报文。
  选择重传协议,发送窗口和接收窗口都大于1。发送方仅重新传输发生错误的帧,并缓存错误帧之后发送的帧。与回退N相比,减少了出错帧之后正确的帧都要重传的开销。

混合ARQ

  在混合ARQ中,数据报文传送到接收方之后,即使出错也不会被丢弃。接收方指示发送方重传出错报文的部分或者全部信息,将再次收到的报文信息与上次收到的报文信息进行合并,以恢复报文信息。

连续ARQ协议的主要功能可以归结为以下两点:
1.在不可靠的链路上实现可靠交付。
因为出错的帧都被CRC检验器悄悄地丢弃了,因此接收端收下的帧都是无传输差错的帧。数据链路层协议还保证了收到的帧的顺序和发送端发送的顺序一致,因为序号不对的帧都不接受。因此,数据链路层的连续ARQ协议就在不可靠的链路上实现了可靠交付,即发送端发送什么,接收端就收到什么。所有的重传对上面都是透明的。
总之,可靠交付就是:无差错、无丢失、无重复、按顺序。
2. 支持了流量控制。
在链路层流量控制的思想就是:当接收端来不及接收时(如缓存空间不够或CPU忙不过来),就可以通过暂时不发送确认帧来降低发送端发送数据帧的速率。
关于连续ARQ协议特别要注意的地方就是对出错帧和不按序到达的帧的处理。
对出错帧的处理:
CRC检验器自动将其丢弃,协议没有其他动作。但为了不白白浪费时间,可以规定,如果一个帧重传多少次都一直出错,那么就不要再继续重传下去,而是报告上层软件,指出通信线路不可用。
对不按序到达的帧的处理(这个帧并无传输差错):
如果接收端没有数据帧要发送,接收端丢弃这个帧,同时向发送端重复发送已经发送过的最后一个确认帧。
如果接收端有数据帧要发送,接收端可以在下面要发送的自己的数据帧中,把确认信息捎带发送给对方。这个确认信息就是期望收到对方的某个编号的数据帧。
接收端也可以每隔一段时间,向发送端重复发送已经发送过的最后一个确认帧。

我的更多文章

下载客户端阅读体验更佳

APP专享