国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

對(duì)等網(wǎng)聯(lián)下NAT穿越問(wèn)題的研究*

2013-12-07 06:18:30孫衛(wèi)喜席少龍
電子技術(shù)應(yīng)用 2013年5期
關(guān)鍵詞:端口號(hào)內(nèi)網(wǎng)IP地址

孫衛(wèi)喜,席少龍

(渭南師范學(xué)院 數(shù)學(xué)與信息科學(xué)學(xué)院,計(jì)算機(jī)網(wǎng)絡(luò)工程技術(shù)中心,陜西 渭南 714000)

在迅猛發(fā)展的互聯(lián)網(wǎng)中,網(wǎng)絡(luò)地址轉(zhuǎn)換NAT(Network Address Translator)技術(shù)有效緩解了網(wǎng)絡(luò)之間互連協(xié)議IP(Internet Protocol)地址短缺的問(wèn)題,同時(shí)也對(duì)內(nèi)網(wǎng)安全起到了很好的保護(hù)作用。對(duì)等網(wǎng)絡(luò)P2P(Peer to Peer)流媒體技術(shù)被廣泛用于電子商務(wù)、網(wǎng)絡(luò)電視、遠(yuǎn)程教育、在線直播、實(shí)時(shí)視頻會(huì)議、網(wǎng)絡(luò)視頻廣告、視頻點(diǎn)播、遠(yuǎn)程醫(yī)療等。NAT用于實(shí)現(xiàn)內(nèi)外網(wǎng)客戶端間的訪問(wèn),但多數(shù)情況下內(nèi)外網(wǎng)客戶端無(wú)法實(shí)現(xiàn)直接訪問(wèn)[1],因此實(shí)現(xiàn)內(nèi)外網(wǎng)客戶端間的對(duì)等互訪必須解決信息包穿越NAT的問(wèn)題。

1 NAT

NAT是一個(gè)互聯(lián)網(wǎng)工程任務(wù)組IETF(Internet Engineering Task Force)標(biāo)準(zhǔn),它將只能在私網(wǎng)中使用的內(nèi)網(wǎng)IP地址通過(guò)與少量的公網(wǎng)IP地址建立映射關(guān)系,實(shí)現(xiàn)內(nèi)網(wǎng)客戶端對(duì)互聯(lián)網(wǎng)的訪問(wèn)。當(dāng)內(nèi)網(wǎng)客戶端需要訪問(wèn)Internet時(shí),NAT將信息流中的內(nèi)網(wǎng)IP地址修改為可以在Internet上路由的公網(wǎng)IP地址,從而實(shí)現(xiàn)內(nèi)網(wǎng)客戶端與外網(wǎng)客戶端之間的通信,同時(shí)建立內(nèi)網(wǎng)地址與外網(wǎng)地址間的映射關(guān)系表。同樣,當(dāng)外網(wǎng)客戶端需要與內(nèi)網(wǎng)客戶端通信時(shí),NAT對(duì)照建立的映射表,把經(jīng)過(guò)信息流中的IP地址修改為與其對(duì)應(yīng)的內(nèi)網(wǎng)IP地址發(fā)往內(nèi)網(wǎng)客戶端[2]。NAT緩解了公網(wǎng)IP地址的短缺,使私網(wǎng)地址得以復(fù)用,同時(shí)加強(qiáng)了內(nèi)網(wǎng)安全性。

2 NAT的分類及特點(diǎn)

UDP(User Datagram Protocol)是用戶數(shù)據(jù)包協(xié)議,IETF制定了UDP數(shù)據(jù)包穿越NAT的簡(jiǎn)單協(xié)議STUN(Simple Traversal of UDP over NATs),它將 NAT分為 4類,即:完全錐型NAT,地址受限錐型 NAT,端口受限錐型 NAT和對(duì)稱型NAT。

(1)完全錐型NAT:當(dāng)內(nèi)網(wǎng)的客戶端A連接外網(wǎng)客戶端時(shí),NAT會(huì)為其分配一個(gè)端口,此后外網(wǎng)所有發(fā)到這個(gè)端口的UDP數(shù)據(jù)包都可以到達(dá)內(nèi)網(wǎng)客戶端A。

