交替位协议如何工作?

时间:2012-05-08 12:30:08

标签: network-protocols

来自维基百科的ABP条目(http://en.wikipedia.org/wiki/Alternating_bit_protocol):

  

当A发送消息时,它会以相同的方式连续重新发送消息   序列号,直到收到来自B的确认   包含相同的序列号。当发生这种情况时,A补充   (翻转)序列号并开始发送下一条消息。

     

当B收到未损坏且有序列的消息时   数字0,它开始发送ACK0并继续这样做,直到它收到   数字为1的有效消息。然后它开始发送ACK1等

我不明白细节。

我理解借口和整个事情的确认,但过程本身在不同的出版物中有不同的描述。

我的问题可以概括为以下两点:

  1. 这是什么意思“......并且一直这样做”?这是否意味着接收方可以在ack通道上发送两个连续的ack而没有发送方的任何活动?即那时它根本不与发件人同步?

  2. “持续重发”是什么意思?与上述相同 - 发送者在重发期间完全独立于接收者吗?

  3. 此处有一种替代方式可以解决它的工作方式,但它再次给出了相互矛盾的图片:http://staff.science.uva.nl/~psf/specifications/abp.html

1 个答案:

答案 0 :(得分:5)

首先,这是一条全双工线,因为双方都会连续发送数据。 该协议与Stop-and-wait ARQ非常相似。 在停止等待中:

Side A:

 1. set index=0
 2. Send DATA(index) ,set timeout and waits for ACK 0 or timeout
  - If timeout back to 1
 3. If received ACK(index) set index^=1
 4. goto 2

Side B:

 1. Set index to 0
 2. If received DATA(index) Send ACK(index) and index^=1 //(xor)<br>
    else send ACK(index^1) 
 3. goto 2

在ABP中,一次也是一个数据包,不同之处在于,不是在被动地等待ACK,而是继续发送相同的数据,直到收到第一个ACK。 该协议具有更快的错误恢复,但在功率效率方面非常差

对于你的问题:

  1. Receiver与发件人同步。

      

    当B收到未损坏且有序列的消息时   数字0,它开始发送ACK0并继续发送直到收到   数字为

    的有效消息

    对于使用序列0接收的每个数据包,请继续这样做。

  2. 发送者部分地独立于接收者,因为它不断地一遍又一遍地发送相同的数据,但不完全是因为它在接收到ACK时会移动到下一个序列。