来自维基百科的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
首先,这是一条全双工线,因为双方都会连续发送数据.该协议与停止等待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.该协议具有更快的错误恢复,但在功率效率方面非常差
对于你的问题:
Receiver与发件人同步.
当B收到一条未损坏且序列号为0的消息时,它开始发送ACK0并继续这样做,直到它收到一个号码为1的有效消息
对序列0接收到的每个数据包都这样做.
发送者部分地独立于接收者,因为它不断地一次又一次地发送相同的数据,但不完全是因为它在接收到ACK时将移动到下一个序列.