(2)地址受限錐型NAT:當(dāng)內(nèi)網(wǎng)的客戶端A連接外網(wǎng)的客戶端B時(shí),NAT會(huì)為其分配一個(gè)端口,此后B可以用任何端口與A通信,但其他的外網(wǎng)客戶端則不能與A通信。

(3)端口受限錐型 NAT:當(dāng)內(nèi)網(wǎng)的客戶端A連接外網(wǎng)的客戶端B時(shí),NAT會(huì)為其分配一個(gè)端口,此后B只能用此端口與A通信。B用其他端口或其他客戶端均不能與A通信。

(4)對(duì)稱型 NAT:與前三種錐型 NAT不同,對(duì)稱型NAT內(nèi)網(wǎng)客戶端在連接外部客戶端時(shí)隨連接的目標(biāo)不同分配的端口也將發(fā)生改變,或者說(shuō)當(dāng)內(nèi)外網(wǎng)客戶端連接時(shí),內(nèi)網(wǎng)客戶端分配到的IP地址和端口、外網(wǎng)客戶端分配到的目標(biāo)IP地址和端口,其中任一項(xiàng)發(fā)生改變,都會(huì)引起連接路徑將隨之改變。

3 NAT類型的檢測(cè)

不同類型的NAT在端口分配和映射記錄等細(xì)節(jié)上差異很大,其穿越方法也有所不同,因而穿越NAT前需要對(duì)NAT的設(shè)備類型進(jìn)行檢測(cè)[3-4],NAT類型檢測(cè)流程如圖1所示。

圖1 NAT類型檢測(cè)流程

檢測(cè)方法步驟為:

(1)客戶端向服務(wù)器的IP1:Prot1發(fā)送源地址的請(qǐng)求包,其中有包的源地址IP3:Port3。若客戶端的地址為IP0:Prot0,比較IP0:Prot0與 IP3:Port3是否相同,若相同,則客戶端前沒(méi)有NAT;否則轉(zhuǎn)步驟(2)。

(2)客戶端向具有兩個(gè)公網(wǎng) IP地址(IP1、IP2)和兩個(gè)端口(Prot1、Prot2)的服務(wù)器依次發(fā)起 4次連接,即 IP1:Prot1、P1:Prot2、IP2:Prot1、IP2:Prot2, 每次連接都能從服務(wù)器返回的數(shù)據(jù)包中找到客戶端經(jīng)過(guò)NAT轉(zhuǎn)換后的映射關(guān)系。比對(duì)客戶端相鄰兩次連接請(qǐng)求所分配的端口號(hào),并計(jì)算端口的增量,如果無(wú)增量,則NAT為錐型NAT,轉(zhuǎn)步驟(3);有增量則為對(duì)稱性 NAT,轉(zhuǎn)步驟(5)。

(3)客戶端再向服務(wù)器端IP1:Prot1發(fā)送報(bào)文,要求使用IP2:Prot1回復(fù)。如果收到回復(fù),則說(shuō)明該NAT類型是完全錐型NAT;如果請(qǐng)求若干次都收不到響應(yīng)消息,則不是完全錐型 NAT,轉(zhuǎn)步驟(4)。

(4)客戶端再向IP1:Prot1發(fā)送消息,要求用IP1:Prot2回復(fù),如果收到回復(fù),則說(shuō)明該NAT是地址受限錐型NAT,如果發(fā)送若干次請(qǐng)求消息都沒(méi)有收到響應(yīng)消息,則說(shuō)明該NAT是端口受限錐型 NAT。

(5)如果每次的增量均相同,則為增量型NAT;如果增量不同,則為隨機(jī)型NAT。

4 NAT的穿越方案

按照映射關(guān)系中端口的變化將NAT分為錐型NAT和對(duì)稱型NAT,其中錐型NAT包括完全錐型、地址受限錐型、端口受限錐型3種。錐型NAT的映射與目的地址無(wú)關(guān),即源地址相同映射就相同;而對(duì)稱型NAT的映射則同時(shí)關(guān)聯(lián)源地址和目的地址,穿越過(guò)程相對(duì)復(fù)雜[5]。

4.1 錐型NAT的穿越

錐型NAT使用已經(jīng)成熟的 UDP“打洞”技術(shù)[6-7],即利用STUN服務(wù)器得到客戶端的映射地址,當(dāng)雙方需要通信時(shí),可以通過(guò)服務(wù)器的配合獲取對(duì)方的地址和端口,建立P2P直連。客戶端A與客戶端B的連接如圖2所示。

