在计算机网络中,ARQ(Automatic Repeat reQuest)是一种协议,用于当数据在传输过程中发生错误时,可用于重复传输那些已损坏的数据。ARQ有很多种实现方式,例如停止-等待ARQ、反馈ARQ以及连续ARQ等等。本文将围绕着连续ARQ协议进行分析和阐述。
1. 连续ARQ协议——简介
在连续ARQ协议之前,已经有了停止-等待ARQ和反馈ARQ两种实现方法。停止-等待ARQ在发送一组数据后,必须等待接收方确认,确认信号到来之前不能发送下一组数据,造成了数据的拥塞。反馈ARQ当出现错误时,需要重复发送损坏的数据,也会造成大量数据的拥塞。相比之下,连续ARQ的发送方无需等待确认信,可以连续发送数据,接收方在接收完整的数据后再给出确认信号。
2. 连续ARQ协议——发送过程
在连续ARQ协议中,发送方需要保存三个信息:
(1)发送窗口起始位置(SendBase):表示在该位置之前的数据已经全部确认了。
(2)下一个可发送的位置(NextSeqNum):表示下一个要发送的数据所处的位置。
(3)窗口大小(WindowSize):表示窗口中可以包含的未确认的数据数量。
如下图所示,窗口大小为5,发送方已经发送了数据包0、1、2、3、4,等待接收方的确认信号。NextSeqNum指向了序列号5,下一个即将发送的数据。
SendBase
∧
+-------+ +-------+ +-------+ +-------+ +-------+
| 0 | | 1 | | 2 | | 3 | | 4 |
+-------+ +-------+ +-------+ +-------+ +-------+
| |
| 下一个数据包发送在此处 |
+--------------------------------------------------+
∧
NextSeqNum
在发送过程中,当发送方发送数据包后,将NextSeqNum加一并将数据存储在NextSeqNum所指向的位置。如果发送窗口中所有数据都得到了确认,SendBase和NextSeqNum将加上一个窗口大小。如果发生错误,接收方会向发送方发送一个非确认(NACK)信号,标志出错误所在的位置,Sending Base会回到错误发生的位置。
3. 连续ARQ协议——接收过程
在连续ARQ协议中,接收方也需要保存三个信息:
(1)接收口起始位置(RcvBase):表示前面的所有数据都已经被接收,这是期望接收到数据的位置。
(2)期望下一个接收的数据的位置(ExpectedSeqNum):表示第一个未接收到的数据的位置。
(3)窗口大小(WindowSize):表示等待接收ACK的报文数。
如下图所示,接收窗口大小为4,已经接收到了数据包9、10、11、12,当前期望接收到的数据序列号为13。
RcvBase
∧
+-------+ +-------+ +-------+ +-------+
| \ | | \ | 11 | \ | 13 | \ |
| \ | | 10 | <- | 12 | <- | 14 |
| \ | | | | | | |
| \ | | | | | | |
| \V | | | | | |
+-------+ +-------+ +-------+ +-------+
| |
| 期望下一个接受的数据包 |
+--------------------------------+
在接收方接收到数据包时,如果该数据包的序列号正确,接收方将向发送方发送ACK信号,确认该数据包已收到,期望接收下一个序列号的数据包。如果数据包的序列号不正确,接收方不会返回ACK信号,发送方则会重复发送该数据包。
4. 连续ARQ协议——优缺点
优点:
(1)在数据传输过程中,可以提高通道利用率;
(2)减少数据传输过程中的阻塞,提高了传输效率;
(3)系统流程简单,能够降低系统的开销。
缺点:
(1)由于连续ARQ能够不间断地发送数据,因此在数据出现错误时,错误信息会在接收方堆积,造成数据的复杂;
(2)连续ARQ比较适合在高质量网络中应用;
(3)对于具有时延和抖动等特点的卫星链路,连续ARQ的性能也不是太好。
综上所述,连续ARQ协议是一种高效的数据传输协议,可以提高通道利用率,减少数据阻塞,降低系统的开销,但在网络评价不佳的情况下,连续ARQ的效率会受到很大的影响。
扫码咨询 领取资料