青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統(tǒng)計

最新評論

NAT的完全分析及其UDP穿透的完全解決方案 - --- - zt

 
NAT的完全分析及其UDP穿透的完全解決方案
 
一:基本術(shù)語
防火墻
防火墻限制了私網(wǎng)與公網(wǎng)的通信,它主要是將(防火墻)認為未經(jīng)授權(quán)的的包丟棄,防火墻只是檢驗包的數(shù)據(jù),并不修改數(shù)據(jù)包中的IP地址和TCP/UDP端口信息。
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
當有數(shù)據(jù)包通過時,網(wǎng)絡(luò)地址轉(zhuǎn)換器不僅檢查包的信息,還要將包頭中的IP地址和端口信息進行修改。以使得處于NAT之后的機器共享幾個僅有的公網(wǎng)IP地址(通常是一個)。網(wǎng)絡(luò)地址轉(zhuǎn)換器主要有兩種類型.
P2P應(yīng)用程序
P2P應(yīng)用程序是指,在已有的一個公共服務(wù)器的基礎(chǔ)上,并分別利用自己的私有地址或者公有地址(或者兩者兼?zhèn)洌﹣斫⒁粋€端到端的會話通信。
P2P防火墻
P2P防火墻是一個提供了防火墻的功能的P2P代理,但是不進行地址轉(zhuǎn)換.
P2P-NAT
P2P-NAT 是一個 P2P代理,提供了NAT的功能,也提供了防火墻的功能,一個最簡的P2P代理必須具有錐形NAT對Udp通信支持的功能,并允許應(yīng)用程序利用Udp打洞技術(shù)建立強健的P2P連接。
回環(huán)轉(zhuǎn)換
NAT的私網(wǎng)內(nèi)部機器想通過公共地址來訪問同一臺局域網(wǎng)內(nèi)的機器的時,NAT設(shè)備等價于做了兩次NAT的事情,在包到達目標機器之前,先將私有地址轉(zhuǎn)換為公網(wǎng)地址,然后再將公網(wǎng)地址轉(zhuǎn)換回私有地址。我們把具有上敘轉(zhuǎn)換功能的NAT設(shè)備叫做“回環(huán)轉(zhuǎn)換”設(shè)備。
 
