NAT的完全分析及其UDP穿透的完全解決方案_第1頁
NAT的完全分析及其UDP穿透的完全解決方案_第2頁
NAT的完全分析及其UDP穿透的完全解決方案_第3頁
NAT的完全分析及其UDP穿透的完全解決方案_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、一:基本術(shù)語防火墻防火墻限制了私網(wǎng)與公網(wǎng)的通信,它主要是將(防火墻)認(rèn)為未經(jīng)授權(quán)的的包丟棄,防火墻只是檢驗(yàn)包的數(shù)據(jù),并不修改數(shù)據(jù)包中的IP地址和TCP/UDP端口信息。網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)當(dāng)有數(shù)據(jù)包通過時(shí),網(wǎng)絡(luò)地址轉(zhuǎn)換器不僅檢查包的信息,還要將包頭中的IP地址和端口信息進(jìn)行修改。以使得處于NAT之后的機(jī)器共享幾個(gè)僅有的公網(wǎng)IP地址(通常是一個(gè))。網(wǎng)絡(luò)地址轉(zhuǎn)換器主要有兩種類型.P2P應(yīng)用程序P2P應(yīng)用程序是指,在已有的一個(gè)公共服務(wù)器的基礎(chǔ)上,并分別利用自己的私有地址或者公有地址(或者兩者兼?zhèn)洌﹣斫⒁粋€(gè)端到端的會話通信。P2P防火墻P2P防火墻是一個(gè)提供了防火墻的功能的P2P代理,但是不進(jìn)行地

2、址轉(zhuǎn)換.P2P-NATP2P-NAT 是一個(gè) P2P代理,提供了NAT的功能,也提供了防火墻的功能,一個(gè)最簡的P2P代理必須具有錐形NAT對Udp通信支持的功能,并允許應(yīng)用程序利用Udp打洞技術(shù)建立強(qiáng)健的P2P連接?;丨h(huán)轉(zhuǎn)換當(dāng)NAT的私網(wǎng)內(nèi)部機(jī)器想通過公共地址來訪問同一臺局域網(wǎng)內(nèi)的機(jī)器的時(shí),NAT設(shè)備等價(jià)于做了兩次NAT的事情,在包到達(dá)目標(biāo)機(jī)器之前,先將私有地址轉(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(二):網(wǎng)絡(luò)地址和端口轉(zhuǎn)換 (NAPT)這

3、是最普遍的情況,網(wǎng)絡(luò)地址/端口轉(zhuǎn)換器檢查、修改包的IP地址和TCP/UDP端口信息,這樣,更多的內(nèi)部主機(jī)就可以同時(shí)使用一個(gè)公網(wǎng)IP地址。請參考RFC1631和RFC2993及RFC2663這三個(gè)文檔了解更多的NAT分類和術(shù)語信息。另外,關(guān)于NAPT的分類和術(shù)語,RFC2663做了更多的定義。當(dāng)一個(gè)內(nèi)部網(wǎng)主機(jī)通過NAT打開一個(gè)“外出”的TCP或UDP會話時(shí),NAPT分配給這個(gè)會話一個(gè)公網(wǎng)IP和端口,用來接收外網(wǎng)的響應(yīng)的數(shù)據(jù)包,并經(jīng)過轉(zhuǎn)換通知內(nèi)部網(wǎng)的主機(jī)。這樣做的效果是,NAPT在 私有IP:私有端口 和公網(wǎng)IP:公網(wǎng)端口之間建立了一個(gè)端口綁定。端口綁定指定了NAPT將在這個(gè)會話的生存期內(nèi)進(jìn)行地址

4、轉(zhuǎn)換任務(wù)。這中間存在一個(gè)這樣的問題,如果P2P應(yīng)用程序從內(nèi)部網(wǎng)絡(luò)的一個(gè)私有IP地址:端口對同時(shí)發(fā)出多條會話給不同的外網(wǎng)主機(jī),那么NAT會怎樣處理呢?這又可以分為錐形NAT (CONE NAT)與對稱NAT (SYMMTRIC NAT)兩大類來考慮: A.錐形NAT(為什么叫做錐形呢?請看以下圖形,終端和外部服務(wù)器,都通過NAT分派的這個(gè)綁定地址對來傳送信息,就象一個(gè)漏斗一樣,篩選并傳遞信息) 當(dāng)建立了一個(gè) 私有IP:端口-公網(wǎng)IP:端口 端口綁定之后,對于來自同一個(gè)私有IP:端口會話,錐形NAT服務(wù)器允許發(fā)起會話的應(yīng)用程序 重復(fù)使用這個(gè)端口綁定,一直到這個(gè)會話結(jié)束才解除(端口綁定)?!巴恍浴?/p>

5、(即這個(gè)Client只使用這個(gè)端口)。而基礎(chǔ)NATs和防火墻卻不能修改經(jīng)過的數(shù)據(jù)包端口號,它們可以看作是錐形NAT的精簡版本。進(jìn)一步分析可以將CONE NAT受限制錐形NAT (RESTRICT CONE) 與端口受限錐形NAT (PORT RESTRICT CONE) 三大類,以下是詳細(xì)論述: 分為全雙工錐形NAT (FULL CONE) ,1.全雙工錐形NAT當(dāng)內(nèi)部主機(jī)發(fā)出一個(gè)“外出”的連接會話,就會創(chuàng)建了一個(gè)公網(wǎng)/私網(wǎng) 地址,一旦這個(gè)地址對被創(chuàng)建,全雙工錐形NAT會接收隨后任何外部端口傳入這個(gè)公共端口地址的通信。因此,全雙工錐形NAT有時(shí)候又被稱為"混雜"NAT。2.

6、受限制錐形NAT受限制的錐形NAT會對傳入的數(shù)據(jù)包進(jìn)行篩選,當(dāng)內(nèi)部主機(jī)發(fā)出“外出”的會話時(shí),NAT會記錄這個(gè)外部主機(jī)的IP地址信息,所以,也只有這些有記錄的外部IP地址,能夠?qū)⑿畔魅氲絅AT內(nèi)部,受限制的錐形NAT 有效的給防火墻提煉了篩選包的原則即限定只給那些已知的外部地址“傳入”信息到NAT內(nèi)部。3.端口受限錐形NAT端口受限制的錐形NAT,與受限制的錐形NAT不同的是:它同時(shí)記錄了外部主機(jī)的IP地址和端口信息,端口受限制的錐形NAT給內(nèi)部節(jié)點(diǎn)提供了同一級別的保護(hù),在維持端口“同一性”過程中,將會丟棄對稱NAT傳回的信息。B.對稱NAT對稱NAT,與Cone NAT是大不相同的,并不對會

