一種基于nat穿透適配器的物聯(lián)網(wǎng)設(shè)備p2p連接方法
【專利摘要】本發(fā)明涉及一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于,位于NAT以外的公網(wǎng)上的主機(jī),實(shí)現(xiàn)對(duì)NAT穿透,以P2P方式對(duì)NAT內(nèi)的物聯(lián)網(wǎng)嵌入式終端進(jìn)行數(shù)據(jù)探測(cè)和控制。位于不同NAT內(nèi)的主機(jī)實(shí)現(xiàn)NAT設(shè)備的穿透,達(dá)到不同局域網(wǎng)之間以及外網(wǎng)與局域網(wǎng)設(shè)備之間基于NAT內(nèi)物聯(lián)網(wǎng)嵌入式設(shè)備和通用設(shè)備傳感和控制數(shù)據(jù)的雙向傳輸。本發(fā)明基于交互式連通建立方式技術(shù),結(jié)合了STUN和TURN的穿越NAT方式,是一種綜合性的NAT解決方案。
【專利說(shuō)明】—種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于互聯(lián)網(wǎng)和物聯(lián)網(wǎng)網(wǎng)絡(luò)技術(shù)應(yīng)用領(lǐng)域,主要涉及一種在互聯(lián)網(wǎng)環(huán)境下各類通用嵌入式測(cè)控設(shè)備的NAT穿透實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]目前對(duì)物聯(lián)網(wǎng)上位于局域網(wǎng)內(nèi)的通用設(shè)備,主要通過(guò)DDNS (動(dòng)態(tài)域名服務(wù))與局域網(wǎng)網(wǎng)關(guān)中的UPnP (即插即用)端口映射功能實(shí)現(xiàn)單個(gè)設(shè)備的地址映射,其中DDNS需要用到第三方的動(dòng)態(tài)域名服務(wù)器,在可靠性和穩(wěn)定性需求上不一定能符合物聯(lián)網(wǎng)設(shè)備連接的需求。又或者單位或家庭網(wǎng)關(guān)中的UPnP牌關(guān)閉狀態(tài)或沒有UPnP功能,則根本無(wú)法建立起與局域網(wǎng)內(nèi)部設(shè)備的連接和數(shù)據(jù)傳輸。
[0003]目前對(duì)局域網(wǎng)內(nèi)物聯(lián)網(wǎng)嵌入式測(cè)控設(shè)備的連接,更沒有考慮同時(shí)針對(duì)多個(gè)設(shè)備的并行連接傳輸。P2P (Peer-to-Peer)技術(shù)與傳統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)不同,P2P在用戶間建立起一條直接通路,不依賴服務(wù)器進(jìn)行數(shù)據(jù)傳輸。P2P網(wǎng)絡(luò)的本質(zhì)特點(diǎn)在于共享與協(xié)作,參與者能共享他們所擁有的各種資源,這些資源也能被其他參與者直接訪問,而所有的參與者既是服務(wù)的接受者也是服務(wù)的提供者。P2P打破了傳統(tǒng)C/S方式下,一方提供服務(wù)、一方接受服務(wù)的模式,不再存在專門提供服務(wù)的節(jié)點(diǎn)。P2P網(wǎng)絡(luò)系統(tǒng)由于改變了傳統(tǒng)的C/S系統(tǒng)中,兩臺(tái)主機(jī)間的通信必須通過(guò)服務(wù)器中轉(zhuǎn)的情況,并建立了一個(gè)對(duì)等的網(wǎng)絡(luò),使其信息之間的交互不是必須存在著中轉(zhuǎn)節(jié)點(diǎn),從而還可以有效保護(hù)用戶隱私。
[0004]NAT ( Network Address Translator )技術(shù)通過(guò)將只能作為局域網(wǎng)內(nèi)部地址而在因特網(wǎng)上不能被識(shí)別或直接使用的私有IP地址映射為Internet上合法IP地址,實(shí)現(xiàn)私有網(wǎng)絡(luò)中節(jié)點(diǎn)對(duì)Internet的訪問。NAT設(shè)備位于互聯(lián)網(wǎng)與局域網(wǎng)之間,有翻譯網(wǎng)絡(luò)地址和保護(hù)網(wǎng)絡(luò)安全的作用。但是NAT之后的主機(jī)不能作為服務(wù)器向外部網(wǎng)絡(luò)提供服務(wù),位于不同NAT之后的主機(jī)間也無(wú)法互相通信。因而NAT的穿透對(duì)P2P技術(shù)應(yīng)用有重要意義。
[0005]NAT的四種類型:
(I)完全圓錐(Full Cone) NAT
完全錐形NAT將從同個(gè)內(nèi)網(wǎng)IP與端口號(hào)發(fā)出的所有請(qǐng)求映射為相同的外部IP地址與端口號(hào)。同理,任何外網(wǎng)主機(jī)能夠通過(guò)向這個(gè)內(nèi)網(wǎng)主機(jī)被映射過(guò)的外網(wǎng)地址發(fā)送數(shù)據(jù)包。
[0006](2)受限圓維(Restricted Cone) NAT
受限錐形NAT將從同個(gè)內(nèi)部IP地址和端口號(hào)發(fā)出的所有請(qǐng)求映射為相同的外部IP地址與端口號(hào)。但與完全錐形NAT不同的是,外網(wǎng)主機(jī)(IP地址為X)只能夠向先前向IP地址X發(fā)送過(guò)數(shù)據(jù)包的內(nèi)部主機(jī)發(fā)送數(shù)據(jù),從而可以拒絕非請(qǐng)求的(unsolicited)包,支持?jǐn)?shù)據(jù)包過(guò)濾功能。
[0007](3)端口受限維形(Port Restricted Cone) NAT
端口受限錐形NAT與受限錐形NAT類似,不同的是加了端口號(hào)的限制。IP地址為X,端口號(hào)P的外部主機(jī)只能夠向先前已經(jīng)向IP地址X、端口號(hào)P發(fā)送過(guò)數(shù)據(jù)包的內(nèi)部主機(jī)發(fā)送數(shù)據(jù)包。[0008](4)對(duì)稱型(Symmetric) NAT
對(duì)稱型NAT將把從相同的內(nèi)部IP地址與端口號(hào)發(fā)出,以及目的IP地址與端口號(hào)也相同的所有請(qǐng)求映射為相同的外部IP地址和端口號(hào)。數(shù)據(jù)包在經(jīng)過(guò)此類型的NAT時(shí)候,源地址與端口即使相同,但目的地不同的話,將為其分配不同的映射地址。此外,只有提前收到內(nèi)網(wǎng)主機(jī)X發(fā)來(lái)數(shù)據(jù)包的外部主機(jī)才可以向該內(nèi)部主機(jī)發(fā)送數(shù)據(jù)包。
[0009]STUN解決穿透NAT問題的思路是,私網(wǎng)中的終端通過(guò)某種機(jī)制(STUN探測(cè)方式)預(yù)先得到出口 NAT上的對(duì)外地址,然后在凈載中所填寫的地址信息直接填寫出口 NAT上的對(duì)外地址,而不是私網(wǎng)內(nèi)終端的私有IP地址,這樣凈載中的內(nèi)容在經(jīng)過(guò)NAT時(shí)就無(wú)需被修改了,只需按普通NAT流程轉(zhuǎn)換報(bào)文頭的IP地址即可,凈載中的IP地址信息和報(bào)文頭地址信息是一致的,所以數(shù)據(jù)包可以順利的穿越NAT設(shè)備。
[0010]TURN方式解決NAT問題的思路是私網(wǎng)中的終端,通過(guò)某種機(jī)制預(yù)先獲得公網(wǎng)上的服務(wù)地址信息(STUN方式得到的地址為出口 NAT上的外部映射地址,而TURN方式得到地址是TURN Server的公網(wǎng)地址),通過(guò)在報(bào)文凈載中直接填寫該公網(wǎng)地址可以實(shí)現(xiàn)NAT的成功穿越。
【發(fā)明內(nèi)容】
[0011]本發(fā)明所要解決的技術(shù)問題是:提供一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法。基于交互式連通建立方式技術(shù),結(jié)合了 STUN和TURN的穿越NAT方式,是一種綜合性的NAT解決方案,實(shí)現(xiàn)NAT設(shè)備的穿透,達(dá)到不同局域網(wǎng)之間以及外網(wǎng)與局域網(wǎng)設(shè)備之間基于NAT內(nèi)物聯(lián)網(wǎng)嵌入式設(shè)備和通用設(shè)備傳感及控制數(shù)據(jù)的雙向傳輸。
[0012]為了解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于,位于NAT以外的公網(wǎng)上的主機(jī),實(shí)現(xiàn)對(duì)NAT穿透,以P2P方式對(duì)NAT內(nèi)的物聯(lián)網(wǎng)嵌入式終端進(jìn)行數(shù)據(jù)探測(cè)和控制。
[0013]位于不同NAT內(nèi)的主機(jī)實(shí)現(xiàn)NAT設(shè)備的穿透,達(dá)到不同局域網(wǎng)之間以及外網(wǎng)與局域網(wǎng)設(shè)備之間基于NAT內(nèi)物聯(lián)網(wǎng)嵌入式設(shè)備和通用設(shè)備傳感和控制數(shù)據(jù)的雙向傳輸。
該連接方法具體包括以下步驟:
1)位于局域網(wǎng)內(nèi)的NAT適配器B主動(dòng)向位于公網(wǎng)的穿透服務(wù)器S發(fā)送UDP數(shù)據(jù)包,穿透服務(wù)器S返回初始化信息,其中包括適配器的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、穿透服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口;
2)向適配器B發(fā)起連接請(qǐng)求的客戶端A也向位于公網(wǎng)的穿透服務(wù)器S發(fā)送UDP數(shù)據(jù)包,穿透服務(wù)器S返回初始化信息,其中包括適配器B的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、穿透服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口 ;
3)當(dāng)客戶端A的注冊(cè)完成之后,穿透服務(wù)器S的數(shù)據(jù)庫(kù)中會(huì)有每個(gè)客戶相應(yīng)的地址和端口記錄,當(dāng)客戶端A要與NAT后的適配器B進(jìn)行通信時(shí),會(huì)向穿透服務(wù)器S發(fā)起請(qǐng)求,獲得穿透適配器B的可能IP地址和端口,包括內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、月艮務(wù)器S轉(zhuǎn)發(fā)地址和端口;
4)請(qǐng)求訪問的客戶端A獲得了穿透適配器B的基本信息后,會(huì)從這些信息里面提取出部分信息,主要是穿透的適配器B的內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、服務(wù)器S轉(zhuǎn)發(fā)地址和端口,用于NAT穿透協(xié)商時(shí)使用;
5)客戶端A和穿透適配器B根據(jù)各自獲得的對(duì)方地址和端口信息,互相發(fā)送穿透信息,嘗試以STUN、TURN來(lái)源中收集盡可能多的可能被連通的IP地址;然后按照地址的優(yōu)先級(jí)依次測(cè)試,選擇最優(yōu)路徑;在STUN能穿透的情況下,走STUN協(xié)議打通的直連通道,當(dāng)STUN無(wú)法穿透時(shí),則走TURN轉(zhuǎn)發(fā)的方式。
[0014]本發(fā)明與現(xiàn)有技術(shù)相比,具有以下有益效果:
I)本發(fā)明充分考慮單個(gè)物聯(lián)網(wǎng)傳感設(shè)備和受控設(shè)備所不具備的網(wǎng)絡(luò)功能,尤其是NAT穿透功能,對(duì)各種傳感協(xié)議均以預(yù)留接口的方式,便于擴(kuò)展。
[0015]2)本發(fā)明為了提高降低局域網(wǎng)內(nèi)物聯(lián)網(wǎng)傳感設(shè)備和受控設(shè)備的聯(lián)網(wǎng)使用成本,在一個(gè)適配器上可提供多個(gè)標(biāo)準(zhǔn)協(xié)議接口,用于將各設(shè)備通過(guò)一個(gè)適配器同時(shí)被公網(wǎng)客戶端訪問。
[0016]3)在穿透技術(shù)中,本發(fā)明結(jié)合了 STUN(Session Traversal Utilities for NAT)和TURN (Traversal Using Relay NAT)的穿越NAT方式。首先會(huì)從STUN、TURN來(lái)源中收集盡可能多的可能被連通的IP地址。然后按照地址的優(yōu)先級(jí)依次測(cè)試,選擇最優(yōu)路徑。在STUN能穿透的情況下,通過(guò)STUN協(xié)議打通的直連通道進(jìn)行雙向數(shù)據(jù)傳輸,當(dāng)STUN無(wú)法穿透時(shí),則通過(guò)TURN轉(zhuǎn)發(fā)的方式進(jìn)行雙向數(shù)據(jù)傳輸。
[0017]4)本發(fā)明采用服務(wù)器與客戶端工作模式,本發(fā)明在同一個(gè)服務(wù)器同時(shí)包括STUN(Session Traversal Utilities for NAT)服務(wù)器和TURN (Traversal Using Relay NAT)服務(wù)器。STUN服務(wù)器實(shí)現(xiàn)STUN協(xié)議,TURN服務(wù)器實(shí)現(xiàn)TURN協(xié)議,將兩個(gè)服務(wù)器進(jìn)行整合,最終實(shí)現(xiàn)一種綜合的解決NAT穿透方案。本發(fā)明的服務(wù)器的主要功能是完成客戶端的注冊(cè)、獲取并保存客戶端穿透過(guò)程的相關(guān)信息、實(shí)現(xiàn)與客戶端之間的心跳機(jī)制、客戶端數(shù)據(jù)的轉(zhuǎn)發(fā)。
[0018]5)本發(fā)明的客戶端主要包括 STUN(Session Traversal Utilities for NAT)客戶端、TURN (Traversal Using Relay NAT)客戶端,其主要包括本發(fā)明的工作在NAT內(nèi)的適配器和工作在另一個(gè)網(wǎng)絡(luò)的普通客戶端。STUN客戶端實(shí)現(xiàn)STUN協(xié)議,TURN客戶端實(shí)現(xiàn)TURN協(xié)議,將兩個(gè)客戶端整合開發(fā),最終讓客戶端也實(shí)現(xiàn)綜合穿透技術(shù),實(shí)現(xiàn)與服務(wù)器的交互。客戶端的主要功能是向服務(wù)器進(jìn)行注冊(cè)、向服務(wù)器發(fā)送心跳包、從服務(wù)器獲取對(duì)方客戶端的穿透地址信息、實(shí)現(xiàn)穿透過(guò)程、完成數(shù)據(jù)傳輸。
【專利附圖】
【附圖說(shuō)明】
[0019]圖1發(fā)明的系統(tǒng)組網(wǎng)結(jié)構(gòu)圖 圖2適配器模塊結(jié)構(gòu)圖
圖3穿透服務(wù)器結(jié)構(gòu)示意圖 圖4客戶端結(jié)構(gòu)示意圖 圖5 NAT穿透流程圖。
【具體實(shí)施方式】
[0020]參見圖1?圖5,一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,是基于交互式連通建立方式技術(shù),結(jié)合了 STUN和TURN的穿越NAT方式,是一種綜合性的NAT解決方案,實(shí)現(xiàn)NAT設(shè)備的穿透,達(dá)到不同局域網(wǎng)之間以及外網(wǎng)與局域網(wǎng)設(shè)備之間基于NAT內(nèi)物聯(lián)網(wǎng)嵌入式設(shè)備和通用設(shè)備傳感及控制數(shù)據(jù)的雙向傳輸。
[0021 ] 本發(fā)明的NAT解決方案:
位于NAT以外的公網(wǎng)上的主機(jī),實(shí)現(xiàn)對(duì)NAT穿透,以P2P方式對(duì)NAT內(nèi)的物聯(lián)網(wǎng)嵌入式終端進(jìn)行數(shù)據(jù)探測(cè)和控制。
[0022]位于不同NAT內(nèi)的主機(jī)實(shí)現(xiàn)NAT設(shè)備的穿透,達(dá)到不同局域網(wǎng)之間以及外網(wǎng)與局域網(wǎng)設(shè)備之間基于NAT內(nèi)物聯(lián)網(wǎng)嵌入式設(shè)備和通用設(shè)備傳感和控制數(shù)據(jù)的雙向傳輸;
具體包括以下步驟:
1)位于局域網(wǎng)內(nèi)的NAT適配器B主動(dòng)向位于公網(wǎng)的穿透服務(wù)器S發(fā)送UDP數(shù)據(jù)包,穿透服務(wù)器S返回初始化信息,其中包括適配器的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、穿透服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口等;
2)向適配器B發(fā)起連接請(qǐng)求的客戶端A也向位于公網(wǎng)的穿透服務(wù)器S發(fā)送UDP數(shù)據(jù)包,穿透服務(wù)器S返回初始化信息,其中包括適配器B的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、穿透服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口等;
3)當(dāng)客戶端A的注冊(cè)完成之后,穿透服務(wù)器S的數(shù)據(jù)庫(kù)中會(huì)有每個(gè)客戶相應(yīng)的地址和端口記錄,當(dāng)客戶端A要與NAT后的適配器B進(jìn)行通信時(shí),會(huì)向穿透服務(wù)器S發(fā)起請(qǐng)求,獲得穿透適配器B的可能IP地址和端口,包括內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、月艮務(wù)器S轉(zhuǎn)發(fā)地址和端口;
4)請(qǐng)求訪問的客戶端A獲得了穿透適配器B的基本信息后,會(huì)從這些信息里面提取出部分信息,主要是穿透的適配器B的內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、服務(wù)器S轉(zhuǎn)發(fā)地址和端口,用于NAT穿透協(xié)商時(shí)使用;
5)客戶端A和穿透適配器B根據(jù)各自獲得的對(duì)方地址和端口信息,互相發(fā)送穿透信息,嘗試以STUN、TURN來(lái)源中收集盡可能多的可能被連通的IP地址;然后按照地址的優(yōu)先級(jí)依次測(cè)試,選擇最優(yōu)路徑;在STUN能穿透的情況下,走STUN協(xié)議打通的直連通道,當(dāng)STUN無(wú)法穿透時(shí),則走TURN轉(zhuǎn)發(fā)的方式。
[0023]通過(guò)適配器實(shí)現(xiàn)NAT穿透,并通過(guò)TCP/IP網(wǎng)絡(luò)協(xié)議與各傳感器設(shè)備協(xié)議的轉(zhuǎn)換,從而實(shí)現(xiàn)從公網(wǎng)對(duì)NAT內(nèi)網(wǎng)傳感器數(shù)據(jù)的讀取,實(shí)現(xiàn)從公網(wǎng)對(duì)NAT內(nèi)網(wǎng)中物聯(lián)網(wǎng)設(shè)備的控制。
[0024]實(shí)施例1
1.客戶端注冊(cè)、心跳檢測(cè)
客戶端A、B分別向P2P穿透服務(wù)器S進(jìn)行注冊(cè),這是一個(gè)創(chuàng)建實(shí)例和初始化過(guò)程,在這個(gè)過(guò)程中,客戶端會(huì)獲得P2P穿透服務(wù)器S返回的初始化信息,這些信息是以SDP信息的形式返回,包括協(xié)議版本、回話名稱、該客戶端的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口等。各字段如下:
V =(協(xié)議版本)
ο =(所有者/創(chuàng)建者和回話標(biāo)識(shí)符)
S =(會(huì)話名稱) t =(會(huì)話活動(dòng)時(shí)間) m =(媒體名稱)C =(連接信息) a =ice_ufrag (會(huì)話用戶名) a =ice-pwd (會(huì)話密碼)
a = candidate (客戶端穿透時(shí)采用的候選地址)
服務(wù)器返回的這些信息會(huì)被存入到數(shù)據(jù)庫(kù)中,當(dāng)客戶端雙發(fā)進(jìn)行穿透時(shí),會(huì)調(diào)用這些數(shù)據(jù)。
[0025]另外,客戶端還會(huì)間隔性(相隔15秒)的發(fā)送一組STUN message的消息到服務(wù)器S,保持與服務(wù)器的聯(lián)系,同時(shí)服務(wù)器也會(huì)返回一組STUN message消息進(jìn)行響應(yīng)。
[0026]客戶端發(fā)送的STUN message:
STUN Bingding request
Hdr:
length =(消息長(zhǎng)度)
magic =(魔術(shù)字域,是事物ID的一部分,該值為固定的0x2112A442) tsx_id =(事物ID,用于唯一識(shí)別STUN事物)
服務(wù)器返回的STUN message:
STUN Binding success response
Hdr:
length =(消息長(zhǎng)度)
mageic =(魔術(shù)字域,是事物ID的一部分,該值為固定的0x2112A442) tsx_id =(事物ID,用于唯一識(shí)別STUN事物)
Attrbutes:
MAPPED-ADDRESS:客戶端映射之后的IP地址和端口 SOURCE-ADDRESS:服務(wù)器發(fā)送響應(yīng)的源IP地址和端口 CHANGED-ADDRESS:服務(wù)器發(fā)送響應(yīng)的改變后的IP地址和端口
2.獲取對(duì)方客戶端的地址和端口信息
當(dāng)客戶端的注冊(cè)完成之后,服務(wù)器S的數(shù)據(jù)庫(kù)中會(huì)有每個(gè)客戶相應(yīng)的地址和端口記錄。當(dāng)客戶A要與客戶B進(jìn)行通信時(shí),會(huì)請(qǐng)求服務(wù)器S,獲得客戶端B的IP地址和端口(包括內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、服務(wù)器轉(zhuǎn)發(fā)地址和端口),同時(shí),客戶B也會(huì)向服務(wù)器S請(qǐng)求獲得A的IP地址和端口。
[0027]3.服務(wù)器返回客戶端的地址和端口信息
服務(wù)器S返回的客戶端信息是以SDP信息的形式返回的,SDP各字段所代表的意義在上面已經(jīng)介紹。客戶端A獲得了客戶端B的信息后,會(huì)從這些信息里面提取出部分信息,主要是客戶端B的內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、服務(wù)器轉(zhuǎn)發(fā)地址和端口,并將這些數(shù)據(jù)存入到remotelnfo數(shù)組中,等待NAT穿透協(xié)商的時(shí)候使用。
[0028]4.客戶端雙方進(jìn)行穿透連接
4.1穿透連接過(guò)程
客戶端A和客戶端B根據(jù)各自獲得的對(duì)方地址和端口信息,互相發(fā)送穿透信息,調(diào)用方法icedemo_start_nego O ,進(jìn)行穿透連接測(cè)試,這個(gè)過(guò)程實(shí)現(xiàn)的是STUN協(xié)議,會(huì)根據(jù)對(duì)方客戶端的候選地址,逐個(gè)發(fā)送穿透信息,等待連接成功。如果成功,將會(huì)返回成功通道的地址和端口號(hào),然后A、B雙方可以利用該通道進(jìn)行數(shù)據(jù)傳輸;如果失敗,則A、B雙方會(huì)采用服務(wù)器轉(zhuǎn)發(fā)的方式進(jìn)行數(shù)據(jù)通信,轉(zhuǎn)發(fā)過(guò)程實(shí)現(xiàn)的是TURN協(xié)議,轉(zhuǎn)發(fā)方式中,所有的數(shù)據(jù)都會(huì)經(jīng)過(guò)服務(wù)。
[0029]例如客戶端A會(huì)向客戶端B的外網(wǎng)和內(nèi)網(wǎng)地址發(fā)送穿透連接信息:
192.168.1.103:8000(222.111.99.1:20202)->222.123.88.1:10101
192.168.1.103:8000(222.111.99.1:20202)->192.168.2.110:8001
同時(shí)客戶端B也會(huì)向客戶端A的外網(wǎng)和內(nèi)網(wǎng)地址發(fā)送穿透連接信息:
192.168.2.110:8001(222.123.88.1:10101)->222.111.99.1:20202
192.168.2.110:8001(222.123.88.1:10101)->192.168.1.103:8000
當(dāng)NAT設(shè)備的記錄中有兩條記錄的源端地址、端口號(hào)和目的端地址、端口號(hào)正好相反時(shí),就代表雙方希望互相通信,這時(shí),除對(duì)稱型NAT外,其它NAT設(shè)備就會(huì)讓雙方建立一條通道進(jìn)行數(shù)據(jù)傳輸,此時(shí)代表穿透成功。針對(duì)對(duì)稱型NAT,會(huì)采用服務(wù)器轉(zhuǎn)發(fā)的方式讓客戶端
A、B進(jìn)行通信。
[0030]整個(gè)穿透測(cè)試的過(guò)程可能需要數(shù)十到數(shù)百毫秒的時(shí)間才能完成,這主要取決于客戶端候選地址的數(shù)量。而穿透連接能否成功,與NAT的類型有很大關(guān)系。不同類型的NAT在內(nèi)外網(wǎng)的地址和端口映射上存在差別,這會(huì)直接影響到穿透連接的成功概率。在項(xiàng)目中,實(shí)現(xiàn)了 STUN協(xié)議的穿透連接測(cè)試,可以成功穿透完全圓錐(Full Cone)NAT、受限圓錐(Restricted Cone) NAT、端口受限維形(Port Restricted Cone) NAT,但是無(wú)法穿透對(duì)稱型(Symmetric) NAT,針對(duì)對(duì)稱型NAT,采用實(shí)現(xiàn)了 TURN協(xié)議的轉(zhuǎn)發(fā)方式進(jìn)行通信。
【權(quán)利要求】
1.一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于,位于NAT以外的公網(wǎng)上的主機(jī),實(shí)現(xiàn)對(duì)NAT穿透,以P2P方式對(duì)NAT內(nèi)的物聯(lián)網(wǎng)嵌入式終端進(jìn)行數(shù)據(jù)探測(cè)和控制。
2.如權(quán)利要求1所述的一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于:位于不同NAT內(nèi)的主機(jī)實(shí)現(xiàn)NAT設(shè)備的穿透,達(dá)到不同局域網(wǎng)之間以及外網(wǎng)與局域網(wǎng)設(shè)備之間基于NAT內(nèi)物聯(lián)網(wǎng)嵌入式設(shè)備和通用設(shè)備傳感和控制數(shù)據(jù)的雙向傳輸。
3.如權(quán)利要求1所述一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于,具體包括以下步驟: 1)位于局域網(wǎng)內(nèi)的NAT適配器B主動(dòng)向位于公網(wǎng)的穿透服務(wù)器S發(fā)送UDP數(shù)據(jù)包,穿透服務(wù)器S返回初始化信息,其中包括適配器的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、穿透服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口; 2)向適配器B發(fā)起連接請(qǐng)求的客戶端A也向位于公網(wǎng)的穿透服務(wù)器S發(fā)送UDP數(shù)據(jù)包,穿透服務(wù)器S返回初始化信息,其中包括適配器B的內(nèi)網(wǎng)地址和端口、NAT映射地址和端口、穿透服務(wù)器S轉(zhuǎn)發(fā)消息的地址和端口 ; 3)當(dāng)客戶端A的注冊(cè)完成之后,穿透服務(wù)器S的數(shù)據(jù)庫(kù)中會(huì)有每個(gè)客戶相應(yīng)的地址和端口記錄,當(dāng)客戶端A要與NAT后的適配器B進(jìn)行通信時(shí),會(huì)向穿透服務(wù)器S發(fā)起請(qǐng)求,獲得穿透適配器B的可能IP地址和端口,包括內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、月艮務(wù)器S轉(zhuǎn)發(fā)地址和端口; 4)請(qǐng)求訪問的客戶端A獲得了穿透適配器B的基本信息后,會(huì)從這些信息里面提取出部分信息,主要是穿透的適配器B的內(nèi)網(wǎng)IP地址和端口、NAT映射地址和端口、服務(wù)器S轉(zhuǎn)發(fā)地址和端口,用于NAT穿透協(xié)商時(shí)使用; 5)客戶端A和穿透適配器B根據(jù)各自獲得的對(duì)方地址和端口信息,互相發(fā)送穿透信息,嘗試以STUN、TURN來(lái)源中收集盡可能多的可能被連通的IP地址;然后按照地址的優(yōu)先級(jí)依次測(cè)試,選擇最優(yōu)路徑;在STUN能穿透的情況下,走STUN協(xié)議打通的直連通道,當(dāng)STUN無(wú)法穿透時(shí),則走TURN轉(zhuǎn)發(fā)的方式。
4.如權(quán)利要求1所述的一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于:通過(guò)適配器實(shí)現(xiàn)NAT穿透,并通過(guò)TCP/IP網(wǎng)絡(luò)協(xié)議與各傳感器設(shè)備協(xié)議的轉(zhuǎn)換,從而實(shí)現(xiàn)從公網(wǎng)對(duì)NAT內(nèi)網(wǎng)傳感器數(shù)據(jù)的讀取。
5.如權(quán)利要求1所述的一種基于NAT穿透適配器的物聯(lián)網(wǎng)設(shè)備P2P連接方法,其特征在于:通過(guò)適配器實(shí)現(xiàn)NAT穿透,并通過(guò)TCP/IP網(wǎng)絡(luò)協(xié)議與各傳感器設(shè)備協(xié)議的轉(zhuǎn)換,從而實(shí)現(xiàn)從公網(wǎng)對(duì)NAT內(nèi)網(wǎng)中物聯(lián)網(wǎng)設(shè)備的控制。
【文檔編號(hào)】H04L29/08GK103957287SQ201410171046
【公開日】2014年7月30日 申請(qǐng)日期:2014年4月25日 優(yōu)先權(quán)日:2014年4月25日
【發(fā)明者】蔡建平, 吳劍鐘, 何加銘, 霍梅梅 申請(qǐng)人:浙江大學(xué)城市學(xué)院