999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于UDP協(xié)議的NAT穿透技術(shù)研究與仿真

2014-04-29 00:44:03魏紹亮周廣平王學(xué)慧
計(jì)算機(jī)時(shí)代 2014年6期

魏紹亮 周廣平 王學(xué)慧

摘 要: NAT穿透技術(shù)能夠有效解決由于IP地址短缺和路由表增大造成的用戶接入困難的問(wèn)題,可緩解因網(wǎng)絡(luò)地址的嚴(yán)重消耗造成的IPv4資源稀缺的情況。針對(duì)這種情況進(jìn)行了基于UDP協(xié)議的NAT穿透技術(shù)研究與仿真。首先分析NAT穿透的類(lèi)型及各自的原理,提出對(duì)于NAT穿透相對(duì)有效的UDP打洞方案,然后通過(guò)穿透原理得出算法結(jié)構(gòu)流程,最后在VC++環(huán)境下進(jìn)行仿真實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,該算法結(jié)構(gòu)能夠有效地實(shí)現(xiàn)NAT穿透目的,而且具有可拓展性,可在較多情況下適用。

關(guān)鍵詞: 網(wǎng)絡(luò)地址; NAT穿透; NAT類(lèi)型; UDP打洞

中圖分類(lèi)號(hào):TP393.02 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-88228(2014)06-12-03

0 引言

NAT又名網(wǎng)絡(luò)地址轉(zhuǎn)換,在如今IP地址越來(lái)越稀缺的情況下產(chǎn)生,主要為了解決地址重用的問(wèn)題。眾所周知,在TCP/IP協(xié)議中,有三個(gè)IP地址區(qū)域作為私有地址而被專(zhuān)門(mén)保留。

1 NAT分類(lèi)

1.1 基本的NAT

由于內(nèi)網(wǎng)的IP地址不允許在網(wǎng)絡(luò)上出現(xiàn),內(nèi)部數(shù)據(jù)包的 IP地址需轉(zhuǎn)換后才能對(duì)外發(fā)送,所以在同一時(shí)間內(nèi),全子網(wǎng)內(nèi)只有小部分IP地址能夠?qū)?yīng)到外部全球惟一的IP地址[2]。基本的NAT設(shè)備將會(huì)改變數(shù)據(jù)包中的原IP地址,但是不會(huì)改變數(shù)據(jù)包中相應(yīng)的端口數(shù)據(jù)。

1.2 NAPT

NAPT全名為網(wǎng)絡(luò)地址/端口轉(zhuǎn)換器,由其名稱(chēng)可以看出凡是經(jīng)過(guò)此設(shè)備的IP數(shù)據(jù)包,不僅數(shù)據(jù)包內(nèi)的IP地址會(huì)被修改,而且數(shù)據(jù)包內(nèi)的TCP/UDP端口數(shù)據(jù)也會(huì)被修改。它可允許內(nèi)網(wǎng)多個(gè)計(jì)算機(jī)對(duì)應(yīng)一個(gè)全球惟一的IP地址[3]。由于端口修改的方法不同,因而又可分為圓錐型和對(duì)稱(chēng)型兩種。

⑴ Cone NAT(圓錐型)

在一個(gè)客戶機(jī)(擁有私有地址與端口號(hào))與另一個(gè)客戶機(jī)(擁有公有地址與端口號(hào))建立端口映射之后,只要是當(dāng)前仍然存在會(huì)話在利用此端口映射,那么它就可以用這個(gè)端口映射繼續(xù)處理后續(xù)的會(huì)話。然而,當(dāng)位于NAT后的主機(jī)與外網(wǎng)的主機(jī)建立連接之后,NAT接受外部連接的自由程度是不同的,由此可以把此類(lèi)型進(jìn)一步分類(lèi)。但是要注意這個(gè)分類(lèi)一般只適用于UDP傳輸,因?yàn)閷?duì)于TCP連接,只有在有專(zhuān)門(mén)的配置情況下才會(huì)建立。Cone NAT分類(lèi)之后為下面三種情況。

① Full Cone NAT(完全圓錐型)

2 NAT穿透原理分析