7、話進(jìn)行端口綁定,而是分配一個(gè)全新的公網(wǎng)端口 給每一個(gè)新的會話。在TCP和UDP通信中,(到底是使用同一個(gè)端口,還是分配不同的端口給同一個(gè)應(yīng)用程序),錐形NAT和對稱NAT各有各的理由。當(dāng)然錐形NAT在根據(jù)如何公平地將NAT接受的連接直達(dá)一個(gè)已創(chuàng)建的地址對上有更多的分類。這個(gè)分類一般應(yīng)用在Udp通信(而不是Tcp通信上),因?yàn)镹ATs和防火墻阻止了試圖無條件傳入的TCP連接,除非明確設(shè)置NAT不這樣做。三:NAT對session的處理以下分析NAPT是依據(jù)什么策略來判斷是否要為一個(gè)請求發(fā)出的UDP數(shù)據(jù)包建立Session的.主要有一下幾個(gè)策略: A. 源地址(內(nèi)網(wǎng)IP地址)不同,忽略其它因素,

8、在NAPT上肯定對應(yīng)不同的SessionB. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口不同,忽略其它的因素,則在NAPT上也肯定對應(yīng)不同的SessionC. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口相同,目的地址(公網(wǎng)IP地址)相同,目的端口不同,則在NAPT上肯定對應(yīng)同一個(gè)SessionD. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口相同,目的地址(公網(wǎng)IP地址)不同,忽略目的端口,則在NAPT上是如何處理Session的呢?四:完全解決方案以下針對四種SESSION與四種NAT的完全解決方案,為了方便將使用以下縮寫形式:C代表 CONE NATS代表SYMMETRIC NAT,FC代表 FULL CONE N

9、AT,RC代表 RESTRICT CONE NAT,PC 代表 PORT RESTRICT CONE NAT.首先依據(jù)CLIENT (客戶)端在NAT后 的個(gè)數(shù)不同可以分為兩大類:TYPE ONE :一個(gè)在NAT后 + 一個(gè)在公網(wǎng)中.這種情況下可以分為兩大類:A. S VS 公網(wǎng):此種情況下,由于公網(wǎng)的地址在一個(gè)SESSION內(nèi)是不變的,所以可以打洞是可以成功的.B. C VS 公網(wǎng): 與上面類似,這種情口下打洞是可以成功的.TYPE TWO:兩個(gè)客戶都在NAT后面.這種情況下也可以細(xì)分為兩大類:A. 其中一個(gè)NAT 是 S(SYMMETRIC NAT) 型的,既:S VS C或者是S VS

