實(shí)現(xiàn)tcp反向端口映射的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種實(shí)現(xiàn)TCP反向端口映射的系統(tǒng)和方法,主要是計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及不同NAT網(wǎng)關(guān)內(nèi)的終端設(shè)備之間,通過TCP協(xié)議進(jìn)行通信的方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著社會進(jìn)步,科技發(fā)展,越來越多的電子產(chǎn)品具備接入互聯(lián)網(wǎng)的能力。用戶需要通過互聯(lián)網(wǎng)遠(yuǎn)程訪問自己的終端設(shè)備。
[0003]但是由于公網(wǎng)IPv4資源的短缺,大部分終端設(shè)備都是通過網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT:Network Address Translat1n)方式接入互聯(lián)網(wǎng),其本身不具備公網(wǎng)IP,導(dǎo)致用戶在其它外部網(wǎng)絡(luò)環(huán)境下無法直接訪問。
[0004]目前通常的做法是在NAT網(wǎng)關(guān)上做端口映射或開啟UPNP功能,讓內(nèi)網(wǎng)設(shè)備的服務(wù)端口跟NAT網(wǎng)關(guān)的外部端口進(jìn)行綁定,外部用戶通過訪問NAT網(wǎng)關(guān)的外部端口達(dá)到訪問內(nèi)網(wǎng)設(shè)備服務(wù)端口的目的。但是這必須要求NAT網(wǎng)關(guān)本身具備公網(wǎng)IP,而且通常需要綁定一個(gè)動態(tài)域名,同時(shí)也要求用戶具備一定的網(wǎng)絡(luò)知識,能對NAT網(wǎng)關(guān)進(jìn)行修改配置。實(shí)際情況是寬帶運(yùn)營商可提供給用戶的公網(wǎng)IP資源越來越少,越來越多的NAT網(wǎng)關(guān)無法獲得公網(wǎng)IP,這就失去了通過在NAT網(wǎng)關(guān)上設(shè)置端口映射或UPNP訪問內(nèi)網(wǎng)設(shè)備的先決條件。
[0005]另外一種做法是將原有的通信協(xié)議由TCP改為UDP,通過NAT穿透技術(shù)遠(yuǎn)程訪問內(nèi)網(wǎng)設(shè)備。然而這種方法不僅需要修改通信協(xié)議,而且需要改造設(shè)備端的服務(wù)程序和客戶端軟件,牽涉面廣,成本高,兼容性低。何況對于一些基于TCP的通用服務(wù)協(xié)議(如HTTP、SSH等),是無法改為m)P的。
【發(fā)明內(nèi)容】
[0006]為了克服傳統(tǒng)端口映射方法的局限性,以及NAT穿透技術(shù)的兼容性等問題,本發(fā)明提供了一種實(shí)現(xiàn)TCP反向端口映射的系統(tǒng)和方法,全面兼容各種TCP服務(wù)協(xié)議。
[0007]本發(fā)明所采用的技術(shù)方案是:一種實(shí)現(xiàn)TCP反向端口映射的系統(tǒng),它包括有服務(wù)器模塊、通過互聯(lián)網(wǎng)與服務(wù)器模塊相連的設(shè)備端代理模塊和客戶端代理模塊;
[0008]服務(wù)器模塊,分別與設(shè)備端代理模塊和客戶端代理模塊通信,協(xié)助客戶端代理模塊與設(shè)備端代理模塊之間建立起UDP通道;
[0009]客戶端代理模塊,在本地開啟至少一個(gè)TCP監(jiān)聽端口,通過已建立的UDP通道向設(shè)備端代理模塊發(fā)起反向端口映射請求,將需要連接的目標(biāo)IP地址和TCP端口一一對應(yīng)映射為客戶端代理模塊的本地TCP監(jiān)聽端口。
[0010]所述服務(wù)器模塊協(xié)助客戶端代理模塊與設(shè)備端代理模塊之間建立起UDP通道,包括:
[0011]設(shè)備端代理模塊使用唯一的序列號,向服務(wù)器模塊注冊,并與之保持心跳消息;
[0012]客戶端代理模塊向服務(wù)器模塊查詢指定序列號的設(shè)備端代理模塊,并通過服務(wù)器模塊與設(shè)備端代理模塊協(xié)商,確定NAT穿透方案,進(jìn)行NAT穿透,并最終建立起點(diǎn)對點(diǎn)的UDP通道。
[0013]所述客戶端代理模塊在本地開啟至少一個(gè)TCP監(jiān)聽端口,通過已建立的UDP通道向設(shè)備端代理模塊發(fā)起反向端口映射請求,將需要連接的目標(biāo)IP地址和TCP端口一一對應(yīng)映射為客戶端代理模塊的本地TCP監(jiān)聽端口,包括:
[0014]客戶端代理模塊通過已建立的UDP通道告知設(shè)備端代理模塊需要連接的目標(biāo)IP地址和TCP端口,并在本地開啟至少一個(gè)TCP監(jiān)聽端口,此時(shí)目標(biāo)IP地址和TCP端口與本地TCP監(jiān)聽端口形成——對應(yīng)關(guān)系,從而將目標(biāo)IP地址和TCP端口映射為客戶端代理模塊的本地TCP監(jiān)聽端口。
[0015]所述目標(biāo)IP地址和TCP端口為設(shè)備端代理模塊本機(jī)的IP地址和TCP端口,或者是設(shè)備端代理模塊能夠訪問到的IP地址和TCP端口。
[0016]一種實(shí)現(xiàn)TCP反向端口映射的方法,包括:
[0017]客戶端代理模塊在服務(wù)器模塊協(xié)同作用下,與指定序列號的設(shè)備端代理模塊建立起UDP通道;
[0018]客戶端代理模塊通過已建立的UDP通道向設(shè)備端代理模塊發(fā)起反向端口映射請求,并在本地開啟至少一個(gè)TCP監(jiān)聽端口,將需要連接的目標(biāo)IP地址和TCP端口映射為客戶端代理模塊的本地TCP監(jiān)聽端口。
[0019]所述客戶端代理模塊在服務(wù)器模塊協(xié)同作用下,與指定序列號的設(shè)備端代理模塊建立起UDP通道,包括:
[0020]設(shè)備端代理模塊使用唯一的序列號,向服務(wù)器模塊注冊,并與之保持心跳消息;
[0021]客戶端代理模塊向服務(wù)器模塊查詢指定序列號的設(shè)備端代理模塊,并通過服務(wù)器模塊與設(shè)備端代理模塊協(xié)商,確定NAT穿透方案,進(jìn)行NAT穿透,并最終建立起點(diǎn)對點(diǎn)的UDP通道。
[0022]所述客戶端代理模塊通過已建立的UDP通道向設(shè)備端代理模塊發(fā)起反向端口映射請求,并在本地開啟至少一個(gè)TCP監(jiān)聽端口,將需要連接的目標(biāo)IP地址和TCP端口映射為客戶端代理模塊的本地TCP監(jiān)聽端口,包括:
[0023]客戶端代理模塊通過已建立的UDP通道告知設(shè)備端代理模塊需要連接的目標(biāo)IP地址和TCP端口,并在本地開啟至少一個(gè)TCP監(jiān)聽端口,此時(shí)目標(biāo)IP地址和TCP端口與本地TCP監(jiān)聽端口形成——對應(yīng)關(guān)系,從而將目標(biāo)IP地址和TCP端口映射為客戶端代理模塊的本地TCP監(jiān)聽端口。
[0024]所述目標(biāo)IP地址和TCP端口為設(shè)備端代理模塊本機(jī)的IP地址和TCP端口,或者是設(shè)備端代理模塊能夠訪問到的IP地址和TCP端口。
[0025]本發(fā)明有益效果在于:本發(fā)明提出的TCP反向端口映射是指在用戶客戶端一側(cè)建立映射端口,不僅不需要用戶在NAT網(wǎng)關(guān)上預(yù)先做端口映射,而且也不需要修改設(shè)備端原有的TCP通訊協(xié)議,甚至不需要重新開發(fā)設(shè)備端服務(wù)程序和客戶端軟件,即可通過訪問本地映射端口的方式達(dá)到訪問遠(yuǎn)程內(nèi)網(wǎng)設(shè)備的目的。
【附圖說明】
[0026]圖1是本發(fā)明實(shí)現(xiàn)TCP反向端口映射的系統(tǒng)架構(gòu)圖。
[0027]圖2是本發(fā)明系統(tǒng)建立多個(gè)UDP通道的示意圖。
【具體實(shí)施方式】
[0028]為了對本發(fā)明的技術(shù)特征和實(shí)際效果進(jìn)行更加清楚的說明,下面參照具體實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明,但不能理解為對本發(fā)明的可實(shí)施范圍的限定。
[0029]如圖1、圖2所示,本實(shí)施例實(shí)現(xiàn)TCP反向端口映射的系統(tǒng),包括有服務(wù)器模塊1、通過互聯(lián)網(wǎng)與服務(wù)器模塊I相連的設(shè)備端代理模塊2和客戶端代理模塊3 ;
[0030]服務(wù)器模塊1,分別與設(shè)備端代理模塊2和客戶端代理模塊3通信,協(xié)助客戶端代理模塊3與設(shè)備端代理模塊2之間建立起UDP通道;具體為:設(shè)備端代理模塊2使用唯一的序列號(UUID),向服務(wù)器模塊I注冊,并與之保持心跳消息;客戶端代理模塊3向服務(wù)器模塊I查詢指定序列號(UUID)的設(shè)備端代理模塊2,并通過服務(wù)器模塊I與設(shè)備端代理模塊2協(xié)商,確定NAT穿透方案,進(jìn)行NAT穿透,并最終建立起點(diǎn)對點(diǎn)的UDP通道。此過程可以重復(fù)多次,因此客戶端代理模塊3和設(shè)備端代理模塊2之間可以建立多個(gè)UDP通道。
[0031]客戶端代理模塊3,在本地開啟至少一個(gè)TCP監(jiān)聽端口,通過已建立的UDP通道向設(shè)備端代理模塊2發(fā)起反向端口映射請求,將目標(biāo)IP地址和TCP端口映射為客戶端代理模塊3的本地TCP監(jiān)聽端口 ;具體為:客戶端代理模塊3通過已建立的UDP通道告知設(shè)備端代理模塊2需要連接的目標(biāo)IP地址和TCP端口,并在本地開啟一個(gè)TCP監(jiān)聽端口,此時(shí)目標(biāo)IP地址和TCP端口與本地TCP監(jiān)聽端口形成——對應(yīng)關(guān)系,從而將目標(biāo)IP地址和