客戶端A與客戶端B通信穿越的步驟為:

(1)通信時(shí)NAT A將客戶端A的內(nèi)網(wǎng)地址和端口轉(zhuǎn)換為NAT A的外網(wǎng)地址和端口,并建立映射關(guān)系。同樣NAT B也將客戶端B的內(nèi)網(wǎng)地址和端口轉(zhuǎn)換為NAT B的外網(wǎng)地址和端口,建立映射關(guān)系。

(2)客戶端A通過(guò)服務(wù)器S向客戶端B發(fā)出連接請(qǐng)求。服務(wù)器S向客戶端A、B發(fā)送對(duì)方的NAT映射地址,即外部地址。

(3)客戶端 B收到客戶端 A的外部地址后,將A的外部地址作為目的地址發(fā)送UDP數(shù)據(jù)包“打洞”,該數(shù)據(jù)包使B端網(wǎng)絡(luò)的NAT設(shè)備允許后續(xù)的、以A端地址為源地址的UDP數(shù)據(jù)包進(jìn)入其內(nèi)部網(wǎng)絡(luò)。形象地稱B向A打了一個(gè)“洞”。

(4)客戶端 A收到客戶端 B的外部地址后,以 B的外部地址為目的地址發(fā)送探測(cè)UDP數(shù)據(jù)包,同樣該數(shù)據(jù)包也在A端網(wǎng)絡(luò)的NAT設(shè)備上建立對(duì)應(yīng)映射。

(5)客戶端B收到客戶端A的探測(cè)數(shù)據(jù)包后,向A發(fā)送確認(rèn)數(shù)據(jù)包,A、B就此建立UDP連接。

4.2 對(duì)稱型NAT的穿越

STUN協(xié)議不能穿越對(duì)稱型NAT,原因是對(duì)稱型NAT的映射關(guān)系是由源地址、源端口、目的地址、目的端口共同決定的,如果其中一方發(fā)生變化,則映射關(guān)系也將改變。如對(duì)稱型NAT內(nèi)網(wǎng)的客戶端與外網(wǎng)不同的客戶端發(fā)生連接時(shí),其分配的端口號(hào)會(huì)不同,相應(yīng)地映射關(guān)系也就不一樣。因此,發(fā)生連接時(shí)NAT會(huì)為不同的目標(biāo)節(jié)點(diǎn)分配新的端口號(hào),這與其先前在服務(wù)器上建立映射關(guān)系時(shí)使用的端口號(hào)不同,發(fā)送方無(wú)法得知向接收方發(fā)送數(shù)據(jù)包時(shí)NAT所分配的新端口號(hào),因此也就不能完成連接。正是由于對(duì)稱型NAT相對(duì)于錐型NAT映射關(guān)系要復(fù)雜得多,因而其安全性更高[8-10],更適合對(duì)安全性要求高的企業(yè)使用。

本文是在對(duì)目前使用的各種NAT穿越方法認(rèn)真比對(duì)后,通過(guò)對(duì)NAT及其穿越原理的細(xì)致分析研究,給出了使用預(yù)測(cè)端口的方法穿越對(duì)稱型NAT。該方法將對(duì)稱型NAT分為增量型NAT和隨機(jī)型NAT兩類。

對(duì)稱型NAT對(duì)每次的連接要求為“源IP、源端口、目標(biāo)IP、目標(biāo)端口”的順序在NAT映射表中找匹配項(xiàng),若沒(méi)有找到完全匹配項(xiàng),則按新連接對(duì)待并為其分配新端口號(hào)。對(duì)于增量型NAT,新端口號(hào)的分配原則是在前次分配的端口值上增加一個(gè)固定值進(jìn)行分配,如前次分配的端口號(hào)為P,則新端口號(hào)就為 P1=P+n(n為整數(shù))。對(duì)于隨機(jī)型NAT,新端口號(hào)的分配原則是在前次分配的端口值上增加一個(gè)在一定端口(1024,65535)范圍內(nèi)的隨機(jī)量進(jìn)行分配,如前次分配的端口號(hào)為P,則新端口號(hào)就為P1=P+n(n為某一范圍內(nèi)隨機(jī)整數(shù))??蛻舳双@取新的端口后連接過(guò)程類似于STUN協(xié)議,如NAT A、NAT B都為對(duì)稱型NAT,客戶端A與客戶端B通信的具體穿越步驟如下(可參見(jiàn)圖2):

