有趣的兩軍問題

有趣的兩軍問題

在建立網絡的這個龐大的知識體系前,不妨先來看看這個有趣的兩軍問題。對以後學習各種協議以及對網絡通信的理解都會有很大的幫助。這篇非常有趣,且一點都不乏味,現在就一起來看看吧!

兩軍問題場景:

先描述下場景,首先可以看到藍軍(以下用 blue1, blue2 代替)對於白軍(以下用 white 代替)而言,擁有人數以及軍備上的優勢,而 white 雖然居於下風,但是擁有地理位置的優勢。簡單來說,如果 blue 一起進攻可以戰勝 white,但若分別進攻則會失敗。

所以 blue1 和 blue2 就會想事前溝通,和對方約定好一起進攻的時間點。可惜,當時沒有電話也沒有電報,唯一的通信方式就是依靠偵查兵送信給對方。

於是,blue1 首先派出了偵查兵,想和 blue2 約定明天清晨 8:00 一起進攻。但是當 blue1 的信件發出去後,blue1 不確定 blue2 有沒有收到,還是被 white 中途攔截。所以當 blue2 確實收到信件後,就要發送一個確認信回去給 blue1。好的那這時,blue1 收到了 blue2 的確認信,所以知道 blue2 成功收到了。但是這時換 blue2 擔心了。blue2 不知道 blue1 有沒有收到確認信,萬一 blue1 沒收到,會不會以為我沒收到約定所以明天沒有進攻,那我單獨進攻豈不是要戰敗了嗎?所以 blue1 這時又要再發一個確認確認信的確認信。

在網絡世界中,雙方這樣發信件的過程被稱為握手,或是揮手。

到這邊,相信大家都已經看出來了。這樣永遠無法結束,永遠都有一方在等待確認。這樣的兩軍問題告訴我們的是,在網絡世界中,兩個設備是不可能 100% 建立完全可靠的連接的,只能夠盡量可靠。以 TCP 協議來說,握手 3 次就視為建立了可靠的連接。

猜你喜欢

转载自blog.csdn.net/weixin_46803507/article/details/106880875