Network protocols 交替位协议是如何工作的?
从ABP()上的维基百科条目: 当A发送消息时,它会以相同的方式连续重新发送 序列号,直到它收到B的确认 包含相同的序列号。当这种情况发生时,A将起到补充作用 (翻转)序列号并开始传输下一条消息 当B收到未损坏且具有序列的消息时 数字0,它开始发送ACK0并一直发送,直到收到ACK0为止 数字为1的有效消息。然后它开始发送ACK1,等等 我不明白细节 我理解这个借口和整个事情,但在不同的出版物中对这个过程的描述是不同的 我的问题可以归纳为以下两个方面:Network protocols 交替位协议是如何工作的?,network-protocols,Network Protocols,从ABP()上的维基百科条目: 当A发送消息时,它会以相同的方式连续重新发送 序列号,直到它收到B的确认 包含相同的序列号。当这种情况发生时,A将起到补充作用 (翻转)序列号并开始传输下一条消息 当B收到未损坏且具有序列的消息时 数字0,它开始发送ACK0并一直发送,直到收到ACK0为止 数字为1的有效消息。然后它开始发送ACK1,等等 我不明白细节 我理解这个借口和整个事情,但在不同的出版物中对这个过程的描述是不同的 我的问题可以归纳为以下两个方面: “并一直这样做”是什么意思?这是否意味着接
这里有一个关于它工作方式的替代报道,但它再次给出了一个矛盾的画面:首先,这是一条全双工线路,因为双方都在连续发送数据。 这一协议非常类似于。 在“停止并等待”中:
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
A面:
1.设置索引=0
2.发送数据(索引),设置超时并等待确认0或超时
-如果超时返回到1
3.如果收到ACK(索引),则设置索引^=1
4.转到2
B方:
1.将索引设置为0
2.如果收到数据(索引),则发送确认(索引)和索引^=1//(异或)
else发送确认(索引^1)
3.转到2
在ABP中,每次也有一个数据包,不同之处在于,不是被动地等待ACK,而是在收到第一个ACK之前一直发送相同的数据。
此协议具有更快的错误恢复,但在电源效率方面非常差
关于您的问题:
对于序列为0的每个数据包,继续执行此操作
首先,这是一条全双工线路,因为双方都连续发送数据。 这一协议非常类似于。 在“停止并等待”中:
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
A面:
1.设置索引=0
2.发送数据(索引),设置超时并等待确认0或超时
-如果超时返回到1
3.如果收到ACK(索引),则设置索引^=1
4.转到2
B方:
1.将索引设置为0
2.如果收到数据(索引),则发送确认(索引)和索引^=1//(异或)
else发送确认(索引^1)
3.转到2
在ABP中,每次也有一个数据包,不同之处在于,不是被动地等待ACK,而是在收到第一个ACK之前一直发送相同的数据。
此协议具有更快的错误恢复,但在电源效率方面非常差
关于您的问题:
对于序列为0的每个数据包,继续执行此操作
我不知道你说的“与发件人同步”是什么意思。这个协议非常简单,你不断地重复发送消息,直到你收到一个确认。发送ACK的人会一直重新发送ACK,直到收到一条新消息为止(其中new表示它与上次收到的消息具有不同的序列号)。我猜与发送方同步意味着通道是全双工的-接收方可以发送任意数量的ASK,而发送方可能会也可能不会继续重新发送相同的消息。您需要在两个方向上发送消息/确认,从这个意义上说,它是全双工的。接收方发送特定消息的ACK,直到收到新消息,而不是“想要多少”。这意味着,只要协议可以运行,它就会发送ACK。永远永远。发送方,一旦协议运行(即发送第一条消息,并且没有人关闭该消息),消息将被重复发送,直到发送方收到该消息的确认,它不会选择只发送一次或10次消息。它会重新发送该消息,直到收到ack。此外,ack未被确认,也就是说,发送方不会通知接收方“我收到了您的ack,现在停止发送更多ack”。所以ACK将永远被发送。我不知道你所说的“与发送者同步”是什么意思。这个协议非常简单,你不断地重复发送消息,直到你收到一个确认。发送ACK的人会一直重新发送ACK,直到收到一条新消息为止(其中new表示它与上次收到的消息具有不同的序列号)。我猜与发送方同步意味着通道是全双工的-接收方可以发送任意数量的ASK,而发送方可能会也可能不会继续重新发送相同的消息。您需要在两个方向上发送消息/确认,从这个意义上说,它是全双工的。接收方发送特定消息的ACK,直到收到新消息,而不是“想要多少”。这意味着,只要协议可以运行,它就会发送ACK。永