




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向P2P通信的UDP Hole Punching技術研究與實現摘要NAT(NetrkAddressTranslatin),即網絡地址轉換,一定程度上解決了IPv4網絡地址匱乏的問題,但也給面向P2P通信的應用程序以及協(xié)議造成通信方面的障礙。本文介紹了網絡地址轉換的根本原理以及其對P2P通信方式造成的沖擊,簡單概括目前主要的NAT穿透NATTraversal技術,著重分析了UDPHlePunhing的穿透過程,最后給出一個輕量級的實現。關鍵詞P2P;NAT穿透;UDPHlePunhing1引言隨著Internet技術的迅猛開展,公網地址變的越來越珍貴,每臺計算機都分配一個公網地址顯得不實在際。
2、NATNetrkAddressTranslatin標準出現,一定程度上解決了公網地址緊缺的問題。它是一種把內部私有網絡地址翻譯成合法網絡地址的技術。它允許內部節(jié)點在內部網絡中使用內部地址,而當內部節(jié)點要與外部網絡進展通訊時,通過具有NAT功能(通常被集成到路由器、防火墻、ISDN路由器或者單獨的NAT設備中)的設備、軟件統(tǒng)稱NATsNetrkAddressTranslatr將內部地址交換成公網地址,從而在外部公網上正常使用。NAT根據其轉換方式,主要有三種類型:靜態(tài)NAT、動態(tài)地址NAT、網絡地址端口轉換NAPT。其中靜態(tài)NAT把內部網絡中的每個主機都被永久映射成外部網絡中的某個合法的地址。而
3、動態(tài)地址NAT那么是在外部網絡中定義了一系列的合法地址,采用動態(tài)分配的方法映射到內部網絡。NAPT是把內部地址映射到外部網絡的一個IP地址的不同端口上,該地址映射會在NAT設備上保持一定的時間,NAPT是最常見的NAT類型,因為它允許私有網絡后的主機共享一個公用IP地址,有效的節(jié)省了費用。無論是哪種NAT類型,從傳輸層觀察,當內部節(jié)點向外部網絡發(fā)送數據包時,NAT設備都是將數據包中的內部網絡IP地址與端口稱作“端點地址交換為外部合法的端點地址,反之亦然。NAT的特質屏蔽了內部網絡,所有內部網計算機對于外部網絡來說都是不可見的。在/S的應用模型中,效勞器位于公網中,客戶端位于公網或NAT設備后的
4、私有網絡,客戶端只是主動的與效勞器通信,客戶端之間并不需要通信,所以NAT在/S的應用模型中并不構成問題。但是,面向P2P通信這里的P2P通信不單單指的是P2P應用程序,任何需要在通信雙方“直接互連的地方,都可稱之為P2P通信的應用系統(tǒng)中,特別的,當需要通信的雙方位于NAT設備后的不同私有網絡中,任何一方相對與另一方來說都是不可見的,這樣造成雙方無法建立直接的互相可達的通信連接。目前,解決這種由于NAT存在造成的通信障礙的主要技術有:UPnPUniversalPlugandPlay、STUNSipleTraversalfUDPverNATs以及UDP/TPHlePunhing等。其中,UDP/
5、TPHlePunhing技術有效的保持了NAT網絡環(huán)境的透明性,它不需要理解網絡的拓撲信息以及其它特別的軟件環(huán)境的支持,可以被普通的應用程序實現。實驗說明,82的NAT網絡環(huán)境支持UDPHlePunhing技術,雖然其引入了冗余的消息傳遞以及延時,但不失為一個優(yōu)秀的NAT穿透解決方案。2UDPHlePunhing技術研究UDPHlePunhing的主要思想是:利用一個任何客戶端都可達的效勞器,在效勞器上事先存儲、維護客戶端的UDP公用端點地址,當雙方需要通信時,可以通過效勞器的“介紹獲取對方的端點地址,建立“直接的連接。圖1是一個具有NAT設備的簡單網絡拓撲圖,其中1,2位于不同的私有網絡中,
6、無法直接通信,但都可以訪問Server。下面分析UDPHlePunhing的根本流程:11向效勞器發(fā)出懇求,要求與2建立連接。2效勞器向1,2發(fā)送對方的公用端點地址,公用端點地址是效勞器根據1,2發(fā)送的UDP數據報的源端點地址“觀察到的,即NAT設備“翻譯后的端點地址。32接收到1的端點地址后,考慮到其所處網絡的NAT設備可能具有防火墻功能,利用1的端點地址作為目的地址,發(fā)送“穿洞UDP數據報,該數據報使得2網絡的NAT設備允許后續(xù)的以1端點地址為源地址的UDP數據報進入其內部網絡,像是在NAT設備的防火墻上“穿洞,對以1端點地址為源地址的UDP數據報開放“入口。41接收到2的端點地址后,以2
7、的端點地址為目的地址發(fā)送“探測UDP數據報,同樣該數據報也使得1網絡的NAT設備上形成“穿洞。52收到1的“探測數據報后,向1發(fā)送確認數據報。至此,雙方建立互通的UDP連接。在(2)中,考慮到1、2可能處于同一個私有網絡中,效勞器可以同時發(fā)送私有、公用端點地址,然后1、2先嘗試使用對方私有端點地址進展通信,失敗的情況下,再使用公用端點地址。圖1需要指出的是,并不是任何的NAT設備都支持這上述的“穿透過程。一個“友好的NAT設備必須是“非對稱的:客戶端的私有端點地址被NAT設備“翻譯成公用端點地址后,客戶端再使用此私有端點地址向其它目的端點地址發(fā)送數據報,NAT設備并不會因為目的端點地址的改變而
8、改變映射的公用端點地址,否那么,1、2獲取的對方端點地址因為“映射改變而失效。同時,對于復雜的具有多層NAT設備的網絡環(huán)境,NAT設備也需提供“回環(huán)轉換的功能:NAT設備接收來自內部網絡的數據報,但是目的端點地址卻是其原先“對外映射的公用端點地址,此時NAT設備仍可以“回環(huán)的把目的端點地址“翻譯成內部網絡端點地址,并把數據報轉發(fā)回內部網絡。3基于UDPHlePunhing的實現圖2本文基于.Net框架開發(fā)一個輕量級的面向對象類庫,完好的實現UDPHlePunhing的穿透過程。圖2是類庫灰底框分層構造,描繪了類庫邊界以及體系構造。其中NATlient/ServerAPI層是類庫對外提供的效勞器
9、與客戶端的編程接口;NATTraversalLayer是整個類庫的核心,處理UDPHlePunhing過程中的各種情境,建立客戶端之間“直接連接等;AsynhrnusUDPSket是基于UDP的異步收發(fā)套接字,為上下層收發(fā)數據。圖3是整個實現的局部類圖限于篇幅省略了方法與屬性。下面是局部類功能的簡單描繪:1客戶端:NATlient是客戶端的用戶接口,負責客戶端的登陸、登出,向下層轉發(fā)字節(jié)形式的用戶數據,同時向上層傳遞接收到的用戶數據;nnetinanager是整個客戶端的核心,它是客戶端多個UDP套接字的管理器,負責啟動穿透過程,接收來自其它客戶端、效勞器的各種消息以及作出相應響應。essag
10、eBufferQueue與QueueithTier是發(fā)送到其它客戶端的用戶數據緩存區(qū),放入緩存區(qū)內的數據假如在一個很小的時間間隔內還沒發(fā)送出去,將通知客戶端發(fā)送失敗。NATSessinanager與NATSessin負責管理其它客戶端的端點地址(包括客戶端的私有、公用端點地址);RegisterUtility具有向效勞器注冊本地UDP套接字的功能,它能探測出客戶端到效勞器之間NAT設備的端點地址映射保持時間長短,動態(tài)調整UDP套接字注冊間隔,從而減少客戶端、效勞器的負擔。2效勞器:NATServer負責客戶端消息的處理,比方注冊消息,懇求客戶端的端點地址,通知客戶端準備接收來自其它客戶端的用戶
11、數據等;lientapTable與SketapIte存放、管理客戶端注冊的UDP套接字端點地址。3其它:根據UDPHlePunhing穿透過程中的各種情境,需要定義多種的消息類型,具有各自的消息負載格式,表1是各種消息類功能說明。圖3表1RegRUnReg客戶端向效勞器端發(fā)送的UDP套接字注冊、取消注冊消息。1SendUserData2RelayUserData1上層的用戶數據消息。2中轉消息:客戶端之間無法“直接通信時,可以通過效勞器中轉的用戶數據消息。1RequsetEndPint2ReplyEndPint1客戶端懇求效勞器提供客戶端端點地址消息。2效勞器提供客戶端端點地址消息。1Prbe
12、ReEiver2AKSenderPrbe1客戶端探測目的客戶端是否可達的消息;2目的客戶端確認發(fā)起客戶端探測可達消息。RequestTReeive效勞器要求客戶端準備接收來自其它客戶端用戶數據消息。ReeiverPunhing客戶端“穿洞消息。RedueRegisterSpan效勞器要求客戶端減少UDP套接字的注冊間隔時間。4完畢語現實的網絡環(huán)境中,NAT是一個普遍存在現象,基于P2P通信的應用程序要求參與客戶端的通信對等性,造成多數通信終端無法“直接的收發(fā)數據,因此NAT穿透是基于P2P通信的應用系統(tǒng)必須首要解決的問題。目前,由于NAT設備的多樣性,還沒有一種技術可以“完全有效解決NAT穿透過程中的各種問題,因此一個強健的基于P2P通信的系統(tǒng),需要結合運用多種穿透方法,使得通信終端可以暢通無阻的進展“交流。參考文獻1B.Frd,P.Srisuresh,D.Kegel.Peer-t-PeeruniatinArssNetrkAddressTranslatrs.USENIXAnnualTehnialnferene,April20222ZhuHu.NATTraversalTehnique
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 移動閱讀應用的內容策劃與推廣考核試卷
- 糧油產品故事營銷與消費者情感共鳴考核試卷
- 肉制品加工業(yè)的市場戰(zhàn)略規(guī)劃考核試卷
- 海水養(yǎng)殖病害生物控制技術研究考核試卷
- 紡織鞋材的耐磨損性能評估考核試卷
- 聚苯乙烯纖維的化學性質和應用考核試卷
- 綠色供應鏈企業(yè)環(huán)保實踐考核試卷
- 熱電聯(lián)產項目風險評估考核試卷
- 糖果與巧克力品牌故事與企業(yè)文化塑造考核試卷
- 球類生產環(huán)境保護與可持續(xù)發(fā)展考核試卷
- 定額〔2025〕1號文-關于發(fā)布2018版電力建設工程概預算定額2024年度價格水平調整的通知
- 【MOOC】機械原理-西北工業(yè)大學 中國大學慕課MOOC答案
- 一種基于STM32的智能門鎖系統(tǒng)的設計-畢業(yè)論文
- 分紅險、萬能險銷售資質考試真題模擬匯編(共763題)
- 魚臺工程運河杯匯報材料
- GB/T 16895.25-2022低壓電氣裝置第7-711部分:特殊裝置或場所的要求展覽、展示及展區(qū)
- 《運營管理》案例庫
- 煤礦安全監(jiān)控系統(tǒng)設備管理報廢制度
- 機關事業(yè)單位退休人員養(yǎng)老金領取資格確認表
- 第五屆“國藥工程杯”全國大學生制藥工程設計競賽
- 柔性主動防護網分項工程質量檢驗評定表
評論
0/150
提交評論