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