• <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>

            攀升·Uranus


            Something Different,Something New
            數(shù)據(jù)加載中……

            UDP"打洞"原理

            1.       NAT分類

            根據(jù)Stun協(xié)議(RFC3489),NAT大致分為下面四類

            http://blog.csdn.net/ronmy/category/819006.aspx


            1)      Full Cone

            這種NAT內(nèi)部的機(jī)器A連接過外網(wǎng)機(jī)器C后,NAT會打開一個端口.然后外網(wǎng)的任何發(fā)到這個打開的端口的UDP數(shù)據(jù)報都可以到達(dá)A.不管是不是C發(fā)過來的.

            例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88

            A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)

            任何發(fā)送到 NAT(202.100.100.100:8000)的數(shù)據(jù)都可以到達(dá)A(192.168.8.100:5000)

            2)      Restricted Cone

            這種NAT內(nèi)部的機(jī)器A連接過外網(wǎng)的機(jī)器C后,NAT打開一個端口.然后C可以用任何端口和A通信.其他的外網(wǎng)機(jī)器不行.

            例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88

            A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)

            任何從C發(fā)送到 NAT(202.100.100.100:8000)的數(shù)據(jù)都可以到達(dá)A(192.168.8.100:5000)

             

            3)      Port Restricted Cone

            這種NAT內(nèi)部的機(jī)器A連接過外網(wǎng)的機(jī)器C后,NAT打開一個端口.然后C可以用原來的端口和A通信.其他的外網(wǎng)機(jī)器不行.

            例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88

            A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)

            C(202.88.88.88:2000)發(fā)送到 NAT(202.100.100.100:8000)的數(shù)據(jù)都可以到達(dá)A(192.168.8.100:5000)

             

            以上三種NAT通稱Cone NAT.我們只能用這種NAT進(jìn)行UDP打洞.

            4)      Symmetic

            對于這種NAT.連接不同的外部目標(biāo).原來NAT打開的端口會變化.而Cone NAT不會.雖然可以用端口猜測.但是成功的概率很小.因此放棄這種NAT的UDP打洞.

            2.       UDP hole punching

            對于Cone NAT.要采用UDP打洞.需要一個公網(wǎng)機(jī)器C來充當(dāng)”介紹人”.內(nèi)網(wǎng)的A,B先分別和C通信.打開各自的NAT端口.C這個時候知道A,B的公網(wǎng)IP: Port. 現(xiàn)在A和B想直接連接.比如A給B發(fā).除非B是Full Cone.否則不能通信.反之亦然.但是我們可以這樣.

            A要連接B.A給B發(fā)一個UDP包.同時.A讓那個介紹人給B發(fā)一個命令,讓B同時給A發(fā)一個UDP包.這樣雙方的NAT都會記錄對方的IP,然后就會允許互相通信.

            3.       同一個NAT后面的情況

            如果A,B在同一個NAT后面.如果用上面的技術(shù)來進(jìn)行互連.那么如果NAT支持loopback(就是本地到本地的轉(zhuǎn)換),A,B可以連接,但是比較浪費(fèi)帶寬和NAT.有一種辦法是,A,B和介紹人通信的時候,同時把自己的local IP也告訴服務(wù)器.A,B通信的時候,同時發(fā)local ip和公網(wǎng)IP.誰先到就用哪個IP.但是local ip就有可能不知道發(fā)到什么地方去了.比如A,B在不同的NAT后面但是他們各自的local ip段一樣.A給B的local IP發(fā)的UDP就可能發(fā)給自己內(nèi)部網(wǎng)里面的某某某了.

            還有一個辦法是服務(wù)器來判斷A,B是否在一個NAT后面.(網(wǎng)絡(luò)拓樸不同會不會有問題?)

            posted on 2011-06-08 23:09 攀升 閱讀(999) 評論(0)  編輯 收藏 引用 所屬分類: Linux

            久久夜色精品国产噜噜麻豆| 一本一本久久a久久综合精品蜜桃| 久久综合综合久久狠狠狠97色88| 精品久久久久久国产三级| 久久久久久极精品久久久| 性欧美大战久久久久久久久 | 韩国免费A级毛片久久| 99久久伊人精品综合观看| 亚洲AV乱码久久精品蜜桃| 久久黄色视频| 国产91色综合久久免费| 一本大道久久东京热无码AV | 日韩电影久久久被窝网| 91精品国产91久久综合| 久久中文字幕人妻熟av女| 久久综合九色综合97_久久久| 久久精品人人做人人爽电影| 一本久久a久久精品vr综合| 亚洲国产精品久久久久网站 | 久久精品麻豆日日躁夜夜躁| 亚洲伊人久久成综合人影院 | 无码人妻久久一区二区三区免费丨 | 久久久久久久国产免费看| 久久国产精品99精品国产| 18禁黄久久久AAA片| 久久久久国产| 精品国产91久久久久久久a| 国产91色综合久久免费| 久久青青草原亚洲av无码app| 亚洲国产精品综合久久网络 | 亚洲国产精品高清久久久| 亚洲?V乱码久久精品蜜桃| 精品国产91久久久久久久a | 国内精品久久久久影院老司| 久久精品人妻一区二区三区| 国产精品九九久久免费视频 | 伊人久久综在合线亚洲2019| 久久国产精品99国产精| 99国产欧美精品久久久蜜芽| 久久久久久久久无码精品亚洲日韩| 国内精品久久久久久久久电影网|