二:NAT分類
可以分為基礎(chǔ)NAT網(wǎng)絡(luò)地址和端口轉(zhuǎn)換(NAPT)兩大類
(一):基礎(chǔ)NAT
基礎(chǔ)NAT 將私網(wǎng)主機的私有IP地址轉(zhuǎn)換成公網(wǎng)IP地址,但并不將TCP/UDP端口信息進行轉(zhuǎn)換。基礎(chǔ)NAT一般用在當NAT擁有很多公網(wǎng)IP地址的時候,它將公網(wǎng)IP地址與內(nèi)部主機進行綁定,使得外部可以用公網(wǎng)IP地址訪問內(nèi)部主機。(實際上是只將IP轉(zhuǎn)換,192.168.0.23 <-> 210.42.106.35,這與直接設(shè)置IP地址為公網(wǎng)IP還是有一定區(qū)別的,特別是對于企業(yè)來說,外部的信息都要經(jīng)過統(tǒng)一防火墻才能到達內(nèi)部,但是內(nèi)部主機又可以使用公網(wǎng)IP)
(二):網(wǎng)絡(luò)地址和端口轉(zhuǎn)換 (NAPT)
這是最普遍的情況,網(wǎng)絡(luò)地址/端口轉(zhuǎn)換器檢查、修改包的IP地址和TCP/UDP端口信息,這樣,更多的內(nèi)部主機就可以同時使用一個公網(wǎng)IP地址。
請參考[RFC1631]和[RFC2993]及[RFC2663]這三個文檔了解更多的NAT分類和術(shù)語信息。另外,關(guān)于NAPT的分類和術(shù)語,[RFC2663]做了更多的定義。當一個內(nèi)部網(wǎng)主機通過NAT打開一個“外出”的TCP或UDP會話時,NAPT分配給這個會話一個公網(wǎng)IP和端口,用來接收外網(wǎng)的響應(yīng)的數(shù)據(jù)包,并經(jīng)過轉(zhuǎn)換通知內(nèi)部網(wǎng)的主機。這樣做的效果是,NAPT[私有IP:私有端口][公網(wǎng)IP:公網(wǎng)端口]之間建立了一個端口綁定。
端口綁定指定了NAPT將在這個會話的生存期內(nèi)進行地址轉(zhuǎn)換任務(wù)。這中間存在一個這樣的問題,如果P2P應(yīng)用程序從內(nèi)部網(wǎng)絡(luò)的一個[私有IP地址:端口]對同時發(fā)出多條會話給不同的外網(wǎng)主機,那么NAT會怎樣處理呢?這又可以分為錐形NAT (CONE NAT)對稱NAT (SYMMTRIC NAT)兩大類來考慮:
A.錐形NAT
(為什么叫做錐形呢?請看以下圖形,終端和外部服務(wù)器,都通過NAT分派的這個綁定地址對來傳送信息,就象一個漏斗一樣,篩選并傳遞信息)
                               
  當建立了一個 [私有IP:端口]-[公網(wǎng)IP:端口] 端口綁定之后,對于來自同一個[私有IP:端口]會話,錐形NAT服務(wù)器允許發(fā)起會話的應(yīng)用程序 重復(fù)使用這個端口綁定,一直到這個會話結(jié)束才解除(端口綁定)。
  例如,假設(shè) Client A(IP地址信息如上圖所示)通過一個錐形NAT 同時發(fā)起兩個外出的連接,它使用同一個內(nèi)部端口(10.0.0.1:1234)給公網(wǎng)的兩臺不同的服務(wù)器,S1和S2。錐形NAT 只分配一個公網(wǎng)IP和端口(155.99.25.11:62000)給這個兩個會話,通過地址轉(zhuǎn)換可以確保 Client使用端口的“同一性”(即這個Client只使用這個端口)。而基礎(chǔ)NATs和防火墻卻不能修改經(jīng)過的數(shù)據(jù)包端口號,它們可以看作是錐形NAT的精簡版本。
