P2P中NAT之間的打洞可能性

原文鏈接: http://www.blogjava.net/linli/archive/2014/10/23/418968.html

我們看看不同NAT之間的NAT打洞。NAT打洞需要Server配合,需要2種Server:
1. 類似WebRTC中的信令服務器,作用是幫助客戶機溝通IP和PORT信息;
2. STUN Server,用來讓客戶機判斷自己所在的NAT環境。
現在假設客戶端和Server的通訊都沒問題,客戶端知道自己所處環境,並且將自己的信息通過服務器發送給了另一方客戶端,它們可能的打洞情況如下:
1. Full Cone NAT 與 Full Cone NAT:通訊很容易,各自通過STUN Server獲取外部IP和Port後,通過信令服務器通知另一方,即可通訊。
2. Full Cone NAT 與 Restricted Cone NAT或Port Restricted Cone NAT在互相告知IP和Port後,如果由Full Cone NAT端先發送數據包,會失敗,必須由Restricted Cone NAT或Port Restricted Cone NAT端先發送數據包給Full Cone NAT,之後雙方即可互相通訊。
3. Full Cone NAT 與 Symmetric NAT通訊時,必須先由Symmetric NAT端發送數據包給Full Cone NAT端,Full Cone NAT端通過發來的數據包獲得目標的新端口號,之後通過這個新端口號完成互相通訊。
4. Restricted Cone NAT 與 Restricted Cone NAT、Restricted Cone NAT 與 Port Restricted Cone NAT、Port Restricted Cone NAT 與 Port Restricted Cone NAT之間通訊時,先發送數據包的一方會失敗,之後另一方發送數據包成功後,可互相通訊。
5. Restricted Cone NAT 與 Symmetric NAT通訊時,先由Restricted Cone NAT發送數據包給Symmetric NAT,發送數據會失敗,只是爲了下次能接收從Symmetric NAT端發送過來的數據包。然後由Symmetric NAT發送數據包到Restricted Cone NAT端,Restricted Cone NAT端會收到數據包,並且將新的端口號記下,使用新的端口號可與Symmetric NAT端通訊。
6. Port Restricted Cone NAT 與 Symmetric NAT通訊時,由於Port Restricted Cone NAT會對IP:PORT對進行限制,所以當Symmetric NAT端使用新PORT發來數據包時,Port Restricted Cone NAT端收不到,它們之間無法通訊。
7. Symmetric NAT 與 Symmetric NAT也無法通訊 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章