0

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

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

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

我不明白细节。

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

我的问题可以总结为以下两个:

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

  2. “不断重发”是什么意思?与上述相同 - 在此重新发送期间,发送方是否完全独立于接收方?

这里有一个关于它的工作方式的替代报道,但它再次给出了一个相互矛盾的画面:http ://staff.science.uva.nl/~psf/specifications/abp.html

4

1 回答 1

5

首先,这是一条全双工线路,因为双方连续发送数据。该协议与停止等待 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. 接收方与发送方同步。

    当 B 收到未损坏且序列号为 0 的消息时,它开始发送 ACK0 并一直这样做,直到它收到编号为 1 的有效消息

    对它接收到的序列 0 的每个数据包继续这样做。

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

于 2012-11-25T12:29:05.890 回答