崔杰++吳優++仲紅



摘 要:網絡可靠性分析在提高網絡可靠性、生存性以及網絡的優化設計中具有重要意義。隨著各種網絡規模的越來越大,網絡的可靠性也就顯得越來越重要。課堂中出現的藍、白軍進攻問題,涉及到網絡的可靠性協議。文章就半雙工通信的情況下,探討設計了一個協議,以便提供可靠的通信。
關鍵詞:可靠性;協議;通訊網絡;問題探究
中圖分類號:G642.0 文獻標識碼:A 文章編號:2095-1302(2015)11-0-02
0 引 言
占據東、西兩個山頂的藍軍1和藍軍2與駐扎在山地的白軍作戰。其力量對比是藍軍1或藍軍2單獨作戰不敵白軍,但藍軍1和藍軍2協同作戰可以戰勝白軍。現藍軍1擬于次日正午向白軍發起攻擊。于是用計算機發送報文給藍軍2,但通信線路很不好,電文出錯或丟失的可能性較大(沒有電話可用)。因此,要求收到電文的友軍必須送回一個確認電文。但此確認電文也容易出錯或丟失[1,2]。試問能否設計出一種協議使得藍軍1和藍軍2能夠實現協同作戰而一定(即100%而不是99.999...%)取得勝利?這個問題的本質就是能否設計出一個絕對可靠的協議[3,4]。
1 書中解答
藍軍1先發送“擬于明日正午發起攻擊,請求協同作戰和確認。”
假定藍軍2收到了電文并發送確認。
然而現在藍軍1和藍軍2都不敢下定決心進攻。因為藍軍2不知道此確認電文藍軍1是否收到。如未正確收到,則藍軍1不敢貿然進攻。在此情況下,自己單方面發起進攻就肯定要失敗。因此,必須要等待藍軍1發送“對確認的確認”。
假定藍軍1接收到電文并發送“確認的確認”。但藍軍1同樣關心自己發出的確認對方是否收到,因此還要等待藍軍2的“對確認的確認的確認”。
這樣無限循環下去,藍軍1和藍軍2都始終無法確定自己最后發出的電文對方是否收到。因此,在本例題給出的條件下,沒有一種協議可以使藍軍1和藍軍2能夠100%地確保勝利。
2 協議描述
上述協議的直觀描述如圖1所示。
這個例子告訴我們,看似簡單的協議,設計起來要考慮的問題還是比較多的。
圖1 無限循環協議圖
3 問題探討
看完書中的解題方法和思路,我們有一些不同的看法,我們試圖設計一個協議,讓雙方能保障信息的可靠性。
事先約定一個協議:只要有一方(A方)發送一個報文,末尾標記1,記為A1。另一方(B方)收到并發送確認報文,末尾標記2,記為B2。同理,A接收到B2,發送A3。如此往返,直至A方發送A9,B發送B10。如此,雙方最多都能發送五次報文,如果雙方都能確認另一方能發送至少一次報文,則默認雙方都知道報文的信息。
解題思路:假設B方可以發送B10,則可以確認A方已經發送A9,A能判斷出B至少發送一次報文,默認雙方都知道這個事情。同時A發送A9,能確認B發送B8的報文,則默認雙方都知道報文的信息。
假設B方可以發送B 8,則可以確認A方已經發送A7,A能判斷出B至少發送一次報文,默認雙方都知道這個事情。同時A發送末尾標記為A7,能確認B發送過B6,則默認雙方都知道報文的信息。
假設B方可以發送B6,則可以確認A方已經發送A5,A能判斷出B至少發送一次報文,默認雙方都知道這個事情。同時A發送A5,能確認B發送B4,則默認雙方都知道報文的信息。
假設B方可以發送B4,則可以確認A方已經發送A3,A能判斷出B至少發送一次報文,默認雙方都知道這個事情。同時A發送A3,能確認B發送過B2,則默認雙方都知道報文的信息。
綜上所述能找到一些情況,使報文可靠傳輸。如B發送末尾標記為10的報文,則報文的信息A、B都知道對方知曉。
4 問題分析
以上解題過程貌似正確,但在一系列推導之后是不成立的,推導過程如表1所示。
規定B發送B10則默認雙方都知道報文的信息,則藍軍1和藍軍2攻打白軍。
證明上述論述錯誤,可使用反證法。
若B發送B10,則A必須發送A9。即規定A發送A9時A必定會攻擊白軍。
當A發送A9時,還有另外一種情況,即B發送B8,而B沒有收到A9。此時B沒有發送B10,B不會選擇出擊,而A選擇出擊,則戰爭失敗,以上推斷不正確。
以B為研究對象:若B最多發送Bi,A最多發送An的可能情況,Bi與An對應關系如表2。
以A為研究對象:若A最多發送An,B最多發Bi的可能情況,如表3所列。
由表2和表3可得:若選定一個An記為A發動攻擊的標志,則B無法找到唯一一個確定的標志發動攻擊。
若選定一個Bi記為B發動攻擊的標志,則A無法找到唯一一個確定的標志發動攻擊。
可得出結論,按照以上方法,無法找到一個協議使得雙方可靠地傳輸信息。
5 方法改進與分析
A多次發送報文,則B至少應能收到一次。若B一次都收不到,則無論什么協議都無法奏效。
現假設A發送的報文,B至少能接收到一個報文。A發送的報文如下:
“我會在明日正午發起攻擊,無論你有沒有收到這個報文我都會發起攻擊,這個報文我會發送多次,請協同作戰。”
若B接收到A發送的報文。根據A發送的報文可以得出,A一定會在明天正午選擇進攻。所以此時B沒有其他選擇,若A進攻,B也只有進攻。
A已經發送明日正午一定進攻的報文,所以A也沒有其他選擇,A也會選擇進攻。
假設發送一次報文被對方收到的概率為a,則發送n次至少有一次被收到的概率為P=1-(1-a)^n。
我們知道:a的值固定,當逐漸變大時,P逐漸趨向于1。
通過上述分析可以看出,書中方案及我們設計的兩種改進方案均無法做到100%可靠。由此可見,在通信信道質量沒有保證的情況下,設計出絕對可靠的通信協議是不可能的。但在實際生活中,n的值不可能趨向于無窮,所以無法找到完全可靠的協議。
6 結 語
在《網絡原理》課程中,除了上述探討的藍、白軍進攻問題,TCP連接建立過程中的三次握手協議同樣存在可靠性問題。三次握手協議指的是在發送數據的準備階段,服務器端和客戶端之間需要進行三次交互:第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢后客戶端和服務器進入ESTABLISHED狀態,完成三次握手。連接建立后,客戶端和服務器就可以開始進行數據傳輸了。
三次握手協議也存在一定的可靠性缺陷,但在實際應用中,不能只顧可靠性而忽視可行性和工作效率。三次握手中,若其中某次握手失敗,也難以保障較好的可靠性。三次握手的設計,就是放棄一定的可靠性,換取較大的通訊效率。
參考文獻
[1]謝希仁.計算機網絡.(第四版)[M].北京: 電子工業出版社, 2006.
[2]彭澎.計算機網絡基本原理[M].武漢: 華中理工大學出版社, 1999.
[3]熊桂喜,王小虎.計算機網絡[M].北京:清華大學出版社,1998.
[4]王新偉.提高計算機網絡可靠性的方法研究[J].電腦知識與技術,2013,9(21):4818-4820.