P2P打洞中遇到的問題

2021-06-29 05:44:36 字數 1560 閱讀 6273

裝置a通過一台聯通的路由器上網,裝置a通過有線連線路由器

裝置b是一台手機是移動2g

協助伺服器是電信網路

附:裝置a和裝置b經過ip.cn**測試發現各自的外網位址是:

裝置a: 221.4.212.2,聯通ip,相對固定

裝置b: 117.136.33.128,移動ip,手機網路經常變動

但是通過伺服器列印通訊位址發現:

裝置a: 113.76.153.234,電信ip

裝置b: 14.215.29.119,電信ip

貌似裝置a和裝置b的通訊位址會全部轉換成電信的

裝置a借助外網伺服器獲取到裝置b的外網位址,裝置b也借助外網伺服器獲取到裝置a的外網位址,此時向對方裝置的外網ip:port傳送資料報,雙方都收不到對方的資料報,開始完全不知道**有問題

(1)開始觀察伺服器對裝置a和裝置b的位址列印,可以發現手機的埠經常會變動,懷疑手機是對成型nat,但是協助伺服器的nat測試結果又顯示不是的,這裡思考了很久,不得其解(後來證明確實是對稱型nat,是nat測試結果有問題)。

(2)此時有點懷疑移動2g是對稱型nat,但是nat測試結果又與懷疑相悖,後來想到了乙個解決思路,就是裝置b(移動2g手機)對伺服器的兩個位址61.11.11.23:3478和61.11.11.23:3479

通訊,然後觀察伺服器的對端(裝置b)位址列印,發現列印的結果是,裝置b的通訊位址類似:110.0.0.2:3456和110.0.0.2:5678,此結果正好對應的是對稱型nat的特徵

(3)還是不清楚到底什麼地方有問題,只能看**,跟蹤伺服器的nat測試**,結合列印發現,和伺服器的主位址通訊,裝置b是有收到回應的,但是,裝置b跟伺服器的副位址通訊沒有收到回應,問題找到。

(4)多次測試發現,原來是伺服器的主網絡卡設定正常,副網絡卡沒有設定閘道器,不能正常通訊,被伺服器坑了,所以一定要確保伺服器的兩個位址通訊是ok的

伺服器的兩個位址不能正常通訊的話,移動2g網路(裝置b)的nat型別測試失敗,之前是測試成了埠限制型nat,後來測試的是對稱型nat,正是因為裝置a是埠限制型nat,裝置b(手機)是對稱型nat,所以對端發包打洞是不能通的。

找個能打洞的場景,繼續測試,看能否打洞成功

關於P2P打洞

處於不同nat之後的客戶端通訊 我們假設 client a 和 client b 都擁有自己的私有ip位址,並且都處在不同的nat之後,端對端的程式執行於 client a,client b,s之間,並且它們都開放了udp埠1234。client a和client b首先分別與s建立通訊會話,這時n...

P2P打洞原理

首先我們明確現在我們有的裝置 1 客戶端a,閘道器nat a 2 客戶端b,閘道器nat b 3 伺服器s 這些裝置明確之後,就可以介紹tcp打洞的過程 1 首先伺服器s開啟兩個服務監聽,乙個主連線埠,和乙個協助打洞埠 2 a通過主連線埠連線伺服器s,b通過主連線埠連線伺服器s,這個是正常的伺服器通...

P2P中NAT之間的打洞可能性

我們看看不同nat之間的nat打洞。nat打洞需要server配合,需要2種server 1.類似webrtc中的信令伺服器,作用是幫助客戶機溝通ip和port資訊 2.stun server,用來讓客戶機判斷自己所在的nat環境。現在假設客戶端和server的通訊都沒問題,客戶端知道自己所處環境,...