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

基于UDP協議的NAT穿透技術研究與仿真

2014-04-29 00:44:03魏紹亮周廣平王學慧
計算機時代 2014年6期

魏紹亮 周廣平 王學慧

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

關鍵詞: 網絡地址; NAT穿透; NAT類型; UDP打洞

中圖分類號:TP393.02 文獻標志碼:A 文章編號:1006-88228(2014)06-12-03

0 引言

NAT又名網絡地址轉換,在如今IP地址越來越稀缺的情況下產生,主要為了解決地址重用的問題。眾所周知,在TCP/IP協議中,有三個IP地址區域作為私有地址而被專門保留。

1 NAT分類

1.1 基本的NAT

由于內網的IP地址不允許在網絡上出現,內部數據包的 IP地址需轉換后才能對外發送,所以在同一時間內,全子網內只有小部分IP地址能夠對應到外部全球惟一的IP地址[2]。基本的NAT設備將會改變數據包中的原IP地址,但是不會改變數據包中相應的端口數據。

1.2 NAPT

NAPT全名為網絡地址/端口轉換器,由其名稱可以看出凡是經過此設備的IP數據包,不僅數據包內的IP地址會被修改,而且數據包內的TCP/UDP端口數據也會被修改。它可允許內網多個計算機對應一個全球惟一的IP地址[3]。由于端口修改的方法不同,因而又可分為圓錐型和對稱型兩種。

⑴ Cone NAT(圓錐型)

在一個客戶機(擁有私有地址與端口號)與另一個客戶機(擁有公有地址與端口號)建立端口映射之后,只要是當前仍然存在會話在利用此端口映射,那么它就可以用這個端口映射繼續處理后續的會話。然而,當位于NAT后的主機與外網的主機建立連接之后,NAT接受外部連接的自由程度是不同的,由此可以把此類型進一步分類。但是要注意這個分類一般只適用于UDP傳輸,因為對于TCP連接,只有在有專門的配置情況下才會建立。Cone NAT分類之后為下面三種情況。

① Full Cone NAT(完全圓錐型)

2 NAT穿透原理分析

若想用軟件實現NAT技術,一種方法是通過擴展應用層協議,使其具有NAT路由的功能;另一種方法則是把應用層協議中的私有地址直接修改為公網地址。但是,由于NAT類型的不同,通過修改應用層協議地址[4]的方法并不能通用,尤其當是Symmetric NAT類型的時候,其預先獲得的公網地址與實際轉換后的公網地址有可能不相同[5]。

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

因此,根據上述分析可以得出,只有當連接兩端的設備都為Cone NAT的情況下,才能實現基于UDP協議的內網穿透。

3 UDP打洞技術

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

從圖5可以看出,客戶機A和客戶機B(下面簡稱A和B)分別向服務器S注冊,因此服務器知道了它們的私網地址和轉換后的公網地址。在A希望與B建立連接時,A會先向服務器S發送連接請求,服務器S會把B的公網、私網的地址都返回給A,同時還會把A的連接請求和A的公網與私網地址發給 B。至此A和B都能知道彼此的公、私網地址。可知A、B與服務器之間的通訊僅僅是為了打開通往服務器的通道,并通過不斷發送消息保持通道的存在。

接下來,當A得知B的公網、私網地址后,A會同時向這兩個地址發起連接。如果A和B同在一個NAT之后,B會先在私網地址上收到A的連接請求,這樣A與B之間的通訊就不會有NAT的介入;而如果A和B處在不同NAT之后,那么A發往B私網地址的連接將會無法路由或者被錯誤路由到不相關的終端,從而被丟棄,而A發往B公網地址的連接會順利到達B所在的NAT。同樣,在B得知A的公網、私網地址之后也會發起連接,情況與A相同。

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

綜上所述,Hole Punching技術是通過公網Server保存的地址從而使客戶機之間能夠直接通信。但是,Server只幫助建立連接,而在建立連接之后就不會再介入了。

4 編程測試

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

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

我們選用Visual C++6.0作為編程環境,進行此穿透實驗的仿真實驗。

5 實驗運行結果

由于此程序只是為了實現穿透通信,因此功能并不是很完善。部分源程序參考相關資料改編。首先需運行服務器端,如圖6所示,由圖6可見,服務器端可以將已登錄用戶記錄在案,中轉連接功能則由后臺運行。