若想用軟件實(shí)現(xiàn)NAT技術(shù),一種方法是通過(guò)擴(kuò)展應(yīng)用層協(xié)議,使其具有NAT路由的功能;另一種方法則是把應(yīng)用層協(xié)議中的私有地址直接修改為公網(wǎng)地址。但是,由于NAT類(lèi)型的不同,通過(guò)修改應(yīng)用層協(xié)議地址[4]的方法并不能通用,尤其當(dāng)是Symmetric NAT類(lèi)型的時(shí)候,其預(yù)先獲得的公網(wǎng)地址與實(shí)際轉(zhuǎn)換后的公網(wǎng)地址有可能不相同[5]。

NAT穿透需要分析下面三種情況。首先,雙方都是Symmetric NAPT。此情況由于端口號(hào)分配的不同,不支持穿透。其次,雙方都是Cone NAPT。這種情況是我們所期望的,可以進(jìn)行穿透。最后,兩方分別是Symmetric NAPT和Cone NAPT。這種情況稍復(fù)雜些,假設(shè)A是Symmetric NAT,B是Cone NAT,由文獻(xiàn)分析[6]可知,不管是A先連接B還是B先連接A,在一方的NAT接收到數(shù)據(jù)包后,由于查詢自己的映射表無(wú)法找到相對(duì)應(yīng)映射項(xiàng)而會(huì)將包丟棄,從而導(dǎo)致連接失敗。

因此,根據(jù)上述分析可以得出,只有當(dāng)連接兩端的設(shè)備都為Cone NAT的情況下,才能實(shí)現(xiàn)基于UDP協(xié)議的內(nèi)網(wǎng)穿透。

3 UDP打洞技術(shù)

當(dāng)前發(fā)展較快的穿透技術(shù)是一種借助于公網(wǎng)服務(wù)器來(lái)完成NAT穿透的技術(shù),稱(chēng)為Hole Punching技術(shù)[7]。此技術(shù)屬于一種中繼方案,主要用來(lái)解決通信兩端都在NAT設(shè)備之后的情況,如今這類(lèi)情況比較常見(jiàn)。與其他解決方案相比,此技術(shù)比較簡(jiǎn)單通用,穿透原理如圖5所示。

從圖5可以看出,客戶機(jī)A和客戶機(jī)B(下面簡(jiǎn)稱(chēng)A和B)分別向服務(wù)器S注冊(cè),因此服務(wù)器知道了它們的私網(wǎng)地址和轉(zhuǎn)換后的公網(wǎng)地址。在A希望與B建立連接時(shí),A會(huì)先向服務(wù)器S發(fā)送連接請(qǐng)求,服務(wù)器S會(huì)把B的公網(wǎng)、私網(wǎng)的地址都返回給A,同時(shí)還會(huì)把A的連接請(qǐng)求和A的公網(wǎng)與私網(wǎng)地址發(fā)給 B。至此A和B都能知道彼此的公、私網(wǎng)地址。可知A、B與服務(wù)器之間的通訊僅僅是為了打開(kāi)通往服務(wù)器的通道,并通過(guò)不斷發(fā)送消息保持通道的存在。

接下來(lái),當(dāng)A得知B的公網(wǎng)、私網(wǎng)地址后,A會(huì)同時(shí)向這兩個(gè)地址發(fā)起連接。如果A和B同在一個(gè)NAT之后,B會(huì)先在私網(wǎng)地址上收到A的連接請(qǐng)求,這樣A與B之間的通訊就不會(huì)有NAT的介入;而如果A和B處在不同NAT之后,那么A發(fā)往B私網(wǎng)地址的連接將會(huì)無(wú)法路由或者被錯(cuò)誤路由到不相關(guān)的終端,從而被丟棄,而A發(fā)往B公網(wǎng)地址的連接會(huì)順利到達(dá)B所在的NAT。同樣,在B得知A的公網(wǎng)、私網(wǎng)地址之后也會(huì)發(fā)起連接,情況與A相同。

此時(shí),A和B前的NAT設(shè)備已經(jīng)記住了對(duì)方的IP地址和端口信息,對(duì)彼此處于敞開(kāi)狀態(tài),即被在內(nèi)部打洞,因此可建立新的對(duì)話,建立連接。由于發(fā)送的連接數(shù)據(jù)包都為UDP包,因此被稱(chēng)為UDP打洞技術(shù)。而且,建立連接之后,雙方的NAT還可以作為中介將對(duì)方“介紹”給其他設(shè)備[8],從而降低S的工作量。

綜上所述,Hole Punching技術(shù)是通過(guò)公網(wǎng)Server保存的地址從而使客戶機(jī)之間能夠直接通信。但是,Server只幫助建立連接,而在建立連接之后就不會(huì)再介入了。

