面向P2P通信的UDP Hole Punching技術(shù)研究與實現(xiàn)_第1頁
面向P2P通信的UDP Hole Punching技術(shù)研究與實現(xiàn)_第2頁
面向P2P通信的UDP Hole Punching技術(shù)研究與實現(xiàn)_第3頁
面向P2P通信的UDP Hole Punching技術(shù)研究與實現(xiàn)_第4頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

1、面向P2P通訊的UDP Hole Punching技能研究與實現(xiàn)摘要NAT(NetrkAddressTranslatin),即網(wǎng)絡(luò)地點轉(zhuǎn)換,必然程度上辦理了IPv4網(wǎng)絡(luò)地點匱乏的題目,但也給面向P2P通訊的應用步伐以及協(xié)議造成通訊方面的停滯。本文先容了網(wǎng)絡(luò)地點轉(zhuǎn)換的根本原理以及其對P2P通訊方法造成的打擊,簡樸歸納綜合如今重要的NAT穿透NATTraversal技能,側(cè)重闡發(fā)了UDPHlePunhing的穿透歷程,末了給出一個輕量級的實現(xiàn)。關(guān)鍵詞P2P;NAT穿透;UDPHlePunhing1弁言隨著Internet技能的迅猛生長,公網(wǎng)地點變的越來越貴重,每臺盤算機都分派一個公網(wǎng)地點顯得不切現(xiàn)

2、實。NATNetrkAddressTranslatin尺度出現(xiàn),必然程度上辦理了公網(wǎng)地點緊缺的題目。它是一種把內(nèi)部私有網(wǎng)絡(luò)地點翻譯成正當網(wǎng)絡(luò)地點的技能。它容許內(nèi)部節(jié)點在內(nèi)部網(wǎng)絡(luò)中利用內(nèi)部地點,而當內(nèi)部節(jié)點要與外部網(wǎng)絡(luò)舉行通訊時,通過具有NAT成效(通常被集成到路由器、防火墻、ISDN路由器大概單獨的NAT裝備中)的裝備、軟件統(tǒng)稱NATsNetrkAddressTranslatr將內(nèi)部地點更換成公網(wǎng)地點,從而在外部公網(wǎng)上正常利用。NAT按照其轉(zhuǎn)換方法,重要有三種范例:靜態(tài)NAT、動態(tài)地點NAT、網(wǎng)絡(luò)地點端口轉(zhuǎn)換NAPT。此中靜態(tài)NAT把內(nèi)部網(wǎng)絡(luò)中的每個主機都被永世映射成外部網(wǎng)絡(luò)中的某個正當?shù)牡攸c

3、。而動態(tài)地點NAT那么是在外部網(wǎng)絡(luò)中界說了一系列的正當?shù)攸c,接納動態(tài)分派的要領(lǐng)映射到內(nèi)部網(wǎng)絡(luò)。NAPT是把內(nèi)部地點映射到外部網(wǎng)絡(luò)的一個IP地點的差異端口上,該地點映射會在NAT裝備上保持必然的時間,NAPT是最常見的NAT范例,由于它容許私有網(wǎng)絡(luò)后的主機共享一個公用IP地點,有用的節(jié)流了用度。無論是哪種NAT范例,從傳輸層不雅察,當內(nèi)部節(jié)點向外部網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包時,NAT裝備都是將數(shù)據(jù)包中的內(nèi)部網(wǎng)絡(luò)IP地點與端口稱作“端點地點更換為外部正當?shù)亩它c地點,反之亦然。NAT的特質(zhì)屏蔽了內(nèi)部網(wǎng)絡(luò),全部內(nèi)部網(wǎng)盤算機對付外部網(wǎng)絡(luò)來說都是不成見的。在/S的應用模子中,辦事器位于公網(wǎng)中,客戶端位于公網(wǎng)或NAT裝

4、備后的私有網(wǎng)絡(luò),客戶端只是自動的與辦事器通訊,客戶端之間并不必要通訊,以是NAT在/S的應用模子中并不組成題目。但是,面向P2P通訊這里的P2P通訊不但單指的是P2P應用步伐,任何必要在通訊兩邊“直接互連的地方,都可稱之為P2P通訊的應用體系中,特殊的,當必要通訊的兩邊位于NAT裝備后的差異私有網(wǎng)絡(luò)中,任何一方相對與另一方來說都是不成見的,如許造成兩邊無法創(chuàng)立直接的彼此可達的通訊毗連。如今,辦理這種由于NAT存在造成的通訊停滯的重要技能有:UPnPUniversalPlugandPlay、STUNSipleTraversalfUDPverNATs以及UDP/TPHlePunhing等。此中,U

5、DP/TPHlePunhing技能有用的保持了NAT網(wǎng)絡(luò)環(huán)境的透明性,它不必要相識網(wǎng)絡(luò)的拓撲信息以及別的特殊的軟件環(huán)境的支持,可以被平凡的應用步伐實現(xiàn)。實行表白,82的NAT網(wǎng)絡(luò)環(huán)境支持UDPHlePunhing技能,固然其引入了冗余的消息通報以及延時,但不失為一個良好的NAT穿透辦理方案。2UDPHlePunhing技能研究UDPHlePunhing的重要頭腦是:利用一個任何客戶端都可達的辦事器,在辦事器上事先存儲、維護客戶端的UDP公用端點地點,當兩邊必要通訊時,可以通過辦事器的“先容獵取對方的端點地點,創(chuàng)立“直接的毗連。圖1是一個具有NAT裝備的簡樸網(wǎng)絡(luò)拓撲圖,此中1,2位于差異的私有網(wǎng)

