• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評論

            四種不同的NAT類型及檢測方法

             
                考 慮到UDP的無狀態(tài)特性,目前針對其的NAT實(shí)現(xiàn)大致可分為Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四種。值得指出的是,對于TCP協(xié)議而言,一般來說,目前NAT中針對TCP的實(shí)現(xiàn)基本上是一致的,其間并不存在太大差異,這是因?yàn)門CP協(xié)議本身 便是面向連接的,因此無需考慮網(wǎng)絡(luò)連接無狀態(tài)所帶來復(fù)雜性。

            用語定義

            1.內(nèi)部Tuple
            :指內(nèi)部主機(jī)的私有地址和端口號所構(gòu)成的二元組,即內(nèi)部主機(jī)所發(fā)送報(bào)文的源地址、端口所構(gòu)成的二元組
            2.外部Tuple:指內(nèi)部Tuple經(jīng)過NAT的源地址/端口轉(zhuǎn)換之后,所獲得的外部地址、端口所構(gòu)成的二元組,即外部主機(jī)收到經(jīng)NAT轉(zhuǎn)換之后的報(bào)文時(shí),它所看到的該報(bào)文的源地址(通常是NAT設(shè)備的地址)和源端口
            3.目標(biāo)Tuple:指外部主機(jī)的地址、端口所構(gòu)成的二元組,即內(nèi)部主機(jī)所發(fā)送報(bào)文的目標(biāo)地址、端口所構(gòu)成的二元組

            詳細(xì)釋義

            1. Full Cone NAT
            :所有來自同一 個(gè)內(nèi)部Tuple X的請求均被NAT轉(zhuǎn)換至同一個(gè)外部Tuple Y,而不管這些請求是不是屬于同一個(gè)應(yīng)用或者是多個(gè)應(yīng)用的。除此之外,當(dāng)X-Y的轉(zhuǎn)換關(guān)系建立之后,任意外部主機(jī)均可隨時(shí)將Y中的地址和端口作為目標(biāo)地址 和目標(biāo)端口,向內(nèi)部主機(jī)發(fā)送UDP報(bào)文,由于對外部請求的來源無任何限制,因此這種方式雖然足夠簡單,但卻不那么安全

            2. Restricted Cone NAT
            : 它是Full Cone的受限版本:所有來自同一個(gè)內(nèi)部Tuple X的請求均被NAT轉(zhuǎn)換至同一個(gè)外部Tuple Y,這與Full Cone相同,但不同的是,只有當(dāng)內(nèi)部主機(jī)曾經(jīng)發(fā)送過報(bào)文給外部主機(jī)(假設(shè)其IP地址為Z)后,外部主機(jī)才能以Y中的信息作為目標(biāo)地址和目標(biāo)端口,向內(nèi)部 主機(jī)發(fā)送UDP請求報(bào)文,這意味著,NAT設(shè)備只向內(nèi)轉(zhuǎn)發(fā)(目標(biāo)地址/端口轉(zhuǎn)換)那些來自于當(dāng)前已知的外部主機(jī)的UDP報(bào)文,從而保障了外部請求來源的安 全性

            3. Port Restricted Cone NAT
            :它是Restricted Cone NAT的進(jìn)一步受限版。只有當(dāng)內(nèi)部主機(jī)曾經(jīng)發(fā)送過報(bào)文給外部主機(jī)(假設(shè)其IP地址為Z且端口為P)之后,外部主機(jī)才能以Y中的信息作為目標(biāo)地址和目標(biāo)端 口,向內(nèi)部主機(jī)發(fā)送UDP報(bào)文,同時(shí),其請求報(bào)文的源端口必須為P,這一要求進(jìn)一步強(qiáng)化了對外部報(bào)文請求來源的限制,從而較Restrictd Cone更具安全性

            4. Symmetric NAT
            :這是一種比所有Cone NAT都要更為靈活的轉(zhuǎn)換方式:在Cone NAT中,內(nèi)部主機(jī)的內(nèi)部Tuple與外部Tuple的轉(zhuǎn)換映射關(guān)系是獨(dú)立于內(nèi)部主機(jī)所發(fā)出的UDP報(bào)文中的目標(biāo)地址及端口的,即與目標(biāo)Tuple無關(guān); 在Symmetric NAT中,目標(biāo)Tuple則成為了NAT設(shè)備建立轉(zhuǎn)換關(guān)系的一個(gè)重要考量:只有來自于同一個(gè)內(nèi)部Tuple 、且針對同一目標(biāo)Tuple的請求才被NAT轉(zhuǎn)換至同一個(gè)外部Tuple,否則的話,NAT將為之分配一個(gè)新的外部Tuple;打個(gè)比方,當(dāng)內(nèi)部主機(jī)以相 同的內(nèi)部Tuple對2個(gè)不同的目標(biāo)Tuple發(fā)送UDP報(bào)文時(shí),此時(shí)NAT將會(huì)為內(nèi)部主機(jī)分配兩個(gè)不同的外部Tuple,并且建立起兩個(gè)不同的內(nèi)、外部 Tuple轉(zhuǎn)換關(guān)系。與此同時(shí),只有接收到了內(nèi)部主機(jī)所發(fā)送的數(shù)據(jù)包的外部主機(jī)才能向內(nèi)部主機(jī)返回UDP報(bào)文,這里對外部返回報(bào)文來源的限制是與Port Restricted Cone一致的。不難看出,如果說Full Cone是要求最寬松NAT UDP轉(zhuǎn)換方式,那么,Symmetric NAT則是要求最嚴(yán)格的NAT方式,其不僅體現(xiàn)在轉(zhuǎn)換關(guān)系的建立上,而且還體現(xiàn)在對外部報(bào)文來源的限制方面。

            第二部:NAT類型檢測

            前提條件:有一個(gè)公網(wǎng)的Server并且綁定了兩個(gè)公網(wǎng)IP(IP-1,IP-2)。這個(gè)Server做UDP監(jiān)聽(IP-1,Port-1),(IP-2,Port-2)并根據(jù)客戶端的要求進(jìn)行應(yīng)答。

            第一步:檢測客戶端是否有能力進(jìn)行UDP通信以及客戶端是否位于NAT后?

            客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器返回客戶端的IP和Port, 客戶端發(fā)送請求后立即開始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無限堵塞. 重復(fù)這個(gè)過程若干次。如果每次都超時(shí),無法接受到服務(wù)器的回應(yīng),則說明客戶端無法進(jìn)行UDP通信,可能是防火墻或NAT阻止UDP通信,這樣的客戶端也就 不能P2P了(檢測停止)。
            當(dāng)客戶端能夠接收到服務(wù)器的回應(yīng)時(shí),需要把服務(wù)器返回的客戶端(IP,Port)和這個(gè)客戶端socket的 (LocalIP,LocalPort)比較。如果完全相同則客戶端不在NAT后,這樣的客戶端具有公網(wǎng)IP可以直接監(jiān)聽UDP端口接收數(shù)據(jù)進(jìn)行通信(檢 測停止)。否則客戶端在NAT后要做進(jìn)一步的NAT類型檢測(繼續(xù))。

            第二步:檢測客戶端NAT是否是Full Cone NAT?

            客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器用另一對(IP-2,Port-2)響應(yīng)客戶端的請求往回 發(fā)一個(gè)數(shù)據(jù)包,客戶端發(fā)送請求后立即開始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無限堵塞. 重復(fù)這個(gè)過程若干次。如果每次都超時(shí),無法接受到服務(wù)器的回應(yīng),則說明客戶端的NAT不是一個(gè)Full Cone NAT,具體類型有待下一步檢測(繼續(xù))。如果能夠接受到服務(wù)器從(IP-2,Port-2)返回的應(yīng)答UDP包,則說明客戶端是一個(gè)Full Cone NAT,這樣的客戶端能夠進(jìn)行UDP-P2P通信(檢測停止)。

            第三步:檢測客戶端NAT是否是Symmetric NAT?

            客戶端建立UDP socket然后用這個(gè)socket向服務(wù)器的(IP-1,Port-1)發(fā)送數(shù)據(jù)包要求服務(wù)器返回客戶端的IP和Port, 客戶端發(fā)送請求后立即開始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無限堵塞. 重復(fù)這個(gè)過程直到收到回應(yīng)(一定能夠收到,因?yàn)榈谝徊奖WC了這個(gè)客戶端可以進(jìn)行UDP通信)。
            用同樣的方法用一個(gè)socket向服務(wù)器的(IP-2,Port-2)發(fā)送數(shù)據(jù)包要求服務(wù)器返回客戶端的IP和Port。
            比 較上面兩個(gè)過程從服務(wù)器返回的客戶端(IP,Port),如果兩個(gè)過程返回的(IP,Port)有一對不同則說明客戶端為Symmetric NAT,這樣的客戶端無法進(jìn)行UDP-P2P通信(檢測停止)。否則是Restricted Cone NAT,是否為Port Restricted Cone NAT有待檢測(繼續(xù))。

            第四步:檢測客戶端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ā)送請求后立即開始接受數(shù)據(jù)包,要設(shè)定socket Timeout(300ms),防止無限堵塞. 重復(fù)這個(gè)過程若干次。如果每次都超時(shí),無法接受到服務(wù)器的回應(yīng),則說明客戶端是一個(gè)Port Restricted Cone NAT,如果能夠收到服務(wù)器的響應(yīng)則說明客戶端是一個(gè)Restricted Cone NAT。以上兩種NAT都可以進(jìn)行UDP-P2P通信。

            注:以上檢測過程中只說明了可否進(jìn)行UDP-P2P的打洞通信,具體怎么通信一般要借助于Rendezvous Server。另外對于Symmetric NAT不是說完全不能進(jìn)行UDP-P2P達(dá)洞通信,可以進(jìn)行端口預(yù)測打洞,不過不能保證成功。

            posted on 2008-08-14 11:00 大龍 閱讀(3427) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            精品久久久久久久中文字幕| 久久精品中文騷妇女内射| 成人精品一区二区久久久| 国产一区二区精品久久岳| 天堂无码久久综合东京热| 久久A级毛片免费观看| 狠狠综合久久综合中文88| 亚洲AV无码1区2区久久| 精品国产青草久久久久福利 | 国产精品一区二区久久不卡| 伊人热人久久中文字幕| 少妇无套内谢久久久久| 亚洲嫩草影院久久精品| 久久久久久久久波多野高潮| 久久免费高清视频| 亚洲国产精品成人久久| 婷婷久久精品国产| 久久99精品久久久久久野外| 69SEX久久精品国产麻豆| 97香蕉久久夜色精品国产| 久久激情五月丁香伊人| 国产欧美久久一区二区| 久久精品国产亚洲av影院| 久久久亚洲裙底偷窥综合 | 久久久久国产亚洲AV麻豆| 99久久精品毛片免费播放| 亚洲综合久久久| 一本色综合久久| 精品久久人人妻人人做精品| 66精品综合久久久久久久| 7777久久亚洲中文字幕| 丁香五月网久久综合| 久久久久久人妻无码| 精品无码久久久久久午夜| 久久综合88熟人妻| 久久精品无码专区免费东京热| 免费久久人人爽人人爽av| 精品久久久久久国产| 日本强好片久久久久久AAA| 久久婷婷激情综合色综合俺也去 | 久久精品免费观看|