4 編程測(cè)試

既然上述基于UDP協(xié)議的穿透主要是靠公網(wǎng)服務(wù)器作為連接中介,那么,通信協(xié)議是必不可少的。根據(jù)上節(jié)所述的穿透原理可編寫(xiě)通信協(xié)議。我們需要自定義以下幾種STRUCT:Client登錄時(shí)向服務(wù)器發(fā)送的消息格式、Client注銷(xiāo)時(shí)發(fā)送的消息格式、Client向服務(wù)器請(qǐng)求另外一個(gè)Client向自己方向發(fā)送UDP打洞消息格式、Client向服務(wù)器發(fā)送的消息格式、客戶節(jié)點(diǎn)信息格式、Server向Client發(fā)送的消息格式、客戶端之間發(fā)送消息格式。

關(guān)于所編寫(xiě)的Server部分,由穿透原理可知,Server端主要負(fù)責(zé)兩件事,一是循環(huán)讀取客戶機(jī)登錄和注銷(xiāo)消息,并記錄客戶列表;二是循環(huán)轉(zhuǎn)發(fā)客戶P2P連接請(qǐng)求。這里要注意的是,我們應(yīng)事先定義一個(gè)循環(huán)最大值(MAXC),防止丟包之后進(jìn)入無(wú)限死循環(huán),下面的Client部分也一樣。Client端則主要有三部分:第一,登錄服務(wù)端,并接收服務(wù)器端發(fā)送的已登錄消息;第二,向外網(wǎng)IP發(fā)送消息,若發(fā)送超時(shí),則發(fā)送一個(gè)請(qǐng)求打洞信息到服務(wù)器端,此過(guò)程循環(huán)(MAXC)次;第三,循環(huán)讀取當(dāng)前服務(wù)器用戶。

我們選用Visual C++6.0作為編程環(huán)境,進(jìn)行此穿透實(shí)驗(yàn)的仿真實(shí)驗(yàn)。

5 實(shí)驗(yàn)運(yùn)行結(jié)果

由于此程序只是為了實(shí)現(xiàn)穿透通信,因此功能并不是很完善。部分源程序參考相關(guān)資料改編。首先需運(yùn)行服務(wù)器端,如圖6所示,由圖6可見(jiàn),服務(wù)器端可以將已登錄用戶記錄在案,中轉(zhuǎn)連接功能則由后臺(tái)運(yùn)行。

由于編程條件的限制,現(xiàn)將服務(wù)器端與兩個(gè)客戶機(jī)端在同一臺(tái)電腦上運(yùn)行,因此要指向的服務(wù)器IP為同一個(gè)地址。將客戶機(jī)端分別命名為11和22,先模擬登錄客戶端主機(jī)11,然后模擬登錄客戶端主機(jī)22,所發(fā)送信息為“hello!”,兩個(gè)客戶機(jī)端的運(yùn)行結(jié)果分別如圖7、圖8所示。

由圖7、圖8可見(jiàn),兩個(gè)客戶端主機(jī)已連接成功,并且發(fā)送的信息也已送達(dá)目的客戶機(jī)。

根據(jù)此實(shí)驗(yàn)結(jié)果分析,UDP穿透的目的已經(jīng)達(dá)到。根據(jù)多次實(shí)驗(yàn)分析,由于客戶端主機(jī)運(yùn)行背景不同,同一局域網(wǎng)內(nèi)可能需要在路由器端開(kāi)通端口映射功能。

6 結(jié)束語(yǔ)

本文淺析了NAT的相關(guān)分類(lèi)以及基于UDP協(xié)議穿透NAT的相關(guān)技術(shù),并根據(jù)研究結(jié)果將其進(jìn)行編程實(shí)現(xiàn)。該程序主要是根據(jù)UDP打洞技術(shù)來(lái)實(shí)現(xiàn)有關(guān)NAT穿透的基本功能,程序具有一定的適應(yīng)性(針對(duì)Cone NAT),若結(jié)合硬件設(shè)施,可實(shí)現(xiàn)遠(yuǎn)程操控,因此有擴(kuò)展開(kāi)發(fā)空間。NAT穿透技術(shù)涉及很多內(nèi)容,就傳輸層的穿透而言,本文只限于UDP協(xié)議,但就實(shí)際而言是不夠的。目前網(wǎng)絡(luò)上使用最多的傳輸層協(xié)議是TCP協(xié)議,而在實(shí)際應(yīng)用中,基于TCP協(xié)議的穿透比基于UDP協(xié)議的穿透復(fù)雜的多。綜上所述,本文所研究的NAT穿透技術(shù)還有待進(jìn)一步開(kāi)發(fā)與完善。