進一步分析可以將CONE NAT受限制錐形NAT (RESTRICT CONE)端口受限錐形NAT (PORT RESTRICT CONE) 三大類,以下是詳細論述: 分為全雙工錐形NAT (FULL CONE) ,
1.全雙工錐形NAT
當內(nèi)部主機發(fā)出一個“外出”的連接會話,就會創(chuàng)建了一個公網(wǎng)/私網(wǎng) 地址,一旦這個地址對被創(chuàng)建,全雙工錐形NAT會接收隨后任何外部端口傳入這個公共端口地址的通信。因此,全雙工錐形NAT有時候又被稱為"混雜"NAT。
2.受限制錐形NAT
受限制的錐形NAT會對傳入的數(shù)據(jù)包進行篩選,當內(nèi)部主機發(fā)出“外出”的會話時,NAT會記錄這個外部主機的IP地址信息,所以,也只有這些有記錄的外部IP地址,能夠?qū)⑿畔魅氲絅AT內(nèi)部,受限制的錐形NAT 有效的給防火墻提煉了篩選包的原則——即限定只給那些已知的外部地址“傳入”信息到NAT內(nèi)部。
3.端口受限錐形NAT
端口受限制的錐形NAT,與受限制的錐形NAT不同的是:它同時記錄了外部主機的IP地址和端口信息,端口受限制的錐形NAT給內(nèi)部節(jié)點提供了同一級別的保護,在維持端口“同一性”過程中,將會丟棄對稱NAT傳回的信息。
B.對稱NAT
對稱NAT,與Cone NAT是大不相同的,并不對會話進行端口綁定,而是分配一個全新的公網(wǎng)端口 給每一個新的會話。
還是上面那個例子:如果 Client A (10.0.0.1:1234)同時發(fā)起兩個 "外出" 會話,分別發(fā)往S1和S2。對稱Nat會分配公共地址155.99.25.11:62000給Session1,然后分配另一個不同的公共地址155.99.25.11:62001給Session2。對稱Nat能夠區(qū)別兩個不同的會話并進行地址轉(zhuǎn)換,因為在 Session1 和 Session2中的外部地址是不同的,正是因為這樣,Client端的應(yīng)用程序就迷失在這個地址轉(zhuǎn)換邊界線了,因為這個應(yīng)用程序每發(fā)出一個會話都會使用一個新的端口,無法保障只使用同一個端口了。
TCP和UDP通信中,(到底是使用同一個端口,還是分配不同的端口給同一個應(yīng)用程序),錐形NAT和對稱NAT各有各的理由。當然錐形NAT在根據(jù)如何公平地將NAT接受的連接直達一個已創(chuàng)建的地址對上有更多的分類。這個分類一般應(yīng)用在Udp通信(而不是Tcp通信上),因為NATs和防火墻阻止了試圖無條件傳入的TCP連接,除非明確設(shè)置NAT不這樣做。
三:NAT對session的處理
以下分析NAPT是依據(jù)什么策略來判斷是否要為一個請求發(fā)出的UDP數(shù)據(jù)包建立Session的.主要有一下幾個策略:
A. 源地址(內(nèi)網(wǎng)IP地址)不同,忽略其它因素, 在NAPT上肯定對應(yīng)不同的Session
B. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口不同,忽略其它的因素,則在NAPT上也肯定對應(yīng)不同的Session
C. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口相同,目的地址(公網(wǎng)IP地址)相同,目的端口不同,則在NAPT上肯定對應(yīng)同一個Session
D. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口相同,目的地址(公網(wǎng)IP地址)不同,忽略目的端口,則在NAPT上是如何處理Session的呢?
A,B,C三種情況的都是比較簡單的,可以很容易的實現(xiàn).而D的情況就比較復(fù)雜了.所以D情況才是我們要重點關(guān)心和討論的問題。
四:完全解決方案
以下針對四種SESSION與四種NAT的完全解決方案,為了方便將使用以下縮寫形式:
C代表 CONE NAT
S代表SYMMETRIC NAT,
FC代表 FULL CONE NAT,
RC代表 RESTRICT CONE NAT,
PC 代表 PORT RESTRICT CONE NAT.
首先依據(jù)CLIENT (客戶)端在NAT后 的個數(shù)不同可以分為兩大類:
TYPE ONE :一個在NAT后 + 一個在公網(wǎng)中.
這種情況下可以分為兩大類:
A. S VS 公網(wǎng):此種情況下,由于公網(wǎng)的地址在一個SESSION內(nèi)是不變的,所以可以打洞是可以成功的.
B. C VS 公網(wǎng): 與上面類似,這種情口下打洞是可以成功的.
TYPE TWO:兩個客戶都在NAT后面.
這種情況下也可以細分為兩大類:
A. 其中一個NAT 是 S(SYMMETRIC NAT) 的,既:S VS C或者是S VS S .
下面論證這種情口下按照常規(guī)打洞是行不通的,在常規(guī)打洞中,所有的客戶首先登陸到一個服務(wù)器上去.服務(wù)器記錄下每個客戶的[公網(wǎng)IP:端口],然后在打洞過程中就使用這個記錄的值,然而對于S的NAT來說,它并不綁定[私網(wǎng)IP:端口][公網(wǎng)IP:端口]的映射.所以在不同的SESSION中,NAT將會重新分配一對[公網(wǎng)IP:端口].這樣一來對于S型的NAT來說打洞的[公網(wǎng)IP:端口]與登記在服務(wù)器上的[公網(wǎng)IP:端口]是不同的.而且也沒有辦法將打洞的[公網(wǎng)IP:端口]通知到另一個位于NAT下的客戶端, 所以打洞是不會成功的.然而如果另一個客戶端是在公網(wǎng)時,打洞是可以的.前面已經(jīng)論證了這種情況.
這種情況下的解決方案是只能通過端口預(yù)測來進行打洞,具體解決方法如下:例如(以兩個都是S型的為例) NAT A 分配了它自己的UDP端口62000用來保持 客戶端A 服務(wù)器S的通信會話, NAT B 也分配了31000端口,用來保持客戶端B服務(wù)器S 的通信會話。通過與 服務(wù)器S的對話客戶端A 和 客戶端B都相互知道了對方所映射的真實IP和端口。
  客戶端A發(fā)送一條UDP消息到138.76.29.7:31001(請注意到端口號的增加),同時客戶端B發(fā)送一條UDP消息到155.99.25.11:62001。如果NAT A 和NAT B繼續(xù)分配端口給新的會話,并且從A-S和B-S的會話時間消耗得并不多的話,那么一條處于客戶端A和客戶端B之間的雙向會話通道就建立了。
  客戶端A發(fā)出的消息送達B導(dǎo)致了NAT A打開了一個新的會話,并且我們希望NAT A將會指派62001端口給這個新的會話,因為62001是繼62000,NAT會自動指派給 從服務(wù)器S客戶端A之間的新會話的端口號;類似的,客戶端B發(fā)出的消息送達A導(dǎo)致了 NAT B打開了一個新的會話,并且我們希望 NAT B將會指派31001這個端口給新的會話;如果兩個客戶端都正確的猜測到了對方新會話被指派的端口號,那么這個 客戶端A-客戶端B的雙向連接就被打通了。其結(jié)果如下圖所示:
