两者区别
这两个问题的本质其实是不一样的。
它们之间的关键区别有:
维度 | 两军对垒 | 拜占庭 |
---|---|---|
通信信道 | 信道不可靠 | 信道可靠 |
有无叛徒 | 无 | 有 |
两军对垒
两军问题的本质在于信道的不可靠。换句话说,如果信道是可靠,那么两军问题可解;如果信道无法保证可靠,那么两军问题无解。
倘若蓝军(简称1军)向友军(简称2军)派出了通信兵,若1要知道2是否收到了自己的信息,1必须要求2给自己传输一个回执;然而,就算2已经送出了这条信息,由于信道的不可靠(通信兵可能被捕),2发出的回执1并不一定能够收到。所以,1必须再给2发出一个回执,但是1也不会知道2是否收到了这样一个回执,所以1还会期待一个2的回执...。这样下去就形成了一个死循环。
因此信道的可靠性不解决的话,两军问题是无解的。所以TCP的三次握手也只是实际情况中对于这个问题的近似解而已。毕竟理论世界和工业世界还是存在着距离.。
那么,如何找到一个理论方法来真正的破解两军问题呢?答案是有的:量子通讯协议。其核心理念是:处于量子纠缠态的两个粒子,无论相隔多远都能够彼此同步。直观的来看,这个效应可以用来实现保密通讯,以实现通信的可靠。(具体细节不太清楚)
拜占庭问题
一群将军想要实现某一个目标(一致进攻或者一致撤退),但是单独行动行不通,必须合作, 达成共识;由于叛徒的存在,将军们不知道应该如何达到一致。
这里“一致性”才是拜占庭将军问题探讨的内容,如果本来叛徒数量就已经多到了问题不可解的地步,这个就是“反叛”的问题了。同时,此问题的目标是忠诚的将军能够达成一致,即对于这些忠诚的将军来说,进攻或者撤退都是可以的,只要他们能够达成一致就行。
但是,光靠“一致”并不能解决问题。客观上每个忠诚的将军只要进攻了就一定能够胜利,但是却因为叛徒的存在他们都“一致地”没有进攻;反之,条件不利,将军们不应该进攻,但是却因为叛徒的存在所有人都“一致地”进攻了。
“一致性”是不足以解决拜占庭将军问题,因此还需要提出一个“正确性”要求。简单地说,“正确性”就是每个忠诚的将军都正确的表达了自己的意思,不会因为叛徒让别的将军认为忠诚的将军是叛徒而不采用他传达的消息。
至此,我们将拜占庭将军问题简化成了:所有忠诚的将军都能够让别的将军接收到自己的真实意图,并最终一致行动。形式化的要求就是---“一致性”与“正确性”。