(1)客戶端 A(或 B)向具有兩個(gè) IP地址 IP1、IP2,兩個(gè)端口 Prot1、Prot2的服務(wù)器 S依次發(fā)起 4次連接,即IP1:Prot1、IP1:Prot2、IP2:Prot1、IP2:Prot2,每次連接都能從服務(wù)器S返回的數(shù)據(jù)包中找到客戶端A(或B)經(jīng)過(guò)NAT轉(zhuǎn)換后的映射關(guān)系。比對(duì)客戶端A(或B)相鄰兩次連接請(qǐng)求所分配的端口號(hào),計(jì)算端口的增量,如果每次的增量都相同,則獲得固定增量,轉(zhuǎn)步驟(2),如果增量不同,則為隨機(jī)增量,轉(zhuǎn)步驟(6)。

(2)客戶端A將從NAT A上獲得的增量發(fā)送給服務(wù)器S并通知S與B的連接請(qǐng)求,服務(wù)器S通知客戶端A、B的連接請(qǐng)求,并發(fā)送客戶端A的預(yù)測(cè)地址給客戶端B。

(3)客戶端B通過(guò)端口映射,把從NAT B上得到的預(yù)測(cè)增量由服務(wù)器S發(fā)送給A,客戶端A向B的預(yù)測(cè)地址發(fā)送連接請(qǐng)求,報(bào)文穿越NAT A建立來(lái)自B的映射規(guī)則。

(4)由于客戶端B向客戶端A的預(yù)測(cè)端口發(fā)送信息包前在NAT A上已經(jīng)建立了映射,因而客戶端B的連接請(qǐng)求能直接通過(guò)。

(5)客戶端A獲得連接請(qǐng)求后發(fā)送確認(rèn)包,建立了客戶端A與B間的直接通信,也就不再需要服務(wù)器S。

(6)NAT A對(duì)新連接端口分配是隨機(jī)變化的,兩次之間的變化量為△t(△t為整數(shù)),雖然△t值都是由NAT設(shè)備通過(guò)某種方式隨機(jī)選擇的,但通常每次分配的端口號(hào)之間都會(huì)具有一定的函數(shù)關(guān)系或是統(tǒng)計(jì)上的相關(guān)性,這主要取決于具體的設(shè)備和網(wǎng)絡(luò)環(huán)境。如客戶端A發(fā)生新的連接時(shí),NAT A為其分配新的端口號(hào)P1,假定NAT A為客戶端A上次連接分配的端口號(hào)為P,則必然存在P1=P+△t,△t=f(P)。通過(guò)在多種網(wǎng)絡(luò)條件下的測(cè)試和分析,也證實(shí)了多數(shù)情況下存在具有某種特征的分布特性值△t。因此,可以通過(guò)其分布特性來(lái)預(yù)測(cè)△t所屬范圍,并對(duì)該范圍端口進(jìn)行試探,以實(shí)施穿越。

4.3 NAT穿越中“打洞”方的確定

若內(nèi)網(wǎng)客戶端A對(duì)應(yīng)的NAT與客戶端B對(duì)應(yīng)的NAT類型不同時(shí),選擇由客戶端 A“打洞”或選擇由客戶端B“打洞”其穿越算法、復(fù)雜度、難度等也都不同。通過(guò)對(duì)不同類型NAT穿越中選取不同方 “打洞”的實(shí)驗(yàn)分析,給出確定“打洞”方的方法,以降低算法的復(fù)雜度,提高穿越質(zhì)量[11]。

若NAT類型一方是錐型,另一方是對(duì)稱型時(shí),由錐型一方“打洞”;若一方為完全錐型,另一方為地址受限錐型或端口受限錐型,則由完全錐型一方“打洞”;若一方為地址受限錐型,另一方為端口受限錐型,則由地址受限錐型一方“打洞”;若雙方都是對(duì)稱型 NAT,且一方為增量型,另一方為隨機(jī)型,則由增量型一方“打洞”。