明顯的,有許多因素會導(dǎo)致這個方法失?。喝绻@個預(yù)言的新端口(62001和31001) 恰好已經(jīng)被一個不相關(guān)的會話所使用,那么NAT就會跳過這個端口號,這個連接就會宣告失?。蝗绻麅蓚€NAT有時或者總是不按照順序來生成新的端口號,那么這個方法也是行不通的。
如果隱藏在NATA后的一個不同的客戶端X(或者在NAT B后)打開了一個新的“外出”UDP 連接,并且無論這個連接的目的如何;只要這個動作發(fā)生在客戶端A 建立了與服務(wù)器S的連接之后,客戶端A 與 客戶端B 建立連接之前;那么這個無關(guān)的客戶端X 就會趁人不備地“偷” 到這個我們渴望分配的端口。所以,這個方法變得如此脆弱而且不堪一擊,只要任何一個NAT方包含以上碰到的問題,這個方法都不會奏效。
在處于 cone NAT 系列的網(wǎng)絡(luò)環(huán)境中這個方法還是實用的;如果有一方為 cone NAT 而另外一方為 symmetric NAT,那么應(yīng)用程序就應(yīng)該預(yù)先發(fā)現(xiàn)另外一方的 NAT 是什么類型,再做出正確的行為來處理通信,這樣就增大了算法的復(fù)雜度,并且降低了在真實網(wǎng)絡(luò)環(huán)境中的普適性。
    最后,如果P2P的一方處在兩級或者兩級以上的NAT下面,并且這些NATS 接近這個客戶端是SYMMETRIC NAT的話,端口號預(yù)言是無效的!