6、絡(luò)中,無法直接通訊,但都可以拜候Server。下面闡發(fā)UDPHlePunhing的根本流程:11向辦事器發(fā)出哀求,要求與2創(chuàng)立毗連。2辦事器向1,2發(fā)送對方的公用端點地點,公用端點地點是辦事器按照1,2發(fā)送的UDP數(shù)據(jù)報的源端點地點“不雅察到的,即NAT裝備“翻譯后的端點地點。32吸收到1的端點地點后,思量到其所處網(wǎng)絡(luò)的NAT裝備大概具有防火墻成效,利用1的端點地點作為目的地點,發(fā)送“穿洞UDP數(shù)據(jù)報,該數(shù)據(jù)報使得2網(wǎng)絡(luò)的NAT裝備容許后續(xù)的以1端點地點為源地點的UDP數(shù)據(jù)報進入其內(nèi)部網(wǎng)絡(luò),像是在NAT裝備的防火墻上“穿洞,對以1端點地點為源地點的UDP數(shù)據(jù)報開放“入口。41吸收到2的端點地點

7、后,以2的端點地點為目的地點發(fā)送“探測UDP數(shù)據(jù)報,同樣該數(shù)據(jù)報也使得1網(wǎng)絡(luò)的NAT裝備上形成“穿洞。52收到1的“探測數(shù)據(jù)報后,向1發(fā)送確認數(shù)據(jù)報。至此,兩邊創(chuàng)立互通的UDP毗連。在(2)中,思量到1、2大概處于同一個私有網(wǎng)絡(luò)中,辦事器可以同時發(fā)送私有、公用端點地點,然后1、2先實行利用對方私有端點地點舉行通訊,失敗的環(huán)境下,再利用公用端點地點。圖1必要指出的是,并不是任何的NAT裝備都支持這上述的“穿透歷程。一個“友愛的NAT裝備必需是“非對稱的:客戶端的私有端點地點被NAT裝備“翻譯成公用端點地點后,客戶端再利用此私有端點地點向別的目的端點地點發(fā)送數(shù)據(jù)報,NAT裝備并不會由于目的端點地點

8、的改變而改變映射的公用端點地點,不然,1、2獵取的對方端點地點由于“映射改變而失效。同時,對付龐大的具有多層NAT裝備的網(wǎng)絡(luò)環(huán)境,NAT裝備也需提供“回環(huán)轉(zhuǎn)換的成效:NAT裝備吸收來自內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)報,但是目的端點地點卻是其原先“對外映射的公用端點地點,此時NAT裝備仍可以“回環(huán)的把目的端點地點“翻譯成內(nèi)部網(wǎng)絡(luò)端點地點,并把數(shù)據(jù)報轉(zhuǎn)發(fā)回內(nèi)部網(wǎng)絡(luò)。3基于UDPHlePunhing的實現(xiàn)圖2本文基于.Net框架開拓一個輕量級的面向工具類庫,完備的實現(xiàn)UDPHlePunhing的穿透歷程。圖2是類庫灰底框分層布局,形貌了類庫界限以及體系布局。此中NATlient/ServerAPI層是類庫對外提供的

9、辦事器與客戶端的編程接口;NATTraversalLayer是整個類庫的焦點,處置懲罰UDPHlePunhing歷程中的種種情境,創(chuàng)立客戶端之間“直接毗連等;AsynhrnusUDPSket是基于UDP的異步收發(fā)套接字,為上下層收發(fā)數(shù)據(jù)。圖3是整個實現(xiàn)的部門類圖限于篇幅省略了要領(lǐng)與屬性。下面是部門類成效的簡樸形貌:1客戶端:NATlient是客戶端的用戶接口,賣力客戶端的登岸、登出,向下層轉(zhuǎn)發(fā)字節(jié)情勢的用戶數(shù)據(jù),同時向上層通報吸收到的用戶數(shù)據(jù);nnetinanager是整個客戶端的焦點,它是客戶端多個UDP套接字的辦理器,賣力啟動穿透歷程,吸收來自別的客戶端、辦事器的種種消息以及作出相應相應。

10、essageBufferQueue與QueueithTier是發(fā)送到別的客戶端的用戶數(shù)據(jù)緩存區(qū),放入緩存區(qū)內(nèi)的數(shù)據(jù)假設(shè)在一個很小的時間隔斷內(nèi)還沒發(fā)送出去,將照顧客戶端發(fā)送失敗。NATSessinanager與NATSessin賣力辦理別的客戶端的端點地點(包羅客戶端的私有、公用端點地點);RegisterUtility具有向辦事器注冊當?shù)豒DP套接字的成效,它能探測出客戶端到辦事器之間NAT裝備的端點地點映射保持時間是非,動態(tài)調(diào)解UDP套接字注冊隔斷,從而淘汰客戶端、辦事器的包袱。2辦事器:NATServer賣力客戶端消息的處置懲罰,好比注冊消息,哀求客戶端的端點地點,照顧客戶端預備吸收來自別的客戶端的用戶數(shù)據(jù)等;lientapTable與SketapIte存放、辦理客戶端注冊的UDP套接字端點地點。3別的:按照UDPHlePunhing穿透歷程中的種種情境,必要界說多種的消息范例,具有各自的消息負載格式,表1是種種消息類成效說明。圖3表1RegRUnReg客戶端向辦事器端發(fā)送的UDP套接字注冊、取消注冊消息。1SendUserData2RelayUserData1上層的用戶數(shù)據(jù)消息。2中轉(zhuǎn)消息:客戶端之間無法“直接通訊時,可以通過辦事器中轉(zhuǎn)的用戶數(shù)據(jù)消息。1RequsetEndPint2ReplyEndPint1客戶端哀求辦事器提供客戶端端點地點消息。2辦事器提供客戶端端點

溫馨提示

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

評論

0/150

提交評論