2014-10-17 40 views
0

我想開發一個P2P遊戲應用程序。什麼是實現NAT穿越和對等發現的最快和最有效的方式。我已閱讀關於STUN和TURN服務器。但是,什麼是開放源代碼部件,我如何使用它們? 1.這些STUN服務器在3G網絡上工作嗎? 2. UDP HOLE PUNCHING是否適用於3G網絡?P2P應用開發

回答

0
  1. 如果你有一個視頻遊戲,你可能想要一個包含所有遊戲數據並允許用戶成爲客戶端的中央服務器。你知道,如拼圖和龍,你有一個用戶名和密碼,並登錄到服務器。

  2. Google「Stun Client」和「ICE protocol」。有很多開源實現

  3. STUN在移動網絡上失敗,因爲移動網絡具有對稱的大規模NAT。遍歷那種NAT的不STUN(見下文原因)

爲什麼移動寬帶NAT無法繞過?

歸結爲統計。爲了建立連接,您必須將數據包發送到他們所在的端口,並且必須將數據包發送到您所在的端口。如果發送到錯誤的端口號或者發送到錯誤的端口號,則會錯過並且沒有建立連接。如果你們兩個人同時綁定到一個端口併發送一個指向另一個ip地址的數據包,那麼你有65535中的1(65535是ip地址上的端口數)發送數據包到他們的端口的機會,他們有65535中大約有1個將數據包發送到您的端口的機會。所以你建立連接的機會是(1/65535)*(1/65535)或(1/65535^2)。

因爲對於每一個新的出站連接,路由器都會隨機給你一個新的端口號,在1024和65535之間的間隔內,你無法知道你的端口號。因此,如果你問一個服務器你的ip和端口號是,它可能會告訴你正確的IP(你的IP地址不會經常改變,除非你關掉你的手機或類似的東西),但端口號會改變。如果您嘗試猜測端口號,則會出現((65535-1024-1)/(65535-1024))或99.998%的更改,您認爲它錯了,假設可以選擇的端口號的數量是( 65535-1024)。因此,除非端口號碼是可預測的(在很多4G網絡中它們不是),否則你就沒有機會了。

最好的選擇是使用眩暈並且不支持邪惡的路由器。