因此,并不推薦使用這個方法來寫新的P2P應(yīng)用程序,這也是歷史的經(jīng)驗和教訓!
B. 兩個都是CONE NAT型.
這種情況下可以分為六大類型:
A: FC + FC
B: FC + RC
C: FC + PC
D: PC + RC
E: PC + PC
F: RC + RC
雖然有這么多種情況,但是由于CONE NAT 的特性,所以還是很好辦的,因為對于CONE NAT 來說,在同一個SESSION中它會綁定一對[私網(wǎng)IP:端口][公網(wǎng)IP:端口]的映射,所以它們打洞用的[公網(wǎng)IP:端口]與登記在服務(wù)器上的[公網(wǎng)IP:端口]是一致的,所以打洞是可以行的通的.
綜上所述,就已經(jīng)完全的概括了所有類型的NAT之間的可能的通信情況了.并且都提供了可行的解決方案.
五:對前一階段的總結(jié)
1.前一階段使用的打洞方法是有缺陷的,它只適應(yīng)于兩個都是FULL CONE NAT的類型的CLIENT(客戶端).以下論證它不適應(yīng)于兩個都是CONE NAT的類型中的
B: FC + RC
C: FC + PC
D: PC + RC
E: PC + PC
F: RC + RC
這五種情況.
因為對于受限的NAT它登記了外出包的[IP地址&端口],它僅僅接受這些已登記地址發(fā)過來的包,所以它們報告服務(wù)器的端口只能接受來自服務(wù)器的包.不能接受來自另一客戶端的包.所以前一階段的打洞方法是不可行的.
六: 存在的問題
按照理論.NAT將在一定時間后關(guān)閉UDP的一個映射,所以為了保持與服務(wù)器能夠一直通信,服務(wù)器必須要發(fā)送UDP心跳包,來保持映射不被關(guān)閉.這就需要一個合適的時間值.

