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