Network protocols 交替位协议是如何工作的?

Network protocols 交替位协议是如何工作的?,network-protocols,Network Protocols,从ABP()上的维基百科条目: 当A发送消息时,它会以相同的方式连续重新发送 序列号,直到它收到B的确认 包含相同的序列号。当这种情况发生时,A将起到补充作用 (翻转)序列号并开始传输下一条消息 当B收到未损坏且具有序列的消息时 数字0,它开始发送ACK0并一直发送,直到收到ACK0为止 数字为1的有效消息。然后它开始发送ACK1,等等 我不明白细节 我理解这个借口和整个事情,但在不同的出版物中对这个过程的描述是不同的 我的问题可以归纳为以下两个方面: “并一直这样做”是什么意思?这是否意味着接

从ABP()上的维基百科条目:

当A发送消息时,它会以相同的方式连续重新发送 序列号,直到它收到B的确认 包含相同的序列号。当这种情况发生时,A将起到补充作用 (翻转)序列号并开始传输下一条消息

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

我不明白细节

我理解这个借口和整个事情,但在不同的出版物中对这个过程的描述是不同的

我的问题可以归纳为以下两个方面:

  • “并一直这样做”是什么意思?这是否意味着接收方可以通过ack通道发送两个连续的ack,而根本不需要发送方的任何活动?也就是说,在这一点上,它根本不与发送方同步

  • “连续重新发送”是什么意思?同上-在重新发送期间,发送方是否完全独立于接收方


  • 这里有一个关于它工作方式的替代报道,但它再次给出了一个矛盾的画面:

    首先,这是一条全双工线路,因为双方都在连续发送数据。 这一协议非常类似于。 在“停止并等待”中:

    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之前一直发送相同的数据。 此协议具有更快的错误恢复,但在电源效率方面非常差

    关于您的问题:

  • 接收器与发送器同步

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

    对于序列为0的每个数据包,继续执行此操作

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


  • 首先,这是一条全双工线路,因为双方都连续发送数据。 这一协议非常类似于。 在“停止并等待”中:

    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之前一直发送相同的数据。 此协议具有更快的错误恢复,但在电源效率方面非常差

    关于您的问题:

  • 接收器与发送器同步

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

    对于序列为0的每个数据包,继续执行此操作

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


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