自動(dòng)應(yīng)答(Auto-ACK)和重傳功能(ReSend)是我們無(wú)線(xiàn)通信中長(zhǎng)談的問(wèn)題,數(shù)據(jù)通過(guò)調(diào)制電路,輻射到空中以后,如何判斷對(duì)方是否收到該數(shù)據(jù)?如果沒(méi)收到又會(huì)通過(guò)什么機(jī)制來(lái)處理本次的異常呢?這可以通過(guò)一個(gè)有意思“兩軍問(wèn)題”來(lái)說(shuō)明。
圖一
如圖一所示,白軍駐扎在藍(lán)軍之間,白軍比任何一支藍(lán)軍都更為強(qiáng)大,但是藍(lán)軍若能同時(shí)合力進(jìn)攻則能夠打敗白軍,他們不能夠遠(yuǎn)程的溝通,只能派遣通信兵穿過(guò)通知對(duì)方藍(lán)軍協(xié)商進(jìn)攻時(shí)間。是否存在一個(gè)能使藍(lán)軍必勝的通信協(xié)議,這就是兩軍問(wèn)題。
通信兵得經(jīng)過(guò)敵人的溝渠,在這過(guò)程中他可能被捕,也就是說(shuō),兩軍問(wèn)題中傳遞消息路徑不可靠的。如果傳遞消息的信道是可靠的,兩軍問(wèn)題可解。
然而,并不存在這樣一種路徑,所以?xún)绍妴?wèn)題在經(jīng)典情境下是不可解的,為什么呢?
倘若藍(lán)軍1(簡(jiǎn)稱(chēng)1)向藍(lán)軍2(簡(jiǎn)稱(chēng)2)派出了通信兵,若1要知道2是否收到了自己的信息,1必須要求2給自己傳輸一個(gè)回執(zhí),說(shuō)“我收到了消息”,然而,就算2已經(jīng)送出了這條信息,2也不能確定1就一定會(huì)在這個(gè)時(shí)間進(jìn)攻,因?yàn)?發(fā)出的回執(zhí)1并不一定能夠收到。所以,1必須再給2發(fā)出一個(gè)回執(zhí)說(shuō)“我收到了”,但是1也不會(huì)知道2是否收到了這樣一個(gè)回執(zhí),所以1還會(huì)期待一個(gè)2的回執(zhí)。
在這個(gè)系統(tǒng)中永遠(yuǎn)需要存在一個(gè)回執(zhí),這對(duì)于兩方來(lái)說(shuō)都并不一定能夠達(dá)成十足的確信,并且我們還沒(méi)有考慮,通信兵的信息還有可能被篡改。由此可見(jiàn),經(jīng)典情形下兩軍問(wèn)題是不可解的,并不存在一個(gè)能使藍(lán)軍一定勝利的通信協(xié)議。
兩軍問(wèn)題作為現(xiàn)代通信系統(tǒng)中必須解決的問(wèn)題,我們尚不能將之完全解決,這意味著你我傳輸信息時(shí)仍然可能出現(xiàn)丟失、監(jiān)聽(tīng)或篡改的情況。但我們能不能通過(guò)一種相對(duì)可靠的方式來(lái)解決大部分情形呢?
在我們實(shí)際通信中,確立通信可靠當(dāng)然不會(huì)如兩軍問(wèn)題一樣無(wú)限的傳遞下去,如何解決呢,便是加入了Acknowledgement(ACK)機(jī)制,如圖二所示。
圖二
這是我們通信交互中的比較常用的數(shù)據(jù)判斷方式,當(dāng)發(fā)送方發(fā)出一個(gè)數(shù)據(jù)后,如果接收方收到數(shù)據(jù),便會(huì)切換到發(fā)送模式,發(fā)出一個(gè)ACK幀,此時(shí)如果發(fā)送方收到了ACK幀,便確定此數(shù)據(jù)發(fā)送成功,本次通信完成。那么如果發(fā)送方?jīng)]有收到ACK幀呢?我們?cè)撊绾翁幚恚酉聛?lái)我們引入重發(fā)機(jī)制。
重傳機(jī)制通過(guò)發(fā)送數(shù)據(jù)后是否收到接收方發(fā)來(lái)的ACK來(lái)確定,如果沒(méi)有收到將會(huì)由用戶(hù)或者M(jìn)CU來(lái)判斷是否繼續(xù)發(fā)包,這便是重發(fā)機(jī)制,如圖三所示,在第一次發(fā)送完成后,發(fā)送方并沒(méi)有接收到ACK響應(yīng),于是在接下來(lái)又重發(fā)了第二次,此時(shí)接收方打開(kāi)了接受,并回應(yīng)了發(fā)送方ACK,此時(shí)標(biāo)志通信完成。
圖三
綜上可以看出,自動(dòng)應(yīng)答和重傳機(jī)制適用于所有的通信領(lǐng)域,通過(guò)這2個(gè)互補(bǔ)的方式增強(qiáng)通信穩(wěn)定性,保證數(shù)據(jù)的有效傳,在工業(yè)現(xiàn)場(chǎng),電磁干擾會(huì)特別突出,當(dāng)發(fā)送方未收到ACK響應(yīng)時(shí),便標(biāo)志通信失敗,直接明了的告訴用戶(hù),接下來(lái)交由用戶(hù)控制和判斷,當(dāng)這種情況無(wú)法避免時(shí),我們就需要切換信道,增強(qiáng)發(fā)送功率,或者加入路由,通過(guò)多節(jié)點(diǎn)路由的方式讓無(wú)線(xiàn)數(shù)據(jù)包能抵御空中的各種干擾。
今天的分享就到這里啦,EBYTE人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多無(wú)線(xiàn)數(shù)傳模組產(chǎn)品及物聯(lián)網(wǎng)應(yīng)用資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,還有客服小姐姐在線(xiàn)答疑哦!
相關(guān)閱讀:
1、無(wú)線(xiàn)通信模塊是如何檢測(cè)數(shù)據(jù)丟包重傳