10、S .下面論證這種情口下按照常規(guī)打洞是行不通的,在常規(guī)打洞中,所有的客戶首先登陸到一個(gè)服務(wù)器上去.服務(wù)器記錄下每個(gè)客戶的公網(wǎng)IP:端口,然后在打洞過程中就使用這個(gè)記錄的值,然而對于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:端口通知到另一個(gè)位于NAT下的客戶端, 所以打洞是不會成功的.然而如果另一個(gè)客戶端是在公網(wǎng)時(shí),打洞是可以的.前面已經(jīng)論證了這種情況.這種情況下的解決方案是只能通過端

11、口預(yù)測來進(jìn)行打洞,具體解決方法如下:例如(以兩個(gè)都是S型的為例) NAT A 分配了它自己的UDP端口62000,用來保持 客戶端A 與服務(wù)器S的通信會話, NAT B 也分配了31000端口,用來保持客戶端B與服務(wù)器S 的通信會話。通過與 服務(wù)器S的對話,客戶端A 和 客戶端B都相互知道了對方所映射的真實(shí)IP和端口。 客戶端A發(fā)出的消息送達(dá)B導(dǎo)致了NAT A打開了一個(gè)新的會話,并且我們希望NAT A將會指派62001端口給這個(gè)新的會話,因?yàn)?2001是繼62000后,NAT會自動指派給 從服務(wù)器S到客戶端A之間的新會話的端口號;類似的,客戶端B發(fā)出的消息送達(dá)A導(dǎo)致了 NAT B打開了一個(gè)新的

12、會話,并且我們希望 NAT B將會指派31001這個(gè)端口給新的會話;如果兩個(gè)客戶端都正確的猜測到了對方新會話被指派的端口號,那么這個(gè) 客戶端A客戶端B的雙向連接就被打通了。其結(jié)果如下圖所示:明顯的,有許多因素會導(dǎo)致這個(gè)方法失敗:如果這個(gè)預(yù)言的新端口(62001和31001) 恰好已經(jīng)被一個(gè)不相關(guān)的會話所使用,那么NAT就會跳過這個(gè)端口號,這個(gè)連接就會宣告失敗;如果兩個(gè)NAT有時(shí)或者總是不按照順序來生成新的端口號,那么這個(gè)方法也是行不通的。如果隱藏在NATA后的一個(gè)不同的客戶端X(或者在NAT B后)打開了一個(gè)新的“外出”UDP 連接,并且無論這個(gè)連接的目的如何;只要這個(gè)動作發(fā)生在客戶端A 建立

13、了與服務(wù)器S的連接之后,客戶端A 與 客戶端B 建立連接之前;那么這個(gè)無關(guān)的客戶端X 就會趁人不備地“偷” 到這個(gè)我們渴望分配的端口。所以,這個(gè)方法變得如此脆弱而且不堪一擊,只要任何一個(gè)NAT方包含以上碰到的問題,這個(gè)方法都不會奏效。在處于 cone NAT 系列的網(wǎng)絡(luò)環(huán)境中這個(gè)方法還是實(shí)用的;如果有一方為 cone NAT 而另外一方為 symmetric NAT,那么應(yīng)用程序就應(yīng)該預(yù)先發(fā)現(xiàn)另外一方的 NAT 是什么類型,再做出正確的行為來處理通信,這樣就增大了算法的復(fù)雜度,并且降低了在真實(shí)網(wǎng)絡(luò)環(huán)境中的普適性。 最后,如果P2P的一方處在兩級或者兩級以上的NAT下面,并且這些NATS 接近這

14、個(gè)客戶端是SYMMETRIC NAT的話,端口號預(yù)言是無效的!因此,并不推薦使用這個(gè)方法來寫新的P2P應(yīng)用程序,這也是歷史的經(jīng)驗(yàn)和教訓(xùn)!B. 兩個(gè)都是CONE NAT型的.這種情況下可以分為六大類型:A: FC + FCB: FC + RCC: FC + PC D: PC + RC E: PC + PC F: RC + RC 雖然有這么多種情況,但是由于CONE NAT 的特性,所以還是很好辦的,因?yàn)閷τ贑ONE NAT 來說,在同一個(gè)SESSION中它會綁定一對私網(wǎng)IP:端口和公網(wǎng)IP:端口的映射,所以它們打洞用的公網(wǎng)IP:端口與登記在服務(wù)器上的公網(wǎng)IP:端口是一致的,所以打洞是可以行的通的.綜上所述,就已經(jīng)完全的概括了所有類型的NAT之間的可能的通信情況了.并且都提供了可行的解決方案.五:對前一階段的總結(jié)1.前一階段使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論