当前位置: 首页 >应用方案 >技术应用 >

生动形象!“两军问题”让你看懂自动应答和重传的适用场景

自动应答(Auto-ACK)和重传功能(ReSend)是我们无线通信中长谈的问题,数据通过调制电路,辐射到空中以后,如何判断对方是否收到该数据?如果没收到又会通过什么机制来处理本次的异常呢?这可以通过一个有意思“两军问题”来说明。

图一

图一


如图一所示,白军驻扎在蓝军之间,白军比任何一支蓝军都更为强大,但是蓝军若能同时合力进攻则能够打败白军,他们不能够远程的沟通,只能派遣通信兵穿过通知对方蓝军协商进攻时间。是否存在一个能使蓝军必胜的通信协议,这就是两军问题。


通信兵得经过敌人的沟渠,在这过程中他可能被捕,也就是说,两军问题中传递消息路径不可靠的。如果传递消息的信道是可靠的,两军问题可解。


然而,并不存在这样一种路径,所以两军问题在经典情境下是不可解的,为什么呢?


倘若蓝军1(简称1)向蓝军2(简称2)派出了通信兵,若1要知道2是否收到了自己的信息,1必须要求2给自己传输一个回执,说“我收到了消息”,然而,就算2已经送出了这条信息,2也不能确定1就一定会在这个时间进攻,因为2发出的回执1并不一定能够收到。所以,1必须再给2发出一个回执说“我收到了”,但是1也不会知道2是否收到了这样一个回执,所以1还会期待一个2的回执。


在这个系统中永远需要存在一个回执,这对于两方来说都并不一定能够达成十足的确信,并且我们还没有考虑,通信兵的信息还有可能被篡改。由此可见,经典情形下两军问题是不可解的,并不存在一个能使蓝军一定胜利的通信协议。


两军问题作为现代通信系统中必须解决的问题,我们尚不能将之完全解决,这意味着你我传输信息时仍然可能出现丢失、监听或篡改的情况。但我们能不能通过一种相对可靠的方式来解决大部分情形呢?


自动应答(Auto-ACK)

在我们实际通信中,确立通信可靠当然不会如两军问题一样无限的传递下去,如何解决呢,便是加入了Acknowledgement(ACK)机制,如图二所示。


图二

图二


这是我们通信交互中的比较常用的数据判断方式,当发送方发出一个数据后,如果接收方收到数据,便会切换到发送模式,发出一个ACK帧,此时如果发送方收到了ACK帧,便确定此数据发送成功,本次通信完成。那么如果发送方没有收到ACK帧呢?我们该如何处理,接下来我们引入重发机制。


重传(ReSend)


重传机制通过发送数据后是否收到接收方发来的ACK来确定,如果没有收到将会由用户或者MCU来判断是否继续发包,这便是重发机制,如图三所示,在第一次发送完成后,发送方并没有接收到ACK响应,于是在接下来又重发了第二次,此时接收方打开了接受,并回应了发送方ACK,此时标志通信完成。


图三

图三

       

综上可以看出,自动应答和重传机制适用于所有的通信领域,通过这2个互补的方式增强通信稳定性,保证数据的有效传,在工业现场,电磁干扰会特别突出,当发送方未收到ACK响应时,便标志通信失败,直接明了的告诉用户,接下来交由用户控制和判断,当这种情况无法避免时,我们就需要切换信道,增强发送功率,或者加入路由,通过多节点路由的方式让无线数据包能抵御空中的各种干扰。

亿佰特人每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的官网http://www.ebyte.com/进行了解,还有客服小姐姐在线答疑哦!


https://www.wjx.cn/jq/84863372.aspx