專利名稱:基于udt實(shí)現(xiàn)nat穿越的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translator,NAT)技術(shù)領(lǐng)域,具體涉 及基于UDT實(shí)現(xiàn)NAT穿越的系統(tǒng)和方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展、個(gè)人計(jì)算機(jī)性能的不斷提高以及邊緣網(wǎng)絡(luò)信息的不斷 豐富,Internet中客戶機(jī)、服務(wù)器的通信模式占統(tǒng)治地位的局面已經(jīng)逐漸被打破,越來越多 的網(wǎng)絡(luò)應(yīng)用采用了點(diǎn)對(duì)點(diǎn)(Peer-to-Peer,P2P)的通信模式。在P2P通信模式中,主機(jī)之間 通過直接通信實(shí)現(xiàn)信息的交換和資源的共享,這使得用戶之間的溝通和交互變得更直接、 更便捷。然而,在目前的IPv4網(wǎng)絡(luò)環(huán)境中,NAT(Network Address Translator)設(shè)備的廣 泛存在卻使得處于不同內(nèi)部私有網(wǎng)絡(luò)中的主機(jī)直接進(jìn)行通信變得很困難,這在很大程度上 限制了 P2P應(yīng)用的發(fā)展。因此,到目前為止出現(xiàn)多種不同的解決方法,常用的穿越NAT的方法主要包括ALG 方式,MIDCOM方式、STUN方式、TURN方式、FullProxy方式、UDP打洞、TCP打洞等。其中基 于UDP協(xié)議的NAT穿越技術(shù)是目前運(yùn)用得比較多的方法,其成功率比較高,但是由于UDP是 不可靠傳輸協(xié)議,在網(wǎng)絡(luò)環(huán)境比較差時(shí),發(fā)生丟包的現(xiàn)象比較嚴(yán)重,無法保證傳輸?shù)馁|(zhì)量。 而基于TCP協(xié)議的NAT穿越技術(shù)雖然是面向連接的可靠傳輸協(xié)議,但是由于TCP需要三次 握手,實(shí)現(xiàn)比較復(fù)雜,而且穿透成功率比較低,只有百分之六十多。
發(fā)明內(nèi)容
本發(fā)明的首要目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種基于UDT實(shí)現(xiàn)NAT 穿越的系統(tǒng)。本發(fā)明的另一目的是提供一種基于UDT實(shí)現(xiàn)NAT穿越的方法。本發(fā)明的首要目的通過下述技術(shù)方案實(shí)現(xiàn)基于UDT實(shí)現(xiàn)NAT穿越的系統(tǒng),包括用于向NAT穿越服務(wù)器進(jìn)行注冊(cè),請(qǐng)求對(duì)方客戶節(jié)點(diǎn)進(jìn)行反連或者使用UDT進(jìn)行 打洞實(shí)現(xiàn)NAT穿越的終端;與終端交互的NAT穿越服務(wù)器,用于保存所述終端的注冊(cè)信息,轉(zhuǎn)發(fā)終端的打洞 請(qǐng)求;以及與終端交互的索引服務(wù)器,用于為所述終端提供包含客戶節(jié)點(diǎn)的ID、內(nèi)部IP 地址、外部IP地址、端口號(hào)和所處的網(wǎng)絡(luò)類型的peer列表信息。本發(fā)明的另一目的通過下述技術(shù)方案實(shí)現(xiàn)步驟S10、客戶節(jié)點(diǎn)向NAT穿越服務(wù)器發(fā)送包括客戶節(jié)點(diǎn)信息的數(shù)據(jù)報(bào)文,從而在 NAT穿越服務(wù)器上注冊(cè);步驟S20,NAT穿越服務(wù)器通過步驟SlO中得到的客戶節(jié)點(diǎn)信息,確定該客戶節(jié)點(diǎn) 的網(wǎng)絡(luò)類型為公網(wǎng)節(jié)點(diǎn)或者內(nèi)網(wǎng)節(jié)點(diǎn);然后向客戶節(jié)點(diǎn)發(fā)送包含該客戶節(jié)點(diǎn)的網(wǎng)絡(luò)類型的 注冊(cè)成功信息;
步驟S30、客戶節(jié)點(diǎn)向索引服務(wù)器獲取peer列表,該列表中包含每個(gè)客戶節(jié)點(diǎn)的 ID、內(nèi)網(wǎng)IP地址、外網(wǎng)IP地址、UDP端口號(hào)和網(wǎng)絡(luò)類型;步驟S40、根據(jù)網(wǎng)絡(luò)類型進(jìn)行NAT穿越。本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果1、簡(jiǎn)單易行。2、穿透成功率高,除了雙方都處于Symmetric NAT后或者一方處于Symmetric NAT 后而另一方處于Port Restricted Cone NAT后,無法穿越外,其他都能進(jìn)行穿越。3、數(shù)據(jù)傳輸可靠性高,因?yàn)閁DT是基于UDP的面向連接的基于數(shù)據(jù)流的可靠的應(yīng) 用層傳輸協(xié)議。
圖1是本發(fā)明的基于UDT實(shí)現(xiàn)NAT穿越系統(tǒng)的結(jié)構(gòu)示意圖;圖2是本發(fā)明的基于UDT實(shí)現(xiàn)NAT穿越方法的流程圖。
具體實(shí)施例方式下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限 于此。實(shí)施例如圖1所示,本發(fā)明基于UDT實(shí)現(xiàn)NAT穿越的系統(tǒng),包括終端10,以及分別與終端 10相互連接的NAT穿越服務(wù)器20和索引服務(wù)器30。終端10用于向NAT穿越服務(wù)器進(jìn)行 注冊(cè),請(qǐng)求對(duì)方客戶節(jié)點(diǎn)進(jìn)行反連或者使用UDT進(jìn)行打洞實(shí)現(xiàn)NAT穿越。NAT穿越服務(wù)器 20用于保存所述終端10的注冊(cè)信息,轉(zhuǎn)發(fā)終端的打洞請(qǐng)求。索引服務(wù)器30用于為終端10 提供可連接的peer列表信息,當(dāng)客戶節(jié)點(diǎn)要和其他節(jié)點(diǎn)建立連接時(shí),該客戶節(jié)點(diǎn)先向索引 服務(wù)器獲取在線的客戶節(jié)點(diǎn)列表,該列表中包含客戶節(jié)點(diǎn)的ID、內(nèi)部IP地址、外部IP地址、 端口號(hào)和所處的網(wǎng)絡(luò)類型。所述終端10包括TCP直連模塊101,用于終端和對(duì)方終端都同時(shí)處于公網(wǎng)或都處 于不同內(nèi)網(wǎng)時(shí)建立TCP連接;TCP反向連接模塊102,用于終端處于公網(wǎng)而對(duì)方終端處于內(nèi) 網(wǎng)時(shí)建立TCP連接;內(nèi)網(wǎng)發(fā)現(xiàn)模塊103,用于終端和對(duì)方終端處于同一內(nèi)網(wǎng)時(shí)建立TCP直 連;UDT打洞模塊104,利用UDT打洞技術(shù),使得當(dāng)兩個(gè)終端節(jié)點(diǎn)處于不同內(nèi)網(wǎng)時(shí)的情況下建
立UDT連接。下面詳細(xì)敘述基于UDT實(shí)現(xiàn)NAT穿越系統(tǒng)的工作過程所述終端10發(fā)送包括終端節(jié)點(diǎn)ID和內(nèi)部IP的數(shù)據(jù)報(bào)文給NAT穿越服務(wù)器,NAT 穿越服務(wù)器解析該數(shù)據(jù)報(bào)文中的終端節(jié)點(diǎn)ID和內(nèi)網(wǎng)IP地址,提取所接收的數(shù)據(jù)報(bào)文中的 終端節(jié)點(diǎn)的外網(wǎng)IP地址,并將這四項(xiàng)(終端節(jié)點(diǎn)ID,內(nèi)網(wǎng)IP,外網(wǎng)IP,端口號(hào))信息保存; NAT穿越服務(wù)器比較該終端的外網(wǎng)IP和內(nèi)網(wǎng)IP,若相同則該節(jié)點(diǎn)為外網(wǎng)節(jié)點(diǎn),否則為內(nèi)網(wǎng) 節(jié)點(diǎn),并保存該信息。NAT穿越服務(wù)器20保存完成后,向終端10發(fā)送包含該終端節(jié)點(diǎn)網(wǎng)絡(luò)類型的注冊(cè)成 功消息。終端10向索引服務(wù)器30獲取peer列表,其中包括每個(gè)peer的ID、內(nèi)網(wǎng)IP、外網(wǎng) IP、端口號(hào)以及網(wǎng)絡(luò)類型。
5
若對(duì)方客戶節(jié)點(diǎn)處于公網(wǎng),則終端向?qū)Ψ娇蛻艄?jié)點(diǎn)的外部IP和端口創(chuàng)建TCP連 接,進(jìn)入TCP直連模塊101。若對(duì)方客戶節(jié)點(diǎn)處于內(nèi)網(wǎng),而自己處于外網(wǎng),則在NAT穿透服務(wù) 器10的協(xié)助下進(jìn)行反連,進(jìn)入TCP反連接模塊102,終端節(jié)點(diǎn)給NAT穿越服務(wù)器發(fā)送終端請(qǐng) 求反連的消息,讓NAT穿越服務(wù)器轉(zhuǎn)告對(duì)方客戶節(jié)點(diǎn);NAT穿越服務(wù)器根據(jù)終端節(jié)點(diǎn)ID查 找到對(duì)方客戶節(jié)點(diǎn)的外部IP地址和端口號(hào),然后給其發(fā)送反連消息,告知其要反連的IP地 址和端口號(hào);對(duì)方客戶節(jié)點(diǎn)收到請(qǐng)求消息后,向所述終端的外部IP和端口發(fā)起TCP連接,進(jìn) 行數(shù)據(jù)傳輸。若本地客戶節(jié)點(diǎn)與對(duì)方客戶節(jié)點(diǎn)均處于內(nèi)網(wǎng),則進(jìn)入內(nèi)網(wǎng)發(fā)現(xiàn)模塊103,通過 內(nèi)網(wǎng)內(nèi)廣播確定對(duì)方客戶節(jié)點(diǎn)與本用戶節(jié)點(diǎn)是否在同一內(nèi)網(wǎng),如果是同一內(nèi)網(wǎng),則終端向 對(duì)方外部IP和端口創(chuàng)建TCP連接,進(jìn)入TCP直連模塊101 ;如果不是同一內(nèi)網(wǎng),則進(jìn)入U(xiǎn)DT 打洞模塊104,在NAT穿越服務(wù)器的協(xié)助下進(jìn)行UDT打洞實(shí)現(xiàn)NAT穿越。在UDT打洞模塊104中,終端給NAT穿越服務(wù)器發(fā)送打洞請(qǐng)求報(bào)文A,請(qǐng)求與對(duì)方 客戶節(jié)點(diǎn)進(jìn)行UDT打洞,報(bào)文A的內(nèi)容包括本地客戶節(jié)點(diǎn)ID和對(duì)方客戶節(jié)點(diǎn)ID ;NAT穿越 服務(wù)器收到報(bào)文A后,查找節(jié)點(diǎn)ID對(duì)應(yīng)的外部IP地址和端口號(hào),并給雙方節(jié)點(diǎn)均發(fā)送打 洞命令報(bào)文B,其中包含對(duì)方的外部IP地址和端口號(hào);客戶節(jié)點(diǎn)和對(duì)方客戶節(jié)點(diǎn)收到報(bào)文 B后,分別創(chuàng)建一個(gè)UDT套接字,并綁定到與NAT服務(wù)器交互的UDP套接字上,接著設(shè)置打 洞模式,向NAT服務(wù)器所指定的報(bào)文B中的對(duì)方IP地址和端口號(hào)進(jìn)行連接;若其中一方創(chuàng) 建連接成功返回,則表示打洞成功,可進(jìn)行后續(xù)數(shù)據(jù)傳輸。假設(shè)A和B都處于內(nèi)網(wǎng),若A要 和B通信,則A先向NAT穿越服務(wù)器發(fā)送打洞消息,消息中包括A和B在NAT穿越服務(wù)器 上注冊(cè)的ID,NAT穿越服務(wù)器收到后,根據(jù)這兩個(gè)ID分別查找各自對(duì)應(yīng)的外部IP地址和 端口號(hào),假設(shè)查到的A的IP地址為218. 192. 170. 22,端口為7500,查到的B的IP地址為 218. 192. 168. 2,端口為7800,則NAT穿越服務(wù)器向這兩個(gè)地址和端口分別發(fā)送包含對(duì)方外 部IP和端口的打洞消息。A和B收到后,分別創(chuàng)建一個(gè)UDT套接字,并調(diào)用bindO函數(shù)綁 定到各自與NAT服務(wù)器交互的UDP套接字上,接著調(diào)用setsocketoptO函數(shù)設(shè)置打洞模式 UDT_RENDEZVOUS,然后調(diào)用connect ()向NAT服務(wù)器所指定的報(bào)文B中的對(duì)方IP地址和端 口號(hào)進(jìn)行連接。若其中一方的connect ()函數(shù)成功返回,則表示打洞成功,雙方均可調(diào)用 recv()或sendO函數(shù)進(jìn)行數(shù)據(jù)的收發(fā),實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸。如圖2所示,本發(fā)明基于UDT實(shí)現(xiàn)NAT穿越的方法,具體包括如下步驟步驟S10、客戶節(jié)點(diǎn)向NAT穿越服務(wù)器發(fā)送包括客戶節(jié)點(diǎn)信息的數(shù)據(jù)報(bào)文,從而在 NAT穿越服務(wù)器上注冊(cè)。NAT穿越服務(wù)器主要用來登記用戶的注冊(cè)信息,轉(zhuǎn)發(fā)用戶的打洞請(qǐng) 求。本步驟SlO向NAT穿越服務(wù)器進(jìn)行注冊(cè)的過程,具體包括如下步驟步驟S101、客戶節(jié)點(diǎn)發(fā)送包括該客戶節(jié)點(diǎn)ID和內(nèi)網(wǎng)IP地址的數(shù)據(jù)報(bào)文給NAT穿 越服務(wù)器;步驟S102、NAT穿越服務(wù)器解析并保存該數(shù)據(jù)報(bào)文中的客戶節(jié)點(diǎn)ID和內(nèi)網(wǎng)IP地 址,提取并保存該數(shù)據(jù)報(bào)文中的客戶節(jié)點(diǎn)的外網(wǎng)IP地址和UDP端口號(hào)。所述內(nèi)網(wǎng)IP地址 是指客戶節(jié)點(diǎn)在內(nèi)網(wǎng)中的IP地址,也稱本地IP地址;所述外網(wǎng)IP地址和UDP端口號(hào)是 客戶在外網(wǎng)的IP地址和端口號(hào)。若客戶處于公網(wǎng),則內(nèi)部IP地址和外部IP地址都是客 戶本身的IP地址,UDP端口號(hào)也為客戶本身的端口號(hào);若用戶處于NAT內(nèi),則內(nèi)網(wǎng)IP地 址為客戶本身的IP地址,而外網(wǎng)IP地址和UDP端口號(hào)是經(jīng)過NAT轉(zhuǎn)換后的IP地址和端 口號(hào)。比如用戶處于內(nèi)網(wǎng),其IP地址為192. 168. 1. 101,端口號(hào)為6500,經(jīng)過NAT轉(zhuǎn)換后的IP地址為218. 192. 169. 11,端口號(hào)為6520,則其內(nèi)部IP為192. 168. 1. 101,外部IP為 218. 192. 169. 11,端口號(hào)為 6520。步驟S20,NAT穿越服務(wù)器通過步驟SlO中得到的客戶節(jié)點(diǎn)信息,確定該客戶節(jié)點(diǎn) 的網(wǎng)絡(luò)類型為公網(wǎng)節(jié)點(diǎn)或者內(nèi)網(wǎng)節(jié)點(diǎn);然后向客戶節(jié)點(diǎn)發(fā)送包含該客戶節(jié)點(diǎn)的網(wǎng)絡(luò)類型的 注冊(cè)成功信息。本步驟S20中,NAT穿越服務(wù)確定客戶節(jié)點(diǎn)的網(wǎng)絡(luò)類型的過程,具體包括如 下步驟步驟S201、NAT穿越服務(wù)器比較該客戶節(jié)點(diǎn)的外網(wǎng)IP地址和內(nèi)網(wǎng)IP地址,若相同 則該節(jié)點(diǎn)為外網(wǎng)節(jié)點(diǎn),否則為內(nèi)網(wǎng)節(jié)點(diǎn),并保存比較結(jié)果信息;步驟S202、NAT穿越服務(wù)器對(duì)比較結(jié)果信息的保存完成后,向客戶節(jié)點(diǎn)發(fā)送包含 該客戶節(jié)點(diǎn)網(wǎng)絡(luò)類型的注冊(cè)成功消息。如上所述,假設(shè)某一客戶節(jié)點(diǎn)內(nèi)部IP為192. 168. 1. 101,外部IP為 218. 192. 169. 11,NAT穿越服務(wù)器通過比較這個(gè)地址,可判斷出該客戶節(jié)點(diǎn)處于NAT之后, 為內(nèi)網(wǎng)中的客戶。步驟S30、客戶節(jié)點(diǎn)向索引服務(wù)器獲取peer列表,該列表中包含每個(gè)客戶節(jié)點(diǎn)的 ID、內(nèi)網(wǎng)IP地址、外網(wǎng)IP地址、UDP端口號(hào)和網(wǎng)絡(luò)類型。步驟S40、根據(jù)網(wǎng)絡(luò)類型進(jìn)行NAT穿越,具體包括如下步驟步驟S401、若對(duì)方客戶節(jié)點(diǎn)處于公網(wǎng)中,則直接向?qū)Ψ娇蛻艄?jié)點(diǎn)發(fā)起連接。步驟S402,若對(duì)方客戶節(jié)點(diǎn)處于內(nèi)網(wǎng)中,且本地客戶節(jié)點(diǎn)處于公網(wǎng)中,則通過讓對(duì) 方客戶節(jié)點(diǎn)進(jìn)行TCP反連來實(shí)現(xiàn)NAT穿越。步驟S402進(jìn)行TCP反連的過程,具體包括如下 步驟步驟S4021、本地客戶節(jié)點(diǎn)給NAT穿越服務(wù)器發(fā)送請(qǐng)求反連消息,讓NAT穿越服務(wù) 器轉(zhuǎn)告對(duì)方客戶節(jié)點(diǎn);其中反連消息包括本地客戶節(jié)點(diǎn)ID、TCP監(jiān)聽端口和對(duì)方客戶節(jié)點(diǎn) ID ;步驟S4022、NAT穿越服務(wù)器根據(jù)對(duì)方客戶節(jié)點(diǎn)ID查找到對(duì)方客戶節(jié)點(diǎn)的外部IP 地址和端口號(hào),然后給其發(fā)送包含本地客戶節(jié)點(diǎn)的外部IP地址和端口號(hào)的反連消息,告知 對(duì)方客戶節(jié)點(diǎn)要反連的IP地址和端口號(hào);步驟S4023、對(duì)方客戶節(jié)點(diǎn)收到請(qǐng)求消息后,向所述本地客戶節(jié)點(diǎn)發(fā)起TCP連接, 進(jìn)行數(shù)據(jù)傳輸。步驟S403、若本地客戶節(jié)點(diǎn)和對(duì)方客戶節(jié)點(diǎn)都處于內(nèi)網(wǎng)中,則本地客戶節(jié)點(diǎn)通過 內(nèi)網(wǎng)廣播確定對(duì)方是否與自己處于同一內(nèi)網(wǎng),若處于同一內(nèi)網(wǎng)中,則直接與其建立TCP連 接,否則轉(zhuǎn)入步驟S404。步驟S404、本地客戶節(jié)點(diǎn)和對(duì)方客戶節(jié)點(diǎn)之間使用UDT進(jìn)行打洞來實(shí)現(xiàn)NAT穿越。 本步驟S404具體如下步驟4041、本地客戶節(jié)點(diǎn)給NAT穿越服務(wù)器發(fā)送打洞請(qǐng)求報(bào)文A,請(qǐng)求與對(duì)方客戶 節(jié)點(diǎn)進(jìn)行UDT打洞,報(bào)文A的內(nèi)容包括本地客戶節(jié)點(diǎn)ID和對(duì)方客戶節(jié)點(diǎn)ID。步驟4042、NAT穿越服務(wù)器收到報(bào)文A后,查找對(duì)方客戶節(jié)點(diǎn)ID的外部IP地址和 端口號(hào),并給雙方節(jié)點(diǎn)均發(fā)送打洞命令報(bào)文B,報(bào)文B包含對(duì)方客戶節(jié)點(diǎn)的外部IP地址和端口號(hào)。步驟4043、本地客戶節(jié)點(diǎn) 對(duì)方客戶節(jié)點(diǎn)收到報(bào)文B后,創(chuàng)建一個(gè)UDT套接字,并綁定到與NAT穿越服務(wù)器交互的UDP套接字上,接著設(shè)置打洞模式,向報(bào)文B中的對(duì)方客戶 節(jié)點(diǎn)的外部IP地址和端口號(hào)進(jìn)行連接。若其中一方創(chuàng)建連接成功返回,則表示打洞成功, 可進(jìn)行后續(xù)數(shù)據(jù)傳輸。其中打洞模式是通過調(diào)用setsocketopt函數(shù)設(shè)置UDT_RENDEZVOUS 模式來實(shí)現(xiàn)。步驟50、在步驟40完成NAT穿越后,進(jìn)行數(shù)據(jù)傳輸。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的 限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化, 均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
基于UDT實(shí)現(xiàn)NAT穿越的系統(tǒng),其特征在于包括用于向NAT穿越服務(wù)器進(jìn)行注冊(cè),請(qǐng)求對(duì)方客戶節(jié)點(diǎn)進(jìn)行反連或者使用UDT進(jìn)行打洞實(shí)現(xiàn)NAT穿越的終端;與終端交互的NAT穿越服務(wù)器,用于保存所述終端的注冊(cè)信息,轉(zhuǎn)發(fā)終端的打洞請(qǐng)求;以及與終端交互的索引服務(wù)器,用于為所述終端提供包含客戶節(jié)點(diǎn)的ID、內(nèi)部IP地址、外部IP地址、端口號(hào)和所處的網(wǎng)絡(luò)類型的peer列表信息。
2.根據(jù)權(quán)利要求1所述的基于UDT實(shí)現(xiàn)NAT穿越的系統(tǒng),其特征在于所述終端包括 TCP直連模塊,用于終端和對(duì)方終端同時(shí)處于公網(wǎng)或處于不同內(nèi)網(wǎng)時(shí)建立TCP連接; TCP反向連接模塊,用于終端處于公網(wǎng)而對(duì)方終端處于內(nèi)網(wǎng)時(shí)建立TCP連接;內(nèi)網(wǎng)發(fā)現(xiàn)模塊,用于終端和對(duì)方終端處于同一內(nèi)網(wǎng)時(shí)建立TCP直連; UDT打洞模塊,用于當(dāng)兩個(gè)終端處于不同NAT內(nèi)時(shí)建立UDT連接。
3.基于UDT實(shí)現(xiàn)NAT穿越的方法,其特征在于包括以下步驟步驟S10、客戶節(jié)點(diǎn)向NAT穿越服務(wù)器發(fā)送包括客戶節(jié)點(diǎn)信息的數(shù)據(jù)報(bào)文,從而在NAT 穿越服務(wù)器上注冊(cè);步驟S20,NAT穿越服務(wù)器通過步驟SlO中得到的客戶節(jié)點(diǎn)信息,確定該客戶節(jié)點(diǎn)的網(wǎng) 絡(luò)類型為公網(wǎng)節(jié)點(diǎn)或者內(nèi)網(wǎng)節(jié)點(diǎn);然后向客戶節(jié)點(diǎn)發(fā)送包含該客戶節(jié)點(diǎn)的網(wǎng)絡(luò)類型的注冊(cè) 成功信息;步驟S30、客戶節(jié)點(diǎn)向索引服務(wù)器獲取peer列表,該列表中包含每個(gè)客戶節(jié)點(diǎn)的ID、內(nèi) 網(wǎng)IP地址、外網(wǎng)IP地址、UDP端口號(hào)和網(wǎng)絡(luò)類型; 步驟S40、根據(jù)網(wǎng)絡(luò)類型進(jìn)行NAT穿越。
4.根據(jù)權(quán)利要求3所述的基于UDT實(shí)現(xiàn)NAT穿越的方法,其特征在于所述步驟SlO包括步驟S101、客戶節(jié)點(diǎn)發(fā)送包括該客戶節(jié)點(diǎn)ID和內(nèi)網(wǎng)IP地址的數(shù)據(jù)報(bào)文給NAT穿越服 務(wù)器;步驟S102、NAT穿越服務(wù)器解析并保存該數(shù)據(jù)報(bào)文中的客戶節(jié)點(diǎn)ID和內(nèi)網(wǎng)IP地址,提 取并保存該數(shù)據(jù)報(bào)文中的客戶節(jié)點(diǎn)的外網(wǎng)IP地址和UDP端口號(hào)。
5.根據(jù)權(quán)利要求3所述的基于UDT實(shí)現(xiàn)NAT穿越的方法,其特征在于所述步驟S20包括步驟S201、NAT穿越服務(wù)器比較該客戶節(jié)點(diǎn)的外網(wǎng)IP地址和內(nèi)網(wǎng)IP地址,若相同則該 節(jié)點(diǎn)為外網(wǎng)節(jié)點(diǎn),否則為內(nèi)網(wǎng)節(jié)點(diǎn),并保存比較結(jié)果信息;步驟S202、NAT穿越服務(wù)器對(duì)比較結(jié)果信息的保存完成后,向客戶節(jié)點(diǎn)發(fā)送包含該客 戶節(jié)點(diǎn)網(wǎng)絡(luò)類型的注冊(cè)成功消息。
6.根據(jù)權(quán)利要求5所述的基于UDT實(shí)現(xiàn)NAT穿越的方法,其特征在于所述步驟S40包括步驟S401、若對(duì)方客戶節(jié)點(diǎn)處于公網(wǎng)中,則直接向?qū)Ψ娇蛻艄?jié)點(diǎn)發(fā)起連接; 步驟S402,若對(duì)方客戶節(jié)點(diǎn)處于內(nèi)網(wǎng)中,且本地客戶節(jié)點(diǎn)處于公網(wǎng)中,則通過讓對(duì)方客 戶節(jié)點(diǎn)進(jìn)行TCP反連來實(shí)現(xiàn)NAT穿越;步驟S403、若本地客戶節(jié)點(diǎn)和對(duì)方客戶節(jié)點(diǎn)都處于內(nèi)網(wǎng)中,則本地客戶節(jié)點(diǎn)通過內(nèi)網(wǎng) 廣播確定對(duì)方是否與自己處于同一內(nèi)網(wǎng),若處于同一內(nèi)網(wǎng)中,則直接與其建立TCP連接,否則轉(zhuǎn)入步驟S404 ;步驟S404、本地客戶節(jié)點(diǎn)和對(duì)方客戶節(jié)點(diǎn)之間使用UDT進(jìn)行打洞來實(shí)現(xiàn)NAT穿越。
7.根據(jù)權(quán)利要求6所述的基于UDT實(shí)現(xiàn)NAT穿越的方法,其特征在于所述步驟S404包括步驟4041、本地客戶節(jié)點(diǎn)給NAT穿越服務(wù)器發(fā)送打洞請(qǐng)求報(bào)文A,請(qǐng)求與對(duì)方客戶節(jié)點(diǎn) 進(jìn)行UDT打洞,報(bào)文A的內(nèi)容包括本地客戶節(jié)點(diǎn)ID和對(duì)方客戶節(jié)點(diǎn)ID ;步驟4042、NAT穿越服務(wù)器收到報(bào)文A后,查找對(duì)方客戶節(jié)點(diǎn)ID的外部IP地址和端口 號(hào),并給雙方節(jié)點(diǎn)均發(fā)送打洞命令報(bào)文B,報(bào)文B包含對(duì)方客戶節(jié)點(diǎn)的外部IP地址和端口 號(hào);步驟4043、本地客戶節(jié)點(diǎn)和對(duì)方客戶節(jié)點(diǎn)收到報(bào)文B后,創(chuàng)建一個(gè)UDT套接字,并綁定 到與NAT穿越服務(wù)器交互的UDP套接字上,接著設(shè)置打洞模式,向報(bào)文B中的對(duì)方客戶節(jié)點(diǎn) 的外部IP地址和端口號(hào)進(jìn)行連接。
全文摘要
本發(fā)明涉及基于UDT實(shí)現(xiàn)NAT穿越的系統(tǒng)和方法,其系統(tǒng)包括用于向NAT穿越服務(wù)器進(jìn)行注冊(cè),請(qǐng)求對(duì)方客戶節(jié)點(diǎn)進(jìn)行反連或者使用UDT進(jìn)行打洞實(shí)現(xiàn)NAT穿越的終端;與終端交互的NAT穿越服務(wù)器,用于保存所述終端的注冊(cè)信息,轉(zhuǎn)發(fā)終端的打洞請(qǐng)求;以及與終端交互的索引服務(wù)器,用于為所述終端提供包含客戶節(jié)點(diǎn)的ID、內(nèi)部IP地址、外部IP地址、端口號(hào)和所處的網(wǎng)絡(luò)類型的peer列表信息。本發(fā)明簡(jiǎn)單易行,穿透成功率高,數(shù)據(jù)傳輸可靠性高。
文檔編號(hào)H04L29/08GK101895590SQ20101023707
公開日2010年11月24日 申請(qǐng)日期2010年7月23日 優(yōu)先權(quán)日2010年7月23日
發(fā)明者伍明彰, 吳宗澤, 吳潤(rùn)凱, 謝勝利 申請(qǐng)人:華南理工大學(xué)