版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 穿NAT的實(shí)現(xiàn)技術(shù)分析作者:何志川(盛科網(wǎng)絡(luò))1. NAT設(shè)備分類: 1.1基本NAT/Basic NAT 當(dāng)數(shù)據(jù)包穿過(guò)NAT時(shí),基本NAT映射內(nèi)部主機(jī)的私有IP為公網(wǎng)IP,不改變TCP/UDP 端口號(hào)。僅僅當(dāng)基本NAT有一個(gè)公網(wǎng)IP地址池,它才發(fā)生效用,從池中做代表內(nèi)部主機(jī)的地址綁定。 1.2網(wǎng)絡(luò)地址/端口轉(zhuǎn)換器(NAPT) 現(xiàn)在最普通的端口轉(zhuǎn)換器,他檢查并且修改穿越邊界包的IP地址和TCP/UDP端口 號(hào),多個(gè)內(nèi)部主機(jī)同時(shí)共享一個(gè)公網(wǎng)IP。進(jìn)一步NAPT又分為兩類。參考NAT-TRAD和NAT-TERM取得關(guān)于NAT分類和術(shù)語(yǔ)的更多信息。進(jìn)一步劃分NAPT的術(shù)語(yǔ)在最近的STUN文檔中。當(dāng)
2、內(nèi)部主機(jī)通過(guò)NAPT打開(kāi)一個(gè)向外的TCP或UDP會(huì)話時(shí),NAPT分配給這個(gè)會(huì)話一個(gè)公共IP地址和端口,以便接下來(lái)外部節(jié)點(diǎn)的響應(yīng)包能夠被 NAPT接收、解釋、轉(zhuǎn)發(fā)給內(nèi)部節(jié)點(diǎn)。效果就是NAPT建立了一個(gè)如下的端口綁定:(private IP addr, private port number)和(public IP addr, public port number)。端口綁定定義了地址轉(zhuǎn)換,NAPT將完成這個(gè)會(huì)話過(guò)程。NAPT是依據(jù)什么策略來(lái)判斷是否要為一個(gè)請(qǐng)求發(fā)出的UDP數(shù)據(jù)包建立Session的呢?主要有一下幾個(gè)策略: A. 源地址(內(nèi)網(wǎng)IP地址)不同,忽略其它因素, 在NAPT上肯定對(duì)應(yīng)不同
3、的SessionB. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口不同,忽略其它的因素,則在NAPT上也肯定對(duì)應(yīng)不同的SessionC. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口相同,目的地址(公網(wǎng)IP地址)相同,目的端口不同,則在NAPT上肯定對(duì)應(yīng)同一個(gè)SessionD. 源地址(內(nèi)網(wǎng)IP地址)相同,源端口相同,目的地址(公網(wǎng)IP地址)不同,忽略目的端口,則在NAPT上是如何處理Session的呢? 錐形NAT/Cone NAT 對(duì)于到同一個(gè)IP地址,任意端口的連接分配使用同一個(gè)Session; 對(duì)于到不同的IP地址,任意端口的連接也使用同一個(gè)Session.我們稱此種NAPT為 Cone NAPT. 也就
4、是只要本地綁定的UDP端口相同, 發(fā)出的目的地址不管是否相同, 都使用同一個(gè)Session.。 Server S1 Server S2 | | +-+-+ | Session 1 (A-S1) | Session 2 (A-S2) | Cone NAT | Session 1 (A-S1) | Session 2 (A-S2) v .1:1234 v | v .1:1234 v | Client A .1:1234 根據(jù)NAT能夠有多少的自由接收已經(jīng)建立連接(public IP, public port)的輸入數(shù)據(jù),Cone NAT可以被進(jìn)一步劃分。這種分類通常僅用于UDP方式數(shù)據(jù)交換,因?yàn)镹
5、AT和防火墻會(huì)無(wú)條件拒絕tcp連接,除非在其他地方有特別的設(shè)置。 完全的(Full) Cone NAT 在為一個(gè)向外的會(huì)話建立了公/私端口綁定之后,full cone NAT隨后將接收來(lái)自公網(wǎng)上任何終端節(jié)點(diǎn)相應(yīng)端口的輸入通訊。Full cone NAT有時(shí)也稱為“混雜”(promiscuous)NAT. 受限的(Restricted) Cone NAT 受限的cone NAT僅僅在外部輸入數(shù)據(jù)包的端口匹配內(nèi)部主機(jī)曾經(jīng)發(fā)給外部數(shù)據(jù)時(shí)使用的映射端口才轉(zhuǎn)發(fā)給內(nèi)部主機(jī)。受限的cone NAT精簡(jiǎn)采用了防火墻的原則,通過(guò)限制輸入數(shù)據(jù)包為已知的外部IP地址,來(lái)拒絕一些外部的主動(dòng)連接請(qǐng)求。 端口受限(Por
6、t-Restricted) Cone NAT 反過(guò)來(lái),對(duì)端口受限(Port-Restricted) Cone NAT,如果外部ip地址和端口匹配那些內(nèi)部主機(jī)曾經(jīng)向外發(fā)包在NAT上映射的端口,他就將這個(gè)輸入包轉(zhuǎn)發(fā)給相應(yīng)的內(nèi)部主機(jī)。當(dāng)端口受限Cone NAT在維護(hù)這種穿越映射所需的端口身份表時(shí),他提供了和對(duì)稱(symmetric)NAT一樣的對(duì)(未有映射的)主動(dòng)的外部請(qǐng)求有同樣的保護(hù)。 對(duì)稱NAT / Symmetric NAT 對(duì)稱NAT / Symmetric NAT 作為對(duì)比,對(duì)于到同一個(gè)IP地址,任意端口的連接分配使用同一個(gè)Session; 對(duì)于到不同的IP地址, 任意端口的連接使用不同的
7、Session. 我們稱此種NAPT為 Symmetric NAPT. 也就是只要本地綁定的UDP端口相同, 發(fā)出的目的IP地址不同,則會(huì)建立不同的Session. Server S1 Server S2 | | +-+-+ | Session 1 (A-S1) | Session 2 (A-S2) | Symmetric NAT | Session 1 (A-S1) | Session 2 (A-S2) v .1:1234 v | v .1:1234 v | Client A .1:12342. 跨越中間設(shè)備P2P通訊的技術(shù)當(dāng)前p2p跨越中間設(shè)備通訊實(shí)現(xiàn)的技術(shù)主要有以下幾種:2.1. 中繼/
8、Relaying 即在公有網(wǎng)絡(luò)中放置一個(gè)服務(wù)器,使私有網(wǎng)絡(luò)的兩個(gè)客戶端通過(guò)服務(wù)器建立通信。 比如,2個(gè)客戶端A和B,初始發(fā)起了TCP或UDP的連接到一個(gè)已知的有永久IP地址的server S。然而,客戶端是分居在兩個(gè)私有網(wǎng)絡(luò)中的,他們各自的中間設(shè)備阻止了一方直接向另一方發(fā)起連接。 Server S | +-+-+ | | NAT A NAT B | | Client A Client B 兩個(gè)客戶端可通過(guò)server S來(lái)中繼他們的消息,而不是試圖直接連接。比如,要發(fā)消息給B,A只要把消息通過(guò)已經(jīng)建立的連接發(fā)給S,然后S使用已經(jīng)建立的連接發(fā)給B。 這個(gè)方法的優(yōu)點(diǎn)是,只要雙方都連上了server
9、,總能工作。但明顯的不足在于:無(wú)謂的消耗了服務(wù)器的處理能力和網(wǎng)絡(luò)帶寬,而且,即使和服務(wù)器連接的很好,雙方的通訊延時(shí)也增加了。TURN 協(xié)議 TURN 實(shí)現(xiàn)了一種相對(duì)可靠的中繼方式。在基于視頻碼流轉(zhuǎn)發(fā)的實(shí)現(xiàn)方式中,采用此種方式。2.2. 反向連接/Connection reversal 如果僅有一個(gè)客戶端在中間設(shè)備后面,那么第二項(xiàng)技術(shù)就可行了。比如,客戶端A在一個(gè)NAT后面,而B(niǎo)有一個(gè)全球可路由的IP地址,如下圖: Server S | | +-+-+ | | NAT A | | | | | Client A Client B 客戶端A的私有IP為 現(xiàn)在假設(shè)客戶端B要發(fā)起一個(gè)和A的初始連接會(huì)話。
10、B首次嘗試連接A要么在A自認(rèn) 為的地址 在試圖和A建立連接失敗后,B可以借用S來(lái)中繼一個(gè)給A的請(qǐng)求,告訴A做一個(gè)反向的到B的連接。A根據(jù)從S受到的這個(gè)請(qǐng)求,打開(kāi)一個(gè)TCP連接到B的ip:port。A的NAT會(huì)許可這個(gè)連接,因?yàn)樗麖姆阑饓?nèi)發(fā)起,并且B能夠收到這個(gè)連接,因?yàn)樗辉谌魏蔚闹虚g設(shè)備后面。 許多當(dāng)前的P2P系統(tǒng)實(shí)現(xiàn)了這一技術(shù)。當(dāng)然,他的主要限制在于:僅有一端在NAT后面的情況才適用,在越來(lái)越普遍的兩端都在NATs后面的情況,就不行了。 因?yàn)榉聪蜻B接不是一般的解決方案,不推薦作為一個(gè)主要策略。應(yīng)用程序可以選擇進(jìn)行反向連接,但是當(dāng)正向和反向都失敗時(shí),他應(yīng)能回來(lái)再用其他的方法,比如通過(guò)中繼。
11、2.3. UDP穿孔(hole punching) UDP穿孔技術(shù)既在私有網(wǎng)絡(luò)的兩個(gè)客戶端穿越中間設(shè)備建立彼此的直接連接,即使當(dāng)通訊雙方都在中間設(shè)備的后面。這項(xiàng)技術(shù)在RFC 3027的5.1節(jié)NAT-PORT有簡(jiǎn)要的介紹,也在Internet的其他地方有非正式的描述KEGEL, 并且被用在最近的一些協(xié)議種TEREDO, ICE。不幸的是,和他的名字所暗示的一樣,這個(gè)技術(shù)僅僅適用UDP。 我們將要考慮2種具體的情況,和應(yīng)用程序如何以優(yōu)雅的設(shè)計(jì)來(lái)處理這兩種情況。在第一種情況中,代表了一種一般的情況,兩個(gè)要建立P2P通訊的客戶端被置于兩個(gè)不同的NATs之后。第二種情況是,兩個(gè)要建立P2P通訊的客戶端
12、在同一個(gè)NATs的后面,但是未必知道他們的這個(gè)處境。. 兩端在不同的NATs之后 假定clients A 和 B 都有自己的私有IP地址,并且在不同的NATs之后。在A,B,S上運(yùn)行的應(yīng)用程序都使用UDP的1234端口。A和B都已和S建立了UDP連接,使得NAT A為A和S的會(huì)話分配了公網(wǎng)的UDP端口62000,NAT B為B和S的會(huì)話分配了公網(wǎng)UDP端口31000。 Server S | | +-+-+ | | NAT A NAT B | | | | Client A Client B .1:1234 .3:1234. 雙端在同一個(gè)NAT之后 現(xiàn)在考慮雙端在同一個(gè)NAT之后的情況(他們可能并
13、不知道),這樣他們就在同一個(gè)私有的IP地址空間中。A和S建立了UDP會(huì)話,NAT分配了62000端口,B和S建立了UDP連接,NAT分配了62001端口。 Server S | | NAT | +-+-+ | | Client A Client B .1:1234 .3:1234 假定A和B使用上面提到的UDP穿孔技術(shù),通過(guò)S為介紹人來(lái)建立P2P連接。則會(huì)出現(xiàn)當(dāng)A和B在建立通信的時(shí)候是通過(guò)他們的公網(wǎng)地址建立的,這就可能增加A和B的潛在的對(duì)話同時(shí)加重了NAT的負(fù)擔(dān)。 對(duì)這個(gè)問(wèn)題的解決方法是直接轉(zhuǎn)發(fā)(straightforward)。當(dāng)A和B通過(guò)S初始交換地址的時(shí)候,他們應(yīng)該包括自己看到的自己的I
14、P地址和端口和由server看到的自己的IP地址和端口??蛻舳巳缓笸瑫r(shí)給這兩個(gè)地址發(fā)送數(shù)據(jù),并使用第一個(gè)成功進(jìn)行通訊的地址。如果兩個(gè)客戶端在同一個(gè)NAT的后面,那么,直接發(fā)往私有地址的包會(huì)先到達(dá),就產(chǎn)生了一個(gè)直接連接的通道,而與NAT無(wú)關(guān)了。如果兩個(gè)客戶端在不同的NATs后面,直接發(fā)往私有地址的包就根本不能到達(dá),但客戶端將又希望通過(guò)各自的公網(wǎng)地址建立連接。然而,對(duì)這些包進(jìn)行某種授權(quán)(比如通過(guò)GUID)是重要的,因?yàn)樵诓煌琋ATs的情況中,A直接發(fā)往B私有地址的信息完全可能到達(dá)和A同一個(gè)私網(wǎng)的其他主機(jī)(or vice versa)。具體實(shí)現(xiàn)可以按照以下步驟進(jìn)行:假如A和B是處于統(tǒng)一私網(wǎng)的兩個(gè)客戶
15、端,則在A、B向S注冊(cè)時(shí)提供各自私網(wǎng)的IP地址和GUID(全局唯一標(biāo)識(shí)符)信息,依照在AB建立連接時(shí):A向B的公網(wǎng)地址發(fā)一個(gè)UDP包,同時(shí)請(qǐng)求S要求B向A的公網(wǎng)地址發(fā)一個(gè)UDP包到A的公網(wǎng)地址并且向B發(fā)送A的GUID(全局唯一標(biāo)識(shí)符)信息,這樣B信任A的情況下A方能建立成功的連接。. 對(duì)端由多個(gè)NATs分開(kāi) Server S | | NAT X | +-+-+ | | NAT A NAT B | | | | Client A Client B .1:1234 .3:1234在這種情況下A和B只能通過(guò)S端看到的全局的公網(wǎng)地址來(lái)進(jìn)行P2P通訊。3. 基于視頻監(jiān)控(會(huì)議)的穿NAT的實(shí)現(xiàn) 在目前視頻
16、監(jiān)控(會(huì)議)時(shí),碼流從編碼端(編碼)傳輸至解碼端(客戶端)可能涉及到兩種方式:碼流通過(guò)服務(wù)器轉(zhuǎn)發(fā)和碼流直發(fā)。兩種方式對(duì)于NAPT(The IP Network Address/Port Translator) 進(jìn)行UDP穿透的具體情況分析,首先明確的將NAPT設(shè)備按照上面的說(shuō)明分為: Symmetric NAPT 和 Cone NAPT。3.1 通過(guò)服務(wù)器進(jìn)行碼流轉(zhuǎn)發(fā)方式第一種情況, 雙方都是Symmetric NAPT:第二種情況, 雙方都是Cone NAPT:第三種情況, 一個(gè)是Symmetric NAPT, 一個(gè)是Cone NAPT:對(duì)于以下三種情況,參考2.1只要通信的雙方向建立交換的
17、轉(zhuǎn)發(fā)服務(wù)器發(fā)送探測(cè)包都可以實(shí)現(xiàn)碼流正確轉(zhuǎn)發(fā)。3.2 碼流直發(fā)方式(p2p穿NAT的典型應(yīng)用)應(yīng)用:錄象文件穿NAT下載第一種情況, 雙方都是Symmetric NAPT:此情況應(yīng)給不存在什么問(wèn)題,肯定是不支持UDP穿透。第二種情況, 雙方都是Cone NAPT:此情況是我們需要的,可以進(jìn)行UDP穿透。第三種情況, 一個(gè)是Symmetric NAPT, 一個(gè)是Cone NAPT:此情況比較復(fù)雜,但我們按照上面的描述和數(shù)據(jù)機(jī)構(gòu)進(jìn)行一下分析也很容易就會(huì)明白了, 分析如下,假設(shè): A -> Symmetric NAT, B -> Cone NAT1. A 想連接 B, A 從服務(wù)器那兒獲取到 B 的NAT地址和映射端口, A 通知服務(wù)器,服務(wù)器告知 B A的NAT地址和映射端口, B 向 A 發(fā)起連接,A 肯定無(wú)法接收到。此時(shí) A 向 B 發(fā)起連接, A 對(duì)應(yīng)的NAT建立了一個(gè)新的Session,分配了一個(gè)新的映射端口, B 的 NAT 接收到UDP包后,在自己的映射表中查詢,無(wú)法找到映射項(xiàng),因此將包丟棄了。2. B 想連接
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師培訓(xùn)計(jì)劃
- 招生問(wèn)答解析
- 2025年度特色小吃店廚房設(shè)備承包合同7篇
- 2025年度綠色宜居之城建設(shè)技術(shù)咨詢服務(wù)合同4篇
- 二零二五版建筑材料租賃環(huán)保標(biāo)準(zhǔn)合同范本3篇
- 加油站非法投放監(jiān)控
- 二零二五版高端房產(chǎn)開(kāi)盤(pán)項(xiàng)目投資合同2篇
- 2024年08月招商銀行大連分行2024秋季校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年04月安徽中國(guó)銀行安徽省分行春招投遞職位申請(qǐng)反饋筆試歷年參考題庫(kù)附帶答案詳解
- 2024年03月四川綿陽(yáng)市商業(yè)銀行信息科技人力外包供應(yīng)商筆試歷年參考題庫(kù)附帶答案詳解
- 小學(xué)數(shù)學(xué)六年級(jí)解方程練習(xí)300題及答案
- 電抗器噪聲控制與減振技術(shù)
- 中醫(yī)健康宣教手冊(cè)
- 2024年江蘇揚(yáng)州市高郵市國(guó)有企業(yè)招聘筆試參考題庫(kù)附帶答案詳解
- 消費(fèi)醫(yī)療行業(yè)報(bào)告
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 運(yùn)輸行業(yè)員工崗前安全培訓(xùn)
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
- 幼兒園教師培訓(xùn):計(jì)數(shù)(數(shù)數(shù))的核心經(jīng)驗(yàn)
- 如何撰寫(xiě)和發(fā)表高水平的科研論文-good ppt
評(píng)論
0/150
提交評(píng)論