由于編程條件的限制,現將服務器端與兩個客戶機端在同一臺電腦上運行,因此要指向的服務器IP為同一個地址。將客戶機端分別命名為11和22,先模擬登錄客戶端主機11,然后模擬登錄客戶端主機22,所發送信息為“hello!”,兩個客戶機端的運行結果分別如圖7、圖8所示。

由圖7、圖8可見,兩個客戶端主機已連接成功,并且發送的信息也已送達目的客戶機。

根據此實驗結果分析,UDP穿透的目的已經達到。根據多次實驗分析,由于客戶端主機運行背景不同,同一局域網內可能需要在路由器端開通端口映射功能。

6 結束語

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

參考文獻:

[1] 余以勝.P2P網絡的NAT穿越技術研究[J].微型電腦應用,2012.1:34-36

[2] 張靜頤,趙雪巖,陳愛網.基于NAT穿透P2P即時通訊系統的設計與實現[J].電子設計工程,2011.7:96-98

[3] 杜經緯,王春紅.在P2P網絡環境下基于UDP協議穿越NAT的研究[J].吉林師范大學學報(自然科學版),2012.1:93-94

[4] 劉健,周仲文,劉洋.基于P2P的TCP穿透NAT技術研究[J].網絡安全技術與應用,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技術及應用淺析[J].科技資訊,2011.32:26-26

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

[8] 劉澤陽,徐武平.P2P應用中一種多層NAT穿透解決方案的設計與實現[J].計算機應用,2011.7:1980-1983

主站蜘蛛池模板: 国产精品一区在线麻豆| 精品成人一区二区三区电影| 青青操视频免费观看| 一区二区三区高清视频国产女人| 制服无码网站| 精品久久久久久久久久久| 在线99视频| 亚洲国产精品日韩av专区| 日韩在线网址| 综合网天天| 激情成人综合网| 中文字幕无线码一区| 午夜电影在线观看国产1区| 91久久国产综合精品| 欧美日韩国产在线观看一区二区三区 | 91午夜福利在线观看精品| 日韩无码视频播放| 青青青视频91在线 | 992tv国产人成在线观看| 国产免费久久精品99re丫丫一| 欧美一级黄片一区2区| 国产亚洲欧美日韩在线一区二区三区| 欧美日韩精品在线播放| 97青草最新免费精品视频| 欧美午夜在线观看| 女人av社区男人的天堂| a级毛片一区二区免费视频| 国内丰满少妇猛烈精品播| 国产波多野结衣中文在线播放| 亚洲精品制服丝袜二区| 99免费视频观看| 国产欧美网站| 午夜精品久久久久久久99热下载| 毛片久久久| 国产精品性| 精品视频福利| a色毛片免费视频| 97超级碰碰碰碰精品| 国产91丝袜| 精品国产成人a在线观看| 欧美日韩一区二区三区在线视频| 2048国产精品原创综合在线| 国产精品久久精品| 欧美亚洲一区二区三区在线| 国产亚洲现在一区二区中文| 国产欧美日韩资源在线观看| 中文字幕人妻av一区二区| 亚洲欧洲日产国产无码AV| 亚洲精品爱草草视频在线| 波多野结衣第一页| 久久国产精品波多野结衣| 在线观看免费国产| 国产精品一老牛影视频| 国产中文在线亚洲精品官网| 99热这里只有精品在线观看| 国产人成网线在线播放va| 免费在线国产一区二区三区精品| 色妞www精品视频一级下载| 亚欧美国产综合| 亚洲精品国产自在现线最新| 爱做久久久久久| 国产性精品| 日韩欧美国产精品| 尤物特级无码毛片免费| 人妻精品久久无码区| 99在线观看免费视频| 国内精品视频在线| 亚洲国产系列| 五月婷婷精品| 在线精品视频成人网| 国产一区成人| 午夜综合网| 成人午夜视频网站| 中国一级特黄视频| 日韩精品亚洲一区中文字幕| 国产无码精品在线| 99视频精品在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ| 四虎影视无码永久免费观看| 99er这里只有精品| 欧美日韩国产在线观看一区二区三区| 亚洲无线国产观看|