posted on 2007-08-29 12:13 大龍 閱讀(757) 評論(0)  編輯 收藏 引用


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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线观看视频在线| 今天的高清视频免费播放成人| 亚洲第一区中文99精品| 久久久精品久久久久| 久久成人精品无人区| 欧美亚洲视频在线观看| 久久激情婷婷| 免费观看成人网| 亚洲国产经典视频| 日韩图片一区| 欧美一区二区私人影院日本| 欧美伊人久久| 久久午夜精品一区二区| 欧美jizzhd精品欧美巨大免费| 欧美国产日韩一区二区| 国产精品啊啊啊| 韩国一区二区在线观看| 99国产一区| 久久av一区| 91久久精品www人人做人人爽 | 国产网站欧美日韩免费精品在线观看| 国产精品日韩久久久久| 狠狠色丁香久久婷婷综合丁香| 亚洲欧洲精品一区二区三区不卡 | 亚洲欧美日韩国产中文在线| 久久久久国产精品人| 欧美日韩视频不卡| 精品成人在线观看| 一区二区三区四区五区在线| 亚洲日本va午夜在线影院| 亚洲欧美另类在线观看| 麻豆精品传媒视频| 日韩视频永久免费观看| 久久爱另类一区二区小说| 欧美日韩一区二区三区高清| 亚洲第一在线视频| 久久精品国产亚洲5555| 亚洲精品一区中文| 久久在线免费视频| 国产亚洲人成a一在线v站| 亚洲裸体俱乐部裸体舞表演av| 欧美亚洲一级片| 欧美成人在线影院| 久久av一区| 国产精品亚洲精品| 在线综合亚洲| 亚洲国产精品一区制服丝袜| 亚洲男人的天堂在线观看| 欧美紧缚bdsm在线视频| 亚洲国产成人av| 久久综合中文色婷婷| 午夜在线不卡| 国产婷婷成人久久av免费高清 | 米奇777在线欧美播放| 新67194成人永久网站| 国产精品欧美风情| 午夜精品久久99蜜桃的功能介绍| 亚洲日本成人女熟在线观看| 久久午夜av| 亚洲激情视频在线观看| 欧美成人中文字幕| 免费中文字幕日韩欧美| 亚洲国产毛片完整版| 欧美激情一区在线观看| 欧美激情中文不卡| 一区二区三区国产盗摄| 99精品国产一区二区青青牛奶| 欧美日韩国产在线| 亚洲免费影视| 午夜久久99| 亚洲第一搞黄网站| 欧美国产成人精品| 欧美全黄视频| 亚洲欧美日韩精品久久久| 亚洲综合日韩中文字幕v在线| 国产精品久久久久免费a∨大胸| 亚洲欧美成人在线| 欧美一区二区三区免费视| 伊人精品成人久久综合软件| 欧美顶级艳妇交换群宴| 欧美日韩国产一区二区三区地区| 亚洲资源在线观看| 欧美在线亚洲在线| 亚洲精品中文字幕在线观看| 日韩小视频在线观看| 欧美一区二区啪啪| 亚洲夜晚福利在线观看| 国产精品美女久久久久久久| 欧美伊人影院| 久久亚洲精品网站| 中日韩美女免费视频网址在线观看| 亚洲最新在线视频| 韩国一区二区在线观看| 亚洲美女福利视频网站| 国产欧美一区二区精品忘忧草| 美女脱光内衣内裤视频久久网站| 欧美好骚综合网| 久久久国际精品| 欧美精品电影| 久久人人九九| 欧美午夜在线观看| 免费不卡亚洲欧美| 国产精品热久久久久夜色精品三区| 久久免费少妇高潮久久精品99| 欧美激情网友自拍| 久久人人爽人人爽爽久久| 欧美日韩免费一区二区三区视频 | 久久亚洲风情| 欧美日韩国产黄| 欧美激情1区2区| 国产日本欧美视频| 日韩视频在线一区| 亚洲激情午夜| 久久se精品一区精品二区| 一区二区三区欧美日韩| 可以看av的网站久久看| 欧美一区二区三区久久精品茉莉花| 欧美成人午夜激情在线| 久久米奇亚洲| 国产一区二区三区高清| 亚洲一级二级| 亚洲欧美中文另类| 欧美精品一区在线发布| 欧美国产免费| 亚洲成人在线视频网站| 久久精品导航| 久久蜜臀精品av| 国产一区二区在线免费观看 | 亚洲午夜久久久久久尤物 | 欧美成人日韩| 亚洲福利精品| 看欧美日韩国产| 欧美好骚综合网| 最新日韩精品| 欧美经典一区二区三区| 亚洲国内在线| 亚洲欧洲一区二区三区| 老妇喷水一区二区三区| 欧美aⅴ99久久黑人专区| 激情综合自拍| 久久综合九色99| 欧美好骚综合网| 一本久道久久综合中文字幕| 欧美人体xx| 亚洲网址在线| 久久成人综合视频| 狠狠色狠狠色综合日日tαg| 欧美在线一级va免费观看| 久久一本综合频道| 久久国产精品亚洲77777| 国产毛片一区二区| 欧美在线影院| 欧美大片一区二区三区| 亚洲精品一区在线观看香蕉| 欧美理论电影网| 亚洲一区二区三区影院| 久久国产精品久久久| 国内外成人免费激情在线视频| 久久亚洲精品一区二区| 欧美国产日本高清在线| 日韩视频中文字幕| 国产精品视频精品视频| 久久精品电影| 亚洲人体一区| 久久福利毛片| 亚洲精品一二| 国产精品日韩久久久久| 欧美在线观看天堂一区二区三区 | 午夜精品久久久久久久久久久久| 国产免费观看久久黄| 老司机午夜精品视频在线观看| 亚洲人久久久| 久久久久一本一区二区青青蜜月| 狠狠色综合网| 欧美日韩性视频在线| 欧美一区二区三区在线看 | 激情久久中文字幕| 欧美日韩国产综合视频在线观看中文 | 91久久精品一区二区别| 国产精品丝袜91| 免费在线视频一区| 欧美在线综合| 在线视频精品一| 亚洲国产1区| 久久久午夜视频| 亚洲欧美中文日韩在线| 91久久精品一区二区别| 国产字幕视频一区二区| 欧美日韩在线播放三区| 美女精品视频一区| 久久不射2019中文字幕| 9l国产精品久久久久麻豆| 免费成人高清在线视频| 久久aⅴ国产欧美74aaa| 亚洲午夜激情免费视频| 亚洲六月丁香色婷婷综合久久| 国产综合久久久久久| 国产欧美日韩视频| 国产精品免费小视频| 欧美三区美女|