交替位协议如何工作?

amn*_*amn 0 network-protocols

来自维基百科的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

Ofi*_*zon 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
Run Code Online (Sandbox Code Playgroud)

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

对于你的问题:

  1. Receiver与发件人同步.

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

    对序列0接收到的每个数据包都这样做.

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