【问题标题】:How does Alternating Bit Protocol work?交替位协议如何工作?
【发布时间】:2012-05-08 12:30:08
【问题描述】:

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

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

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

我不明白细节。

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

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

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

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

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

【问题讨论】:

  • 我不确定您所说的“与发件人同步”是什么意思。不过,该协议非常简单,您不断地重复发送一条消息,直到您收到它的 ACK。发送 ACK 的人会不断重新发送该 ACK,直到它收到一条新消息(其中 new 意味着它与收到的最后一条消息相比具有不同的序列号)。
  • 我猜与发送者同步意味着通道是全双工的——接收者可以发送任意数量的请求,而发送者可能会也可能不会继续重新发送相同的消息。
  • 您需要双向发送消息/确认,从这个意义上说,它是全双工的。接收者为特定消息发送确认,直到它收到一条新消息,而不是“尽可能多地”。这意味着,只要协议是可操作的,它就会发送确认。永永远远。发送者,一旦协议运行(即发送了第一条消息,并且没有人关闭事物),消息将被重复发送,直到发送者得到该消息的确认,它没有选择发送只发一次消息,或 10 次。它会重新发送该消息,直到收到确认为止。
  • 此外,acks 没有被确认,即发送方没有通知接收方“我收到了你的确认,现在停止发送更多的确认”。因此,ack 将永远发送。

标签: network-protocols


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2020-10-21
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多