红军协同对抗蓝军问题
在網(wǎng)絡(luò)協(xié)議中,有這樣一個(gè)經(jīng)典問(wèn)題:
紅軍協(xié)同對(duì)抗藍(lán)軍問(wèn)題:
處于兩地的紅軍A與紅軍B要與藍(lán)軍作戰(zhàn),但單獨(dú)的紅軍A或紅軍B打不過(guò)藍(lán)軍,而紅軍A與紅軍B聯(lián)合對(duì)抗藍(lán)軍則100%取得勝利。
于是紅軍A與紅軍B需要商議在何時(shí)進(jìn)攻,但由于無(wú)線(xiàn)網(wǎng)絡(luò)信號(hào)質(zhì)量很差,無(wú)法確保紅A與紅B發(fā)出的消息能夠送達(dá)對(duì)方,在此情境下,能否設(shè)計(jì)出一種可靠的通信協(xié)議使得紅軍一定取得勝利(即通信信道不完全可靠的情況下,設(shè)計(jì)出完全可靠的通信協(xié)議)。
分析
請(qǐng)求確認(rèn)
假定紅A計(jì)劃與紅B在次日凌晨2點(diǎn)共同向藍(lán)軍發(fā)起攻擊,紅A必定要向B發(fā)送請(qǐng)求進(jìn)攻報(bào)文“次日2點(diǎn)進(jìn)攻藍(lán)軍”,但是由于通信信道的不可靠性,紅B必須向紅A發(fā)送一個(gè)確認(rèn)報(bào)文。
在這種協(xié)議下,對(duì)紅A來(lái)說(shuō),是否發(fā)動(dòng)攻擊取決于有沒(méi)有收到B的確認(rèn)報(bào)文,而對(duì)于紅B來(lái)說(shuō),是否發(fā)動(dòng)攻擊取決于有沒(méi)有收到紅A的請(qǐng)求進(jìn)攻信號(hào),如圖所示:
而在該協(xié)議中紅B并不知道紅A有沒(méi)有收到確認(rèn)報(bào)文,假如紅B的確認(rèn)報(bào)文丟失,紅A只能等待,而紅B單獨(dú)進(jìn)攻藍(lán)軍,最后失敗告終。
確認(rèn)的確認(rèn)
為了解決該問(wèn)題,即需要讓紅B知道紅A已收到確認(rèn)報(bào)文,在原來(lái)協(xié)議的基礎(chǔ)上增加:紅A收到確認(rèn)報(bào)文后向紅B發(fā)送“確認(rèn)的確認(rèn)”。
在這種協(xié)議下,對(duì)紅A來(lái)說(shuō),收到紅B的確認(rèn)報(bào)文后決定發(fā)起進(jìn)攻,而對(duì)紅B來(lái)說(shuō),在收到“確認(rèn)的確認(rèn)”報(bào)文后決定發(fā)起進(jìn)攻。
但實(shí)際上“確認(rèn)的確認(rèn)”報(bào)文也可能丟失,而紅A并不知道B是否收到了“確認(rèn)的確認(rèn)”,因此,如果“確認(rèn)的確認(rèn)”丟失,會(huì)導(dǎo)致紅A單獨(dú)作戰(zhàn)。
……
為解決以上問(wèn)題,需紅B再次發(fā)送對(duì)“確認(rèn)的確認(rèn)”的確認(rèn)報(bào)文,但這同樣會(huì)導(dǎo)致相同的問(wèn)題,無(wú)限循環(huán)下去。
總結(jié)
在不可靠通信信道上無(wú)法設(shè)計(jì)出一種完全可靠的通信協(xié)議,因?yàn)閷?duì)最后一次確認(rèn)報(bào)文的發(fā)送,發(fā)送方無(wú)法知曉接收方是否收到,因而發(fā)送方無(wú)法判定約定是否有效。
總結(jié)
以上是生活随笔為你收集整理的红军协同对抗蓝军问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: my ReadTravel_Singap
- 下一篇: 防止登录成功后重复刷新页面跳回登录页面