對(duì)稱型NAT越來(lái)越多地被應(yīng)用于安全性要求較高的企業(yè)網(wǎng)中。本文提出的端口預(yù)測(cè)法是穿越對(duì)稱型NAT很有效的方法,該方法克服了STUN無(wú)法穿越對(duì)稱型NAT的缺陷,且保持了STUN方式無(wú)須改動(dòng)現(xiàn)有的NAT設(shè)備、協(xié)議簡(jiǎn)單等特征,同時(shí)還解決了目前穿越對(duì)稱型NAT方案中存在延遲和丟包的問(wèn)題。提高了信息的安全性,節(jié)省了財(cái)力、物力、人力,具有很好的應(yīng)用前景。

[1]陳明東.OpenH323網(wǎng)絡(luò)視頻會(huì)議中微量化穿越技術(shù)研究[J].計(jì)算機(jī)與現(xiàn)代化,2012,(2):120-123.

[2]朱光,張?jiān)迫A,盧娟.基于 ICE的 VOIP穿越NAT方案研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(10):222-224.

[3]彭李超,譚兵.基于 STUNT的 Symmetric NAT穿越[J].微計(jì)算機(jī)應(yīng)用,2010,31(10):32-35.

[4]黃桂敏,朱曉姝.基于 UDP協(xié)議穿透 NAT設(shè)備的對(duì)等網(wǎng)絡(luò)模型研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(2):317-320.

[5]ROSENBERG J,WEINBERGER J,HUITEMA C.et al.STUN-simple traversal of UDP(User Datagram Protocol)through NATs(Network Address Translators)[C].RFC 3489.

March 2003.

[6]WG M,TAKEDA Y.Symmetric NAT traversal using STUN[S].IETF,2003.

[7]李航,馬林華.音視頻穿越 IP NAT技術(shù)的實(shí)現(xiàn)[J].通信技術(shù),2008,41(13):65-68.

[8]暢巨崢,汪瀅,王慶輝.利用ICE實(shí)現(xiàn)VOIP媒體流穿越[J].計(jì)算機(jī)應(yīng)用技術(shù),2010(6):105-108.

[9]劉娟娟,陶加祥.一種基于第三方服務(wù)器的 P2P穿透NAT的實(shí)現(xiàn)方法[J].軟件導(dǎo)刊,2010,9(1):121-123.

[10]王秀欣,戚宇林,王鼎.基于NATT協(xié)議的NAT穿越技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)[J].電力系統(tǒng)通信,2009(4):65-68.

[11]孫名松,段志鳴.混合式P2P網(wǎng)絡(luò)UDP下 NAT穿越方案的研究與設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2010(4):104-107.

猜你喜歡
端口號(hào)內(nèi)網(wǎng)IP地址
鐵路遠(yuǎn)動(dòng)系統(tǒng)幾種組網(wǎng)方式IP地址的申請(qǐng)和設(shè)置
在Docker容器中安裝應(yīng)用程序
基于SNMP的IP地址管理系統(tǒng)開(kāi)發(fā)與應(yīng)用
黑龍江電力(2017年1期)2017-05-17 04:25:16
淺談以java為基礎(chǔ)的Socket通信簡(jiǎn)介及實(shí)現(xiàn)
青春歲月(2017年5期)2017-04-20 18:34:23
企業(yè)內(nèi)網(wǎng)中的數(shù)據(jù)隔離與交換技術(shù)探索
科技資訊(2017年5期)2017-04-12 15:24:45
地下車庫(kù)柱網(wǎng)布置設(shè)計(jì)思路
山西建筑(2016年20期)2016-11-22 03:10:21
QoS技術(shù)在企業(yè)內(nèi)網(wǎng)實(shí)踐探索
科技資訊(2016年19期)2016-11-15 08:17:44
Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
基于Android系統(tǒng)的互動(dòng)展示APP的研究與設(shè)計(jì)
通過(guò)QQ郵件查看好友IP地址
塔城市| 韶山市| 佛坪县| 庆阳市| 临洮县| 宣恩县| 长兴县| 布拖县| 定南县| 红河县| 桦川县| 邛崃市| 高雄县| 师宗县| 海城市| 绥中县| 平度市| 塔城市| 北辰区| 安平县| 浑源县| 抚松县| 巍山| 长子县| 新巴尔虎左旗| 吴川市| 宜州市| 广灵县| 福贡县| 武胜县| 鄂托克旗| 雷山县| 多伦县| 临沭县| 馆陶县| 吉水县| 绥江县| 庄浪县| 定边县| 门源| 涿州市|