參考文獻(xiàn):

[1] 余以勝.P2P網(wǎng)絡(luò)的NAT穿越技術(shù)研究[J].微型電腦應(yīng)用,2012.1:34-36

[2] 張靜頤,趙雪巖,陳愛(ài)網(wǎng).基于NAT穿透P2P即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2011.7:96-98

[3] 杜經(jīng)緯,王春紅.在P2P網(wǎng)絡(luò)環(huán)境下基于UDP協(xié)議穿越NAT的研究[J].吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2012.1:93-94

[4] 劉健,周仲文,劉洋.基于P2P的TCP穿透NAT技術(shù)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011.3:40-41

[5] Guha S, Francis P. Characterization and Measurement of TCPTaversal through NATs and Firewalls [EB/0L].http://nutss.gforge.cis.cornell.edu/pub/imc05-tcp nat.pdf.

[6] 孔令旺.NAT技術(shù)及應(yīng)用淺析[J].科技資訊,2011.32:26-26

[7] 張知青,王碧玉.淺談網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)的三種方式[J].中小企業(yè)管理與科技(上旬刊),2011.10:206-207

[8] 劉澤陽(yáng),徐武平.P2P應(yīng)用中一種多層NAT穿透解決方案的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2011.7:1980-1983

主站蜘蛛池模板: 亚洲中文在线看视频一区| 久久网欧美| 亚洲伊人天堂| 国产精品第一区| 91精品国产91欠久久久久| 亚洲丝袜第一页| 二级特黄绝大片免费视频大片| 91精品人妻互换| 伊伊人成亚洲综合人网7777| 免费在线色| 亚洲无码在线午夜电影| 精品久久久久久久久久久| 美女一区二区在线观看| 国产91精品最新在线播放| 中文国产成人精品久久| 毛片久久网站小视频| 亚洲欧美另类视频| 免费一级毛片在线播放傲雪网| 天天摸天天操免费播放小视频| 天天色天天综合| 亚洲精品无码久久毛片波多野吉| 欧美日韩久久综合| 国产性生大片免费观看性欧美| 欧美国产日产一区二区| 国产麻豆91网在线看| 欧美色视频在线| 精品一区二区三区四区五区| 亚洲精品欧美日本中文字幕| 国产人成网线在线播放va| 在线综合亚洲欧美网站| 黄色一级视频欧美| 欧美α片免费观看| 97视频在线精品国自产拍| 思思热精品在线8| 欧美中文字幕第一页线路一| 欧美日本在线播放| 久久精品66| 久久精品国产亚洲麻豆| av一区二区无码在线| 老司机午夜精品网站在线观看 | 国产极品美女在线观看| 青青草国产免费国产| 免费观看亚洲人成网站| 国产丝袜无码一区二区视频| 亚洲第一色网站| 99久久精品免费视频| 污污网站在线观看| 成人在线亚洲| 国产人人射| 色播五月婷婷| 小13箩利洗澡无码视频免费网站| 欧美精品在线看| 日韩大乳视频中文字幕| 亚洲毛片一级带毛片基地| 麻豆精品在线视频| 国产成人无码AV在线播放动漫| 国产手机在线小视频免费观看| 在线播放精品一区二区啪视频| 亚洲va视频| 亚洲国产看片基地久久1024| 伊人激情综合网| 97精品国产高清久久久久蜜芽| 激情在线网| 成人免费视频一区| 日韩国产黄色网站| 欧美亚洲一区二区三区导航| 免费高清毛片| 国产va在线观看免费| 美女扒开下面流白浆在线试听| 99热精品久久| 亚洲AV色香蕉一区二区| 亚洲av无码人妻| 国产成人盗摄精品| 凹凸精品免费精品视频| 久久人妻xunleige无码| 久久人人妻人人爽人人卡片av| 亚洲国产亚综合在线区| 久久不卡国产精品无码| 亚洲最大综合网| 国产精品网址你懂的| 美女视频黄又黄又免费高清| 色噜噜在线观看|