来自维基百科的ABP条目(http://en.wikipedia.org/wiki/Alternating_bit_protocol):
当A发送消息时,它会以相同的方式连续重新发送消息 序列号,直到收到来自B的确认 包含相同的序列号。当发生这种情况时,A补充 (翻转)序列号并开始发送下一条消息。
当B收到未损坏且有序列的消息时 数字0,它开始发送ACK0并继续这样做,直到它收到 数字为1的有效消息。然后它开始发送ACK1等
我不明白细节。
我理解借口和整个事情的确认,但过程本身在不同的出版物中有不同的描述。
我的问题可以概括为以下两点:
这是什么意思“......并且一直这样做”?这是否意味着接收方可以在ack通道上发送两个连续的ack而没有发送方的任何活动?即那时它根本不与发件人同步?
“持续重发”是什么意思?与上述相同 - 发送者在重发期间完全独立于接收者吗?
此处有一种替代方式可以解决它的工作方式,但它再次给出了相互矛盾的图片:http://staff.science.uva.nl/~psf/specifications/abp.html
答案 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。 该协议具有更快的错误恢复,但在功率效率方面非常差
对于你的问题:
Receiver与发件人同步。
当B收到未损坏且有序列的消息时 数字0,它开始发送ACK0并继续发送直到收到 数字为
的有效消息
对于使用序列0接收的每个数据包,请继续这样做。
发送者部分地独立于接收者,因为它不断地一遍又一遍地发送相同的数据,但不完全是因为它在接收到ACK时会移动到下一个序列。