您好,現(xiàn)在蔡蔡來(lái)為大家解答以上的問(wèn)題。nat類型檢測(cè)工具,nat類型相信很多小伙伴還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
1、NAT類型有三種情況:NAT1是指直連的2、NAT2是通過(guò)路由器連接3、網(wǎng)絡(luò)類型為NAT3的意思是一些功能受限,電腦不能參加聯(lián)機(jī),參加派對(duì)不能說(shuō)話,相當(dāng)于自己給自己關(guān)小黑屋。
2、NAT類型檢測(cè)前提條件:有一個(gè)公網(wǎng)的Server并且綁定了兩個(gè)公網(wǎng)IP(IP-1,IP-2)。
3、這個(gè)Server做UDP監(jiān)聽(tīng)(IP-1,Port-1),(IP-2,Port-2)并根據(jù)客戶端的要求進(jìn)行應(yīng)答。
4、第一步:檢測(cè)客戶端是否有能力進(jìn)行UDP通信以及客戶端是否位于NAT后?客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器返回客戶端的IP和Port, 客戶端發(fā)送請(qǐng)求后立即開(kāi)始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無(wú)限堵塞. 重復(fù)這個(gè)過(guò)程若干次。
5、如果每次都超時(shí),無(wú)法接受到服務(wù)器的回應(yīng),則說(shuō)明客戶端無(wú)法進(jìn)行UDP通信,可能是防火墻或NAT阻止UDP通信,這樣的客戶端也就 不能P2P了(檢測(cè)停止)。
6、2、當(dāng)客戶端能夠接收到服務(wù)器的回應(yīng)時(shí),需要把服務(wù)器返回的客戶端(IP,Port)和這個(gè)客戶端socket的 (LocalIP,LocalPort)比較。
7、如果完全相同則客戶端不在NAT后,這樣的客戶端具有公網(wǎng)IP可以直接監(jiān)聽(tīng)UDP端口接收數(shù)據(jù)進(jìn)行通信(檢 測(cè)停止)。
8、否則客戶端在NAT后要做進(jìn)一步的NAT類型檢測(cè)(繼續(xù))。
9、第二步:檢測(cè)客戶端NAT是否是Full Cone NAT?客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器用另一對(duì)(IP-2,Port-2)響應(yīng)客戶端的請(qǐng)求往回 發(fā)一個(gè)數(shù)據(jù)包,客戶端發(fā)送請(qǐng)求后立即開(kāi)始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無(wú)限堵塞. 重復(fù)這個(gè)過(guò)程若干次。
10、如果每次都超時(shí),無(wú)法接受到服務(wù)器的回應(yīng),則說(shuō)明客戶端的NAT不是一個(gè)Full Cone NAT,具體類型有待下一步檢測(cè)(繼續(xù))。
11、如果能夠接受到服務(wù)器從(IP-2,Port-2)返回的應(yīng)答UDP包,則說(shuō)明客戶端是一個(gè)Full Cone NAT,這樣的客戶端能夠進(jìn)行UDP-P2P通信(檢測(cè)停止)。
12、第三步:檢測(cè)客戶端NAT是否是Symmetric NAT?客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器返回客戶端的IP和Port, 客戶端發(fā)送請(qǐng)求后立即開(kāi)始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無(wú)限堵塞. 重復(fù)這個(gè)過(guò)程直到收到回應(yīng)(一定能夠收到,因?yàn)榈谝徊奖WC了這個(gè)客戶端可以進(jìn)行UDP通信)。
13、2、用同樣的方法用一個(gè)socket向服務(wù)器的(IP-2,Port-2)發(fā)送數(shù)據(jù)包要求服務(wù)器返回客戶端的IP和Port。
14、 3、比較上面兩個(gè)過(guò)程從服務(wù)器返回的客戶端(IP,Port),如果兩個(gè)過(guò)程返回的(IP,Port)有一對(duì)不同則說(shuō)明客戶端為Symmetric NAT,這樣的客戶端無(wú)法進(jìn)行UDP-P2P通信(檢測(cè)停止)。
15、否則是Restricted Cone NAT,是否為Port Restricted Cone NAT有待檢測(cè)(繼續(xù))。
16、第四步:檢測(cè)客戶端NAT是否是Restricted Cone NAT還是Port Restricted Cone NAT?客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器用IP-1和一個(gè)不同于Port-1的端口發(fā)送一個(gè)UDP 數(shù)據(jù)包響應(yīng)客戶端, 客戶端發(fā)送請(qǐng)求后立即開(kāi)始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無(wú)限堵塞. 重復(fù)這個(gè)過(guò)程若干次。
17、如果每次都超時(shí),無(wú)法接受到服務(wù)器的回應(yīng),則說(shuō)明客戶端是一個(gè)Port Restricted Cone NAT,如果能夠收到服務(wù)器的響應(yīng)則說(shuō)明客戶端是一個(gè)Restricted Cone NAT。
18、以上兩種NAT都可以進(jìn)行UDP-P2P通信。
19、注:以上檢測(cè)過(guò)程中只說(shuō)明了可否進(jìn)行UDP-P2P的打洞通信,具體怎么通信一般要借助于Rendezvous Server。
20、另外對(duì)于Symmetric NAT不是說(shuō)完全不能進(jìn)行UDP-P2P達(dá)洞通信,可以進(jìn)行端口預(yù)測(cè)打洞,不過(guò)不能保證成功。
本文就為大家分享到這里,希望小伙伴們會(huì)喜歡。