專利名稱:通過nat進(jìn)行雙向訪問的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及通過NAT(Network AddressTranslation網(wǎng)絡(luò)地址翻譯)進(jìn)行雙向訪問的方法。
背景技術(shù):
在傳統(tǒng)的網(wǎng)絡(luò)管理中,網(wǎng)絡(luò)中可能會(huì)存在很多個(gè)不同終端,比如計(jì)算機(jī)的局域網(wǎng)中可能存在多臺(tái)電腦,網(wǎng)絡(luò)打印機(jī)等網(wǎng)絡(luò)設(shè)備。一般來講,同一個(gè)局域網(wǎng)中的不同終端都各自擁有不同的IP地址才能在網(wǎng)絡(luò)中進(jìn)行通信。因?yàn)榫W(wǎng)絡(luò)地址(IP)資源正在迅速被耗盡,大多數(shù)的家庭網(wǎng)絡(luò)都使用網(wǎng)絡(luò)地址翻譯(NAT)技術(shù)建立了一個(gè)網(wǎng)關(guān)。NAT是網(wǎng)絡(luò)工程任務(wù)組(IETF)制訂的一種標(biāo)準(zhǔn),它允許私有網(wǎng)絡(luò)中的多臺(tái)電腦或設(shè)備共享一個(gè)全球唯一的公共地址(所使用私有地址的范圍為10.0.x.x、192.168.x.x和172.x.x.x),通過同一路由器來對(duì)外網(wǎng)進(jìn)行訪問。比如說,同一路由器端口下,可能有10臺(tái)計(jì)算機(jī),它們?cè)趦?nèi)部網(wǎng)絡(luò)中分別具有不同的內(nèi)部IP地址,但是在對(duì)外部網(wǎng)絡(luò)進(jìn)行訪問時(shí)都是使用相同的IP地址。在這種情況下,NAT機(jī)制允許同一路由器端口下的一個(gè)計(jì)算機(jī)族通過NAT地址翻譯后,使用同一IP地址來對(duì)外部的網(wǎng)絡(luò)進(jìn)行訪問。但是由于NAT地址翻譯存在單通的問題,即位于NAT內(nèi)部的IP設(shè)備經(jīng)NAT地址翻譯之后,可以訪問NAT外部的IP設(shè)備,而位于NAT之外的IP設(shè)備,卻無法通過NAT內(nèi)部設(shè)備的內(nèi)部IP地址訪問該內(nèi)部設(shè)備。
現(xiàn)有的SOAP(簡(jiǎn)單對(duì)象協(xié)議)協(xié)議的實(shí)現(xiàn)是基于基本的RPC(遠(yuǎn)程過程調(diào)用)方法調(diào)用,也即一個(gè)標(biāo)準(zhǔn)的C-S(用戶-服務(wù)器)結(jié)構(gòu),通過HTTP的傳輸承載了請(qǐng)求—回應(yīng)方式,這不是一個(gè)對(duì)等的雙向通訊實(shí)體,如果需要建立反向連接,則必須再次發(fā)起HTTP連接請(qǐng)求,這對(duì)于NAT的單通是不適用的。這樣,就出現(xiàn)了位于NAT外部的設(shè)備不能主動(dòng)發(fā)起與位于NAT內(nèi)部設(shè)備之間的對(duì)話的問題。例如,位于NAT外部的代理,無法主動(dòng)發(fā)起請(qǐng)求對(duì)位于NAT內(nèi)部的網(wǎng)絡(luò)終端進(jìn)行管理,這樣就大大限制了網(wǎng)絡(luò)管理的有效性。
美國專利第6487605號(hào)及第6195705號(hào)揭示了一種通信方法,該方法中通信雙方建立連接后,一方間隔一定的時(shí)間來向另一方發(fā)送消息,以報(bào)告它的情況(比如是否正常工作,或者是否有告警信息等等)。這是在雙方的連接已建立的情況下實(shí)現(xiàn)的。在使用NAT的情況下,NAT內(nèi)部終端經(jīng)過NAT建立與外部終端的聯(lián)系后,若經(jīng)過一定的時(shí)間后雙方無應(yīng)答,NAT將會(huì)在訪問地址表中刪除該外部終端的IP地址,從而使外部終端無法訪問內(nèi)部終端。如果內(nèi)部終端需要訪問外部終端,需要重新通過NAT建立連接。
現(xiàn)有的解決方法,如美國專利公開第20030002496號(hào)公開了一種采用建立與本地IP地址對(duì)應(yīng)的主機(jī)名關(guān)聯(lián)表,在外部IP發(fā)起呼叫的情況下,在與本地IP地址對(duì)應(yīng)的主機(jī)名關(guān)聯(lián)表內(nèi)進(jìn)行查找,找到發(fā)起呼叫的主機(jī)名稱對(duì)應(yīng)的內(nèi)部IP地址,然后在兩者之間建立連接。采用這種方法雖然可以解決通過NAT的雙向訪問問題,但是每次在外部發(fā)起與內(nèi)部終端進(jìn)行通信時(shí),都要首先查找主機(jī)名與地址關(guān)聯(lián)表,然后才能建立雙方的連接,這樣在雙方通信頻繁的情況下會(huì)顯著增加消息發(fā)送的時(shí)延,有可能造成網(wǎng)絡(luò)的擁塞。同樣,美國專利公開第20030055978號(hào)也公開了一種通過對(duì)內(nèi)網(wǎng)IP地址的映射來尋找目的主機(jī)地址的方法,也不適用于雙方通信頻繁的情況。再者,由于終端設(shè)備的數(shù)量巨大以及布局的不可控性,使得用戶很難確切得知每一個(gè)終端所對(duì)應(yīng)的NAT類型和數(shù)量,同時(shí)對(duì)于每一個(gè)NAT建立地址映射表也同樣大大增加了運(yùn)營(yíng)維護(hù)成本。這也使得此兩種方式很難應(yīng)用于對(duì)NAT內(nèi)部終端的網(wǎng)絡(luò)管理。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種通過NAT進(jìn)行雙向訪問的方法,使位于NAT外部和內(nèi)部的終端都可作為呼叫發(fā)起者進(jìn)行通信,又能避免雙方頻繁通信的情況下每次都浪費(fèi)時(shí)間建立對(duì)內(nèi)部IP地址的映射或是建立其他的對(duì)應(yīng)地址表進(jìn)行查找,從而有效地減小通信的時(shí)延并降低運(yùn)行維護(hù)成本,可以通過外部終端對(duì)位于NAT內(nèi)部的終端進(jìn)行管理。
本發(fā)明的目的是通過以下技術(shù)方法來實(shí)現(xiàn)的一種通過NAT進(jìn)行雙向訪問的方法,該方法基于長(zhǎng)連接(長(zhǎng)連接即雙方先建立通訊連接,連接建立后不斷開,然后再進(jìn)行報(bào)文發(fā)送和接收)的應(yīng)用而實(shí)現(xiàn)。因?yàn)槲挥贜AT內(nèi)部的終端可以自由訪問位于NAT外部的終端,所以首先由位于NAT內(nèi)部的終端向位于NAT外部的終端發(fā)起呼叫,請(qǐng)求建立連接。在上述的連接建立后,會(huì)話雙方中的一方終端以一定的周期向另一方終端發(fā)送數(shù)據(jù)包以保持雙方的長(zhǎng)連接,該周期為一個(gè)小于本地NAT失效周期的時(shí)間間隔。例如建立連接后,內(nèi)部終端根據(jù)上述周期向外部終端發(fā)送數(shù)據(jù)包。
本發(fā)明所公開的方法實(shí)現(xiàn)了通過NAT進(jìn)行雙向訪問,使NAT外部的終端可以訪問NAT內(nèi)部的終端。從而可使運(yùn)行商管理大規(guī)模位于防火墻或NAT的內(nèi)部終端,高效地管理數(shù)量眾多的終端設(shè)備。而且可以對(duì)位于用戶端的設(shè)備進(jìn)行自動(dòng)配置、遠(yuǎn)程監(jiān)控、及時(shí)排錯(cuò)、遠(yuǎn)程操作(測(cè)試,升級(jí)等),避免和減緩了到眾多的用戶端進(jìn)行上門維護(hù)的不便和工作量。
圖1是一個(gè)簡(jiǎn)單的通過NAT進(jìn)行雙向訪問的網(wǎng)絡(luò)架構(gòu)圖。
圖2是NAT內(nèi)部終端和外部終端建立連接的時(shí)序圖。
具體實(shí)施例方式
本發(fā)明優(yōu)選實(shí)施方式為NAT內(nèi)部終端為被管對(duì)象,NAT外部終端為代理。根據(jù)NAT單通的特性,內(nèi)部終端可以訪問外部終端,首先在NAT內(nèi)部終端即被管對(duì)象中保存代理設(shè)備的域名(出廠時(shí)預(yù)設(shè)),當(dāng)內(nèi)部終端打開電源并連接到網(wǎng)絡(luò)后,它通過上述設(shè)置的域名主動(dòng)尋找外部代理設(shè)備并向其發(fā)出HTTP鑒權(quán)請(qǐng)求,從而建立TCP(傳輸控制協(xié)議)會(huì)話。代理設(shè)備收到終端發(fā)起的請(qǐng)求,對(duì)內(nèi)部終端用戶進(jìn)行管理鑒權(quán),鑒權(quán)通過后建立連接,承載該HTTP傳輸?shù)腡CP會(huì)話被確認(rèn)建立。并且,同時(shí)NAT將外部終端的IP地址加入其訪問地址表中。在會(huì)話建立后,外部代理終端與位于NAT內(nèi)部的終端只需查找本地的訪問地址表,即可進(jìn)行雙方的通信。在NAT中,該TCP會(huì)話建立后,若在一定時(shí)間間隔內(nèi)雙方無應(yīng)答,NAT將會(huì)在訪問地址表中刪除該會(huì)話的外部終端的IP地址。所以上述鑒權(quán)后的HTTP連接必須保持長(zhǎng)連接,即當(dāng)終端向代理設(shè)備發(fā)起一個(gè)HTTP請(qǐng)求并建立了一個(gè)TCP會(huì)話后,這個(gè)會(huì)話一直保持存在,并將內(nèi)部終端到外部代理終端及外部代理終端到內(nèi)部終端的雙向請(qǐng)求數(shù)據(jù)包承載于其上,通過這種方式使該外部終端的IP地址一直處于NAT的訪問地址表中。這樣可以解決經(jīng)由NAT地址轉(zhuǎn)換之后,NAT外部設(shè)備無法訪問內(nèi)部設(shè)備IP的問題。
本發(fā)明的通過NAT進(jìn)行雙向訪問的方法是通過如下的方法來保持長(zhǎng)連接的。根據(jù)網(wǎng)絡(luò)終端內(nèi)部的時(shí)鐘,使通信雙方中的一方終端周期性地發(fā)送數(shù)據(jù)包給另一方終端,該數(shù)據(jù)包可以是內(nèi)容為空的數(shù)據(jù)包或是其它有內(nèi)容的數(shù)據(jù)包,發(fā)送該數(shù)據(jù)包的目的是使外部代理終端可以知道內(nèi)部終端的連接狀態(tài)。數(shù)據(jù)包的發(fā)送可以是內(nèi)部終端發(fā)送給外部終端,也可以是外部終端發(fā)送給內(nèi)部終端。位于NAT外部的終端接收到該數(shù)據(jù)包后確認(rèn)上述連接的存在。所述的數(shù)據(jù)包的發(fā)送周期必須小于NAT的失效周期(agetime),每個(gè)NAT的失效周期可能不同,在進(jìn)行網(wǎng)絡(luò)配置時(shí),可根據(jù)與外部代理終端相連接的NAT的失效周期設(shè)定數(shù)據(jù)包的發(fā)送間隔。
這樣在這條HTTP長(zhǎng)連接上,NAT外部代理終端和NAT內(nèi)部終端之間可以實(shí)現(xiàn)雙向通信,NAT外部代理終端可以接受內(nèi)部終端的請(qǐng)求同時(shí)可以主動(dòng)向內(nèi)部終端發(fā)起會(huì)話請(qǐng)求。這樣,所有的包括(自動(dòng))配置,告警事件以及遠(yuǎn)程控制等網(wǎng)管功能都可通過此會(huì)話實(shí)現(xiàn)。通過長(zhǎng)連接、單個(gè)TCP會(huì)話承載和周期性的數(shù)據(jù)包,使NAT的內(nèi)部終端和外部代理終端順利地建立雙向連接,很好的解決了NAT的單通問題。
為進(jìn)一步闡述本發(fā)明,請(qǐng)參閱圖1所示,標(biāo)號(hào)11、12代表兩個(gè)位于NAT3內(nèi)部的終端,標(biāo)號(hào)2代表內(nèi)部局域網(wǎng),標(biāo)號(hào)4代表位于NAT3外部的終端,即代理設(shè)備(所述的代理設(shè)備即網(wǎng)絡(luò)管理中具有代理功能的設(shè)備)。內(nèi)部終端11,12通過局域網(wǎng)2相連接。首先在內(nèi)部終端11、12中設(shè)定外部代理終端4的域名,當(dāng)內(nèi)部終端11、12接入網(wǎng)絡(luò)時(shí),時(shí)序圖請(qǐng)參閱2所示,首先內(nèi)部終端11、12向外部終端發(fā)出登錄域的請(qǐng)求消息數(shù)據(jù)包,NAT3將請(qǐng)求消息數(shù)據(jù)包中對(duì)應(yīng)的目的IP地址加入其訪問地址列表,外部終端4接收到由內(nèi)部終端11、12發(fā)送來的請(qǐng)求消息數(shù)據(jù)包后與內(nèi)部終端11、12建立TCP會(huì)話,這樣內(nèi)部終端11、12與外部終端4之間的連接就建立了。當(dāng)內(nèi)部終端11、12通過域登錄鑒權(quán)后,根據(jù)系統(tǒng)內(nèi)部的時(shí)鐘,它們以小于本地NAT的失效時(shí)限(例如3秒),周期性地向外部終端4發(fā)送數(shù)據(jù)包。外部終端4接收到數(shù)據(jù)包后,確認(rèn)發(fā)送數(shù)據(jù)包終端正常工作。否則,認(rèn)定在一定的時(shí)間內(nèi)未收到數(shù)據(jù)包的內(nèi)部終端11或12的工作狀態(tài)為不正常。
該發(fā)明可用于運(yùn)行商管理大規(guī)模并位于防火墻或NAT的內(nèi)部終端的問題,使得運(yùn)行商能高效地管理數(shù)量眾多的終端設(shè)備,并能穿透防火墻或NAT管理終端設(shè)備。使運(yùn)行商能對(duì)位于用戶端的設(shè)備進(jìn)行自動(dòng)配置,遠(yuǎn)程監(jiān)控,及時(shí)排錯(cuò),遠(yuǎn)程操作(測(cè)試,升級(jí)等),避免和減緩了到眾多的用戶端進(jìn)行上門維護(hù)的不便和工作量。
權(quán)利要求
1.一種通過NAT(Network Address Translation網(wǎng)絡(luò)地址翻譯)進(jìn)行雙向訪問的方法,位于NAT內(nèi)部的終端可以訪問位于NAT外部的終端,NAT將外部終端的IP地址加入其訪問地址表,其特征在于內(nèi)部終端與外部保持長(zhǎng)連接,從而使外部終端可以訪問內(nèi)部終端。
2.如權(quán)利要求1所述的方法,其特征在于所述長(zhǎng)連接的建立過程為首先由位于NAT內(nèi)部的終端向位于NAT外部的終端發(fā)起呼叫,請(qǐng)求建立連接;在上述的連接建立后,外部終端和內(nèi)部終端中的一方以一定的周期向另一方發(fā)送數(shù)據(jù)包,該周期為小于NAT失效周期的時(shí)間間隔。
3.如權(quán)利要求2所述的方法,其特征在于內(nèi)部終端向外部終端根據(jù)上述周期發(fā)送數(shù)據(jù)包。
4.如權(quán)利要求2所述的方法,其特征在于外部終端向內(nèi)部終端根據(jù)上述周期發(fā)送數(shù)據(jù)包。
5.如權(quán)利要求2所述的方法,其特征在于所述數(shù)據(jù)包的內(nèi)容是空的。
6.如權(quán)利要求2所述的方法,其特征在于所述的數(shù)據(jù)包內(nèi)有內(nèi)容。
7.如權(quán)利要求2所述的方法,其特征在于所述的內(nèi)部終端為復(fù)數(shù)個(gè),該復(fù)數(shù)個(gè)內(nèi)部終端通過內(nèi)部局域網(wǎng)相連接,并通過NAT訪問外部終端。
8.如權(quán)利要求2至7任意之一所述的方法,其特征在于內(nèi)部終端與外部終端建立連接的過程為當(dāng)內(nèi)部終端接入網(wǎng)絡(luò)時(shí),首先向外部終端發(fā)出登錄域的請(qǐng)求消息數(shù)據(jù)包,NAT將請(qǐng)求消息數(shù)據(jù)包中對(duì)應(yīng)的目的IP地址加入其訪問地址列表,外部終端接收到由內(nèi)部終端發(fā)送來的請(qǐng)求消息數(shù)據(jù)包后與內(nèi)部終端建立TCP會(huì)話。
9.如權(quán)利要求8所述的方法,其特征在于若一方終端經(jīng)過一定時(shí)間后未收到另一方終端發(fā)送的數(shù)據(jù)包,則認(rèn)定該內(nèi)部終端的工作狀態(tài)為不正常。
10.如權(quán)利要求8所述的方法,其特征在于NAT外部終端為代理設(shè)備,內(nèi)部設(shè)備為被管理對(duì)象,通過外部終端訪問內(nèi)部終端,實(shí)現(xiàn)對(duì)內(nèi)部終端進(jìn)行自動(dòng)配置、遠(yuǎn)程監(jiān)控、及時(shí)排錯(cuò)、遠(yuǎn)程操作。
11.一種建立NAT內(nèi)部終端與外部終端之間的長(zhǎng)連接的方法,其特征在于首先由位于NAT內(nèi)部的終端向位于NAT外部的終端發(fā)起呼叫,請(qǐng)求建立連接;在上述的連接建立后,外部終端和內(nèi)部終端中的一方以一定的周期向另一方發(fā)送數(shù)據(jù)包,該周期為小于NAT失效周期的時(shí)間間隔。
12.如權(quán)利要求11所述的方法,其特征在于內(nèi)部終端向外部終端根據(jù)上述周期發(fā)送數(shù)據(jù)包。
13.如權(quán)利要求11所述的方法,其特征在于外部終端向內(nèi)部終端根據(jù)上述周期發(fā)送數(shù)據(jù)包。
14.如權(quán)利要求11所述的方法,其特征在于所述數(shù)據(jù)包的內(nèi)容是空的。
15.如權(quán)利要求11所述的方法,其特征在于所述的數(shù)據(jù)包內(nèi)有內(nèi)容。
16.如權(quán)利要求11所述的方法,其特征在于所述的內(nèi)部終端為復(fù)數(shù)個(gè),該復(fù)數(shù)個(gè)內(nèi)部終端通過內(nèi)部局域網(wǎng)相連接,并通過NAT訪問外部終端。
17.如權(quán)利要求11至16任意之一所述的方法,其特征在于內(nèi)部終端與外部終端建立連接的過程為當(dāng)內(nèi)部終端接入網(wǎng)絡(luò)時(shí),首先向外部終端發(fā)出登錄域的請(qǐng)求消息數(shù)據(jù)包,NAT將請(qǐng)求消息數(shù)據(jù)包中對(duì)應(yīng)的目的IP地址加入其訪問地址列表,外部終端接收到由內(nèi)部終端發(fā)送來的請(qǐng)求消息數(shù)據(jù)包后與內(nèi)部終端建立TCP會(huì)話,這樣內(nèi)部終端與外部終端4之間的連接就建立了。
18.如權(quán)利要求17所述的方法,其特征在于若一方終端經(jīng)過一定時(shí)間后未收到另一方終端發(fā)送的數(shù)據(jù)包,則認(rèn)定該內(nèi)部終端的工作狀態(tài)為不正常。
全文摘要
本發(fā)明涉及一種通過NAT進(jìn)行雙向訪問的方法,該方法基于長(zhǎng)連接(即雙方先建立通訊連接,連接建立后不斷開,然后再進(jìn)行報(bào)文發(fā)送和接收)的應(yīng)用而實(shí)現(xiàn)。因?yàn)槲挥贜AT內(nèi)部的終端可以自由訪問位于NAT外部的終端,所以首先由位于NAT內(nèi)部的終端向位于NAT外部的終端發(fā)起呼叫,請(qǐng)求建立連接。在上述的連接建立后,會(huì)話雙方中的一方終端以一定的周期向另一方終端發(fā)送數(shù)據(jù)包以保持雙方的長(zhǎng)連接,該周期為一個(gè)小于本地NAT失效周期為時(shí)間間隔。
文檔編號(hào)H04L29/02GK1561061SQ20041001662
公開日2005年1月5日 申請(qǐng)日期2004年2月27日 優(yōu)先權(quán)日2004年2月27日
發(fā)明者陳靜, 宋偉, 汪凱, 陳 靜 申請(qǐng)人:Ut斯達(dá)康通訊有限公司