專利名稱::一種穿越nat的隧道過渡方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,特別是涉及一種穿越NAT(網(wǎng)絡(luò)地址翻譯)的隧道過渡方法及系統(tǒng)。
背景技術(shù):
:全球互聯(lián)網(wǎng)所采用的協(xié)議族是TCP/IP協(xié)議族,IP是TCP/IP協(xié)議族中網(wǎng)絡(luò)層的協(xié)議,是TCP/IP協(xié)議族的核心協(xié)議。目前IP協(xié)議的版本號(hào)是4(簡(jiǎn)稱為IPv4),它的下一個(gè)版本就是IPv6。目前,全球互聯(lián)網(wǎng)正處于從IPv4網(wǎng)絡(luò)向IPv6網(wǎng)絡(luò)過渡的階段,IPv4/IPv6的互聯(lián)互通是保證互聯(lián)網(wǎng)向IPv6網(wǎng)絡(luò)順利過渡的關(guān)鍵因素,為此現(xiàn)有技術(shù)提出了一系列IPv4/IPv6過渡機(jī)制,主要可以分為三類技術(shù)雙協(xié)議棧、協(xié)議翻譯和隧道技術(shù)。其中,隧道技術(shù)是將IPv6報(bào)文封裝在IPv4報(bào)文中,讓IPv6數(shù)據(jù)包穿過IPv4網(wǎng)絡(luò)進(jìn)行通信,對(duì)于采用隧道技術(shù)的設(shè)備來說,在隧道的入口處,將IPv6的數(shù)據(jù)報(bào)封裝進(jìn)IPv4,IPv4報(bào)文的源地址和目的地址分別是隧道入口和隧道出口的IPv4地址;在隧道的出口處,再將IPv6報(bào)文取出轉(zhuǎn)發(fā)到目的節(jié)點(diǎn)。隧道技術(shù)只要求在隧道的入口和出口處進(jìn)行修改,對(duì)其他部分沒有要求,可以在不建設(shè)網(wǎng)絡(luò)基礎(chǔ)設(shè)施或不對(duì)現(xiàn)有網(wǎng)絡(luò)進(jìn)行大規(guī)模改造的情況下實(shí)現(xiàn)IPv6節(jié)點(diǎn)或IPv6網(wǎng)絡(luò)之間的互連,并且對(duì)用于封裝和被封裝的協(xié)議類型沒有具體的要求,具有很好的靈活性,是目前較為通用的IPv4/IPv6過渡技術(shù)。這種隧道技術(shù)只能應(yīng)用于端到端模式。而現(xiàn)有技術(shù)中,為解決IPv4網(wǎng)絡(luò)的IP地址資源短缺的問題,普遍采用了NAT(NetworkAddressTranslation,網(wǎng)絡(luò)地址翻譯)技術(shù)。具體而言,NAT是一種把內(nèi)部私有地址翻譯成外部公有地址的技術(shù),NAT用戶(NAT域內(nèi)的主機(jī))在網(wǎng)絡(luò)內(nèi)部采用私有地址進(jìn)行通信,并通過NAT共用一個(gè)或若干個(gè)公有地址與外部互聯(lián)網(wǎng)進(jìn)行通信。由于私有地址的非全球唯一性,外部互聯(lián)網(wǎng)的節(jié)點(diǎn)不能主動(dòng)訪問NAT用戶。并且,當(dāng)NAT用戶通過隧道技術(shù)接入IPv6網(wǎng)絡(luò)時(shí),由于NAT的存在,導(dǎo)致NAT用戶獲得的IPv6地址會(huì)隨時(shí)變化,從而破壞了IP網(wǎng)絡(luò)通信的端到端特性,使NAT域內(nèi)的用戶主機(jī)很難實(shí)現(xiàn)被動(dòng)通信。因此,目前需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問題就是如何能夠創(chuàng)新地提出一種穿越NAT的隧道過渡機(jī)制,用以使NAT域內(nèi)的用戶主機(jī)在通過隧道技術(shù)接入Ipv6網(wǎng)絡(luò)時(shí)仍能夠保持端到端的特性,能夠穿透所有典型類型的NAT設(shè)備,接入路由器和客戶端之間可以存在任意數(shù)量和任何類型的NAT。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種穿越NAT的隧道過渡方法及系統(tǒng),用以使NAT域內(nèi)的用戶主機(jī)在通過隧道技術(shù)接入Ipv6網(wǎng)絡(luò)時(shí)仍能夠保持端到端的特性,能夠穿透所有典型類型的NAT設(shè)備,接入路由器和客戶端之間可以存在任意數(shù)量和任何類型的NAT。為了解決上述技術(shù)問題,本發(fā)明實(shí)施例公開了一種穿越NAT的隧道過渡方法,包括NAT域內(nèi)的用戶主機(jī)根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;所述用戶主機(jī)連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);根據(jù)不同的NAT類型生成相應(yīng)的路由地址;所述隧道服務(wù)器將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;源主機(jī)和目標(biāo)主機(jī)通過隧道服務(wù)器,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通信。優(yōu)選的,所述NAT類型為對(duì)稱NAT,所述路由地址包括所述隧道服務(wù)器的地址信息、所述隧道服務(wù)器選擇的中繼器地址信息和所述用戶主機(jī)的外部端口和外部地址信息。優(yōu)選的,所述NAT類型為全錐形NAT或受限錐形NAT,所述路由地址包括所述隧道服務(wù)器的地址信息和所述用戶主機(jī)的外部端口和外部地址信息。優(yōu)選的,所述主機(jī)標(biāo)識(shí)地址包括16位的地址類型前綴、32位的隧道服務(wù)器地址、32位的地址屬性標(biāo)識(shí)和48位的MAC地址;所述路由地址包括16位的地址類型前綴、32位的隧道服務(wù)器地址、32位的中繼器地址和48位的用戶主機(jī)的外部端口和外部地址。優(yōu)選的,所述源主機(jī)和目標(biāo)主機(jī)通信的步驟進(jìn)一步包括源主機(jī)向目標(biāo)主機(jī)發(fā)起通信;依據(jù)目標(biāo)主機(jī)的主機(jī)標(biāo)識(shí)地址,判斷目標(biāo)主機(jī)的隧道服務(wù)器中是否存在對(duì)應(yīng)的路由地址,若有,則將所述路由地址返回給源主機(jī);否則,由所述目標(biāo)主機(jī)的隧道服務(wù)器通知該目標(biāo)主機(jī)生成相應(yīng)的路由地址,并將所述路由地址返回給源主機(jī);所述源主機(jī)依據(jù)所述路由地址與目標(biāo)主機(jī)進(jìn)行通信。優(yōu)選的,所述源主機(jī)為在全錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為全錐形NAT域內(nèi)的目標(biāo)主機(jī)。優(yōu)選的,所述源主機(jī)為在受限錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在受限錐形NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)與目標(biāo)主機(jī)通信的步驟還包括在NAT映射表中建立所述源主機(jī)與目標(biāo)主機(jī)的映射關(guān)系。優(yōu)選的,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在對(duì)稱NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)與目標(biāo)主機(jī)通信的步驟還包括源主機(jī)將IPv6分組數(shù)據(jù)封裝成IPv4分組數(shù)據(jù);所述IPv4分組數(shù)據(jù)經(jīng)由源主機(jī)的隧道服務(wù)器連接的第一中繼器,目標(biāo)主機(jī)的隧道服務(wù)器連接的第二中繼器,發(fā)送至目標(biāo)主機(jī)所在的NAT設(shè)備中;所述NAT設(shè)備將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)。優(yōu)選的,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在IPv6網(wǎng)絡(luò)中的目標(biāo)主機(jī),所述源主機(jī)與目標(biāo)主機(jī)通信的步驟包括源主機(jī)通過隧道服務(wù)器向目標(biāo)主機(jī)發(fā)送響應(yīng)請(qǐng)求報(bào)文;所述隧道服務(wù)器將所述響應(yīng)請(qǐng)求報(bào)文發(fā)送給目標(biāo)主機(jī);所述目標(biāo)主機(jī)向源主機(jī)應(yīng)答響應(yīng)回復(fù)報(bào)文,所述響應(yīng)回復(fù)報(bào)文被路由至與目標(biāo)主機(jī)最接近的第二中繼器;第二中繼器封裝所述響應(yīng)回復(fù)報(bào)文后,經(jīng)IPv4網(wǎng)絡(luò)端的第一中繼器和源主機(jī)的NAT設(shè)備發(fā)送至源主機(jī);所述源主機(jī)將封裝有IPv6數(shù)據(jù)包的IPv4數(shù)據(jù)包經(jīng)由所述第一中繼器發(fā)送至第二中繼器;所述第二中繼器解封裝所述IPv4數(shù)據(jù)包,獲得IPv6數(shù)據(jù)包,并將所述IPv6數(shù)據(jù)包發(fā)送至目標(biāo)主機(jī)。本發(fā)明實(shí)施例還公開了一種穿越NAT的隧道過渡系統(tǒng),包括NAT域內(nèi)的用戶主機(jī)和隧道服務(wù)器,其中,所述NAT域內(nèi)的用戶主機(jī)包括主機(jī)地址生成模塊,用于根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;NAT類型檢測(cè)模塊,用于連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);路由地址生成模塊,用于根據(jù)不同的NAT類型生成相應(yīng)的路由地址;所述隧道服務(wù)器包括狀態(tài)信息維護(hù)模塊,用于將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;源主機(jī)和目標(biāo)主機(jī)通過所述隧道服務(wù)器,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通{曰。優(yōu)選的,所述NAT類型為對(duì)稱NAT,所述路由地址包括所述隧道服務(wù)器的地址信息、所述隧道服務(wù)器選擇的中繼器地址信息和所述用戶主機(jī)的外部端口和外部地址信息。優(yōu)選的,所述NAT類型為全錐形NAT或受限錐形NAT,所述路由地址包括所述隧道服務(wù)器的地址信息和所述用戶主機(jī)的外部端口和外部地址信息。優(yōu)選的,所述源主機(jī)和目標(biāo)主機(jī)的通信通過以下模塊實(shí)現(xiàn)位于源主機(jī)的通信發(fā)起模塊,用于依據(jù)源主機(jī)的主機(jī)標(biāo)識(shí)地址和目標(biāo)主機(jī)的主機(jī)標(biāo)識(shí)地址,向目標(biāo)主機(jī)發(fā)起的通信請(qǐng)求;位于目標(biāo)主機(jī)隧道服務(wù)器的路由查找模塊,用于判斷目標(biāo)主機(jī)的隧道服務(wù)器中是否存在對(duì)應(yīng)的路由地址,若有,則執(zhí)行路由地址返回模塊;否則,執(zhí)行通知模塊;位于目標(biāo)主機(jī)隧道服務(wù)器的路由地址返回模塊,用于將所述路由地址返回給源主機(jī);位于目標(biāo)主機(jī)隧道服務(wù)器的通知模塊,用于向目標(biāo)主機(jī)發(fā)送生成路由地址的通知;位于目標(biāo)主機(jī)的路由地址生成模塊,用于根據(jù)所述通知生成相應(yīng)的路由地址,并觸發(fā)所述路由地址返回模塊;位于源主機(jī)的通信執(zhí)行模塊,用于依據(jù)從所述隧道服務(wù)器返回的路由地址與目標(biāo)主機(jī)進(jìn)行通信。優(yōu)選的,所述源主機(jī)為在全錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為全錐形NAT域內(nèi)的目標(biāo)主機(jī)。優(yōu)選的,所述源主機(jī)為在受限錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在受限錐形NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信實(shí)現(xiàn)還包括以下模塊位于所述源主機(jī)和目標(biāo)主機(jī)的NAT設(shè)備中的NAT映射模塊,用于在NAT映射表中建立所述源主機(jī)與目標(biāo)主機(jī)的映射關(guān)系。優(yōu)選的,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在對(duì)稱NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信實(shí)現(xiàn)還包括以下模塊位于源主機(jī)的封裝模塊,用于將IPv6分組數(shù)據(jù)封裝成IPv4分組數(shù)據(jù);位于源主機(jī)的第一發(fā)送模塊,用于依據(jù)源主機(jī)的路由地址,將所述IPv4分組數(shù)據(jù)發(fā)送至源主機(jī)的隧道服務(wù)器連接的第一中繼器;位于第一中繼器的第二發(fā)送模塊,用于依據(jù)目標(biāo)主機(jī)的路由地址,將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)的隧道服務(wù)器連接的第二中繼器;位于第二中繼器的第三發(fā)送模塊,用于將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)所在的NAT設(shè)備中;NAT設(shè)備,用于將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)。優(yōu)選的,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在IPv6網(wǎng)絡(luò)中的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信通過以下模塊實(shí)現(xiàn)位于源主機(jī)的報(bào)文請(qǐng)求模塊,用于通過隧道服務(wù)器向目標(biāo)主機(jī)發(fā)送響應(yīng)請(qǐng)求報(bào)文;位于隧道服務(wù)器的報(bào)文轉(zhuǎn)發(fā)模塊,用于將所述響應(yīng)請(qǐng)求報(bào)文發(fā)送給目標(biāo)主機(jī);位于目標(biāo)主機(jī)的報(bào)文應(yīng)答模塊,用于向源主機(jī)應(yīng)答響應(yīng)回復(fù)報(bào)文,并將所述響應(yīng)回復(fù)報(bào)文路由至與目標(biāo)主機(jī)最接近的第二中繼器;位于第二中繼器的封裝發(fā)送模塊,用于封裝所述響應(yīng)回復(fù)報(bào)文,并將所述封裝后的報(bào)文發(fā)送至IPv4網(wǎng)絡(luò)端的第一中繼器;位于第一中繼器的分組轉(zhuǎn)發(fā)模塊,用于將所述封裝后的報(bào)文轉(zhuǎn)發(fā)給源主機(jī)的NAT設(shè)備;源主機(jī)的NAT設(shè)備,用于將所述封裝后的報(bào)文轉(zhuǎn)發(fā)給源主機(jī);位于源主機(jī)的數(shù)據(jù)發(fā)送模塊,用于將封裝有IPv6數(shù)據(jù)包的IPv4數(shù)據(jù)包經(jīng)由所述第一中繼器發(fā)送至第二中繼器;位于第二中繼器的解包發(fā)送模塊,用于解封裝所述IPv4數(shù)據(jù)包,獲得IPv6數(shù)據(jù)包,并將所述IPv6數(shù)據(jù)包發(fā)送至目標(biāo)主機(jī)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明通過在NAT域內(nèi)的用戶主機(jī)分配一種特定格式的IPv6地址為該主機(jī)的主機(jī)標(biāo)識(shí)地址,這個(gè)地址該主機(jī)在互聯(lián)網(wǎng)上的唯一標(biāo)志,在以后所有通信中都是不會(huì)改變的。只有在真正開始通信時(shí),才采用解析生成可路由地址進(jìn)行,由于有這種固定的主機(jī)標(biāo)識(shí)地址的參與,NAT域內(nèi)的用戶主機(jī)在通過隧道技術(shù)接入Ipv6網(wǎng)絡(luò)時(shí)仍能夠保持端到端的特性,能夠穿透所有典型類型的NAT設(shè)備,接入路由器和客戶端之間可以存在任意數(shù)量和任何類型的NAT。圖1是本發(fā)明的一種穿越NAT的隧道過渡方法實(shí)施例的流程圖;圖2是位于受限錐形NAT域內(nèi)的源主機(jī)和目標(biāo)主機(jī)進(jìn)行通信的示意圖;圖3是位于對(duì)稱NAT域內(nèi)的源主機(jī)和目標(biāo)主機(jī)進(jìn)行通信的示意圖;圖4是位于對(duì)稱NAT域內(nèi)的源主機(jī)和目標(biāo)主機(jī)進(jìn)行通信的示意圖;圖5是本發(fā)明的一種穿越NAT的隧道過渡系統(tǒng)實(shí)施例的結(jié)構(gòu)圖。具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。由于TCP/IP協(xié)議中網(wǎng)絡(luò)層IP地址承擔(dān)雙重角色主機(jī)標(biāo)識(shí)符和路由定位符。這使得IP地址在主機(jī)移動(dòng)和多宿主情況下,不能像在固定主機(jī)那樣提供完美的服務(wù)。如果主機(jī)因?yàn)槟撤N原因而改變其IP地址時(shí),通信雙方無法在原始創(chuàng)建的網(wǎng)絡(luò)層通信鏈路上發(fā)送或接收數(shù)據(jù),從而造成通信中斷。造成這種問題的原因是由于目前的Internet體系結(jié)構(gòu)只有兩個(gè)命名空間IP地址和域名。正是由于本專利的發(fā)明人注意到了這一點(diǎn),因此,創(chuàng)新性的提出本發(fā)明實(shí)施例的核心構(gòu)思,即為在NAT域內(nèi)的用戶主機(jī)分配一種特定格式的IPv6地址為該主機(jī)的主機(jī)標(biāo)識(shí)地址,這個(gè)地址該主機(jī)在互聯(lián)網(wǎng)上的唯一標(biāo)志,在以后所有通信中都是不會(huì)改變的。只有在真正開始通信時(shí),才采用解析生成的可路由地址進(jìn)行,由于有這種固定的主機(jī)標(biāo)識(shí)地址的參與,NAT域內(nèi)的用戶主機(jī)在通過隧道技術(shù)接入Ipv6網(wǎng)絡(luò)時(shí)仍能夠保持端到端的特性,能夠穿透所有典型類型的NAT設(shè)備,接入路由器和客戶端之間可以存在任意數(shù)量和任何類型的NAT。參考圖1,示出了本發(fā)明的一種穿越NAT的隧道過渡方法實(shí)施例的流程圖,具體可以包括以下步驟步驟101、NAT域內(nèi)的用戶主機(jī)根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;在Ipv6網(wǎng)絡(luò)中,IP地址的長(zhǎng)度為128位。為形成可適用于Ipv6網(wǎng)絡(luò)的主機(jī)標(biāo)識(shí)地址,還可以在主機(jī)標(biāo)識(shí)地址中寫入標(biāo)識(shí)當(dāng)前地址類型的地址前綴和Flag標(biāo)識(shí)。優(yōu)選的,所述主機(jī)標(biāo)識(shí)地址可以由16位的地址前綴、32位的隧道服務(wù)器地址、32位的Flag標(biāo)識(shí)和48位的InterfaceID組成。具體格式可以參見下表<table>tableseeoriginaldocumentpage9</column></row><table>其中,所述地址前綴用來記錄地址類型信息,即當(dāng)前是主機(jī)標(biāo)識(shí)地址還是路由地址,所有主機(jī)標(biāo)識(shí)地址都采用相同的前綴;所述隧道服務(wù)器地址用來記錄作為隧道客戶端的NAT后用戶主機(jī)所選隧道服務(wù)器的IPv4地址信息;主機(jī)標(biāo)識(shí)地址的Flag標(biāo)識(shí)可以直接記錄為0;InterfaceID用來記錄48位的MAC(MediaAccessControl,介質(zhì)訪問控制)地址。步驟102、所述用戶主機(jī)連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);根據(jù)NAT建立和查找映射關(guān)系的規(guī)則不同,可將NAT分為全錐形、受限錐形、對(duì)稱三種類型。這三種NAT類型的工作原理分別為(1)全錐形NAT(FullConeNAT)根據(jù)客戶端的內(nèi)部地址和內(nèi)部端口建立映射關(guān)系,如下(內(nèi)部地址,內(nèi)部端口)<_>(外部地址,外部端口)NAT位于內(nèi)部網(wǎng)絡(luò)一側(cè)的接口收到數(shù)據(jù)包后,以(內(nèi)部地址、內(nèi)部端口)也就是客戶端的源地址和源端口為入口,從映射表中找到對(duì)應(yīng)的外部地址和外部端口,完成地址轉(zhuǎn)換后發(fā)送給外部網(wǎng)絡(luò)。NAT位于外部網(wǎng)絡(luò)一側(cè)的接口收到數(shù)據(jù)包后,以(外部地址、外部端口)也就是數(shù)據(jù)包的目的地址和目的端口為入口,從映射表中找到對(duì)應(yīng)的內(nèi)部地址和內(nèi)部端口,完成地址轉(zhuǎn)換后發(fā)送給內(nèi)部網(wǎng)絡(luò)。(2)受限錐形NAT(RestrictedConeNAT)根據(jù)客戶端的內(nèi)部地址和內(nèi)部端口建立映射關(guān)系,但映射關(guān)系還包含目的地址,如下(內(nèi)部地址,內(nèi)部端口)<_>(外部地址,外部端口,目的地)NAT位于內(nèi)部網(wǎng)絡(luò)一側(cè)的接口收到數(shù)據(jù)包后的操作和全錐形NAT相同。不同的是NAT收到外部網(wǎng)絡(luò)的數(shù)據(jù)包后,它以(外部地址、外部端口、目的地址)也就是數(shù)據(jù)包的目的地址、目的端口和源地址為入口查找映射關(guān)系。也就是說,只有客戶端曾經(jīng)向服務(wù)器A發(fā)送過數(shù)據(jù)包、NAT保存了A的地址,來自A的數(shù)據(jù)包才會(huì)被NAT轉(zhuǎn)換并發(fā)送給客戶端。對(duì)于全錐形NAT,不管客戶端有沒有向A發(fā)送過數(shù)據(jù)包,只要A發(fā)送給客戶端的數(shù)據(jù)包目的地址和目的端口和映射關(guān)系中的(外部地址、外部端口)一致,NAT就會(huì)對(duì)這個(gè)數(shù)據(jù)包進(jìn)行轉(zhuǎn)換并發(fā)給客戶端。(3)對(duì)稱NAT(SymmetricNAT)對(duì)稱NAT建立如下映射關(guān)系(內(nèi)部地址,內(nèi)部端口,目的地址,目的端口)<_>(外部地址,外部端口)(內(nèi)部地址,內(nèi)部端口,目的地址)<_>(外部地址,外部端口)全錐形NAT和受限錐形NAT只根據(jù)內(nèi)部地址和內(nèi)部端口建立映射關(guān)系,所以(內(nèi)部地址,內(nèi)部端口)和(外部地址,外部端口)之間的映射關(guān)系是一一對(duì)應(yīng)的。對(duì)稱NAT根據(jù)目的地址或目的端口的不同將內(nèi)部地址和內(nèi)部端口映射成不同的外部地址和外部端口,所以(內(nèi)部地址,內(nèi)部端口)和(外部地址,外部端口)之間的映射關(guān)系是一對(duì)多的關(guān)系。本步驟的處理是在隧道服務(wù)器的協(xié)助下進(jìn)行的。假設(shè)隧道服務(wù)器綁定兩個(gè)公網(wǎng)IPv4地址IPAddr-I和IPAddr_2。隧道服務(wù)器啟動(dòng)兩個(gè)線程分別對(duì)(IPAddr-I,Port-I)禾口(IPAddr-2,Port-2)進(jìn)行UDP監(jiān)聽,并根據(jù)隧道客戶端的要求進(jìn)行應(yīng)答,一種NAT類型自動(dòng)檢測(cè)算法的示例如下①隧道客戶端建立UDPSocket,并啟動(dòng)一個(gè)接收線程接收隧道服務(wù)器發(fā)送給該端口的數(shù)據(jù),然后用這個(gè)Socket向隧道服務(wù)器的(IPAddr-Ι,Port-Ι)發(fā)送三個(gè)相同的UDP數(shù)據(jù)包,要求隧道服務(wù)器返回服務(wù)器實(shí)際看到的客戶端的IP地址和端口號(hào)。②發(fā)送完數(shù)據(jù)后,接收線程開始接收隧道服務(wù)器的響應(yīng),如果在1秒內(nèi),沒有接收到隧道服務(wù)器的回應(yīng),則說明客戶端無法進(jìn)行IPv6-in-UDP通信,可能是防火墻或NAT阻止IPv6-in-UDP通信,這樣的客戶端也就不能建立IPv6-in-UDP隧道,檢測(cè)停止;③接收線程收到隧道服務(wù)器的回應(yīng)時(shí),提取響應(yīng)分組中的隧道服務(wù)器實(shí)際看到的客戶端用于通信的IP地址和端口號(hào)Port,用(PubIPAddr-I,PubPORT-I)標(biāo)識(shí),并與客戶端正在使用Socket實(shí)際綁定的IP地址和端口號(hào)(LocIPAddr,LocP0RT)進(jìn)行比較。如果完全相同,則隧道客戶端不在NAT后,該隧道客戶具有公網(wǎng)IP地址,可以直接進(jìn)行IPv6-in-IPv4隧道通信,不需要建立IPv6-in-UDP隧道,檢測(cè)停止;否則客戶端在NAT后,要做進(jìn)一步的NAT類型檢測(cè)。④隧道客戶端用①建立的Socket向隧道服務(wù)器(IPAddr-1,Port-1)發(fā)送三個(gè)相同的數(shù)據(jù)包,要求隧道服務(wù)器用(IPAddr-2,Port-2)響應(yīng)客戶端的請(qǐng)求。客戶端發(fā)送請(qǐng)求后并通知接收線程進(jìn)行接收,如果在1秒鐘內(nèi)沒有收到服務(wù)器的響應(yīng),則說明客戶端的所在的NAT不是一個(gè)全錐形NAT,具體類型有待下一步檢測(cè)。如果能夠接收到隧道服務(wù)器從(IPAddr-2,Port-2)返回的應(yīng)答UDP包,則說明客戶端的NAT是一個(gè)全錐形NAT,檢測(cè)停止;⑤客戶端新建一個(gè)UDPSocket,并向隧道服務(wù)器的(IPAddr_2,Port-2)發(fā)送三個(gè)相同的數(shù)據(jù)包,要求隧道服務(wù)器返回客戶端的IP地址和端口號(hào),并啟動(dòng)接收線程進(jìn)行接收數(shù)據(jù),由②可知,接收線程肯定收到隧道服務(wù)器的響應(yīng),提取響應(yīng)分組中的隧道服務(wù)器實(shí)際看到的客戶端的IP地址和端口號(hào)Port,用(PubIPAddr-2,PubP0RT-2)標(biāo)識(shí),比較(PubIPAddr-I,PubPORT-I)和(PubIPAddr-2,PubP0RT-2)。如果不相同,則說明客戶端所在的NAT為對(duì)稱型NAT,檢測(cè)停止;否則是受限錐形NAT;在實(shí)際中,還可以進(jìn)一步檢測(cè)是否為端口受限錐形NAT(PortRestrictedConeNAT)。⑥客戶端利用①建立的Socket,向服務(wù)器的(IPAddr-I,Port-Ι)發(fā)送三個(gè)相同的數(shù)據(jù)包要求服務(wù)器用綁定IPAddr-I和一個(gè)不同于Port-I的端口發(fā)的Socket向客戶端口發(fā)送響應(yīng)??蛻舳税l(fā)送請(qǐng)求后并通知線程接收響應(yīng),如果在1秒時(shí)間內(nèi)沒有接收到響應(yīng),則說明客戶端NAT是端口受限錐形NAT,如果能夠收到服務(wù)器的響應(yīng)則說明客戶端NAT是受限錐形NAT。當(dāng)然,上述方法僅僅用作示例,在實(shí)際中,本領(lǐng)域技術(shù)人員采用任一種NAT類型檢測(cè)方法都是可行的,本發(fā)明對(duì)此不作限制。步驟103、根據(jù)不同的NAT類型生成相應(yīng)的路由地址;例如,若所述NAT類型為對(duì)稱NAT時(shí),所述用戶主機(jī)向隧道服務(wù)器請(qǐng)求獲得中繼器地址,隧道服務(wù)器根據(jù)負(fù)載均衡算法選擇相應(yīng)的中繼地址返回給當(dāng)前用戶主機(jī),并通過中繼器獲取所述用戶主機(jī)的外部端口(PORT)和外部地址信息(IP地址),由所述隧道服務(wù)器的地址信息、中繼器地址信息和當(dāng)前用戶主機(jī)的外部端口和外部地址信息,即可形成相應(yīng)的路由地址。若所述NAT類型為非對(duì)稱NAT,則用戶主機(jī)可以通過隧道服務(wù)器返回的外部端口(PORT)和外部地址信息(IP地址),由所述隧道服務(wù)器的地址信息和當(dāng)前用戶主機(jī)的外部端口和外部地址信息,形成相應(yīng)的路由地址。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述路由地址可以包括16位的地址前綴、32位的隧道服務(wù)器地址、32位的中繼器地址、16位的外部端口Port和32位外部IPv4地址字段。具體格式可以參見下表<table>tableseeoriginaldocumentpage11</column></row><table>其中,所述地址前綴用來記錄地址類型信息,即當(dāng)前是主機(jī)標(biāo)識(shí)地址還是路由地址,所有路由地址都采用相同的前綴;所述隧道服務(wù)器地址用來記錄作為隧道客戶端的NAT后用戶主機(jī)所選隧道服務(wù)器的IPv4地址信息;所述中繼器地址用來記錄實(shí)際的中繼器地址,可以填入主機(jī)標(biāo)識(shí)地址中Flag的位置;如果沒有中繼器地址則可以將這32位全部置1;所述外部端口和外部IPv4地址可以在NAT類型檢測(cè)過程中獲得,可以填入主機(jī)標(biāo)識(shí)地址中InterfaceID的位置。對(duì)于不是NAT用戶的情況,可以實(shí)際的IP地址填入主機(jī)標(biāo)識(shí)地址的InterfaceID中后32位,中繼地址置1;PORT置零。步驟104、所述隧道服務(wù)器將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;例如,用戶主機(jī)首先建立UDPSocket,向隧道服務(wù)器固定端口的Socket發(fā)送隧道接入請(qǐng)求服務(wù),服務(wù)器接受到請(qǐng)求消息對(duì)其身份進(jìn)行認(rèn)證,并向當(dāng)前主機(jī)發(fā)送允許接收消息。通過認(rèn)證后,所述用戶主機(jī)把檢測(cè)獲得的NAT類型、該Socket實(shí)際綁定的私有地址和端口、及其主機(jī)標(biāo)識(shí)地址發(fā)送給隧道服務(wù)器;隧道服務(wù)器收到后,利用這些信息為該用戶主機(jī)建立相應(yīng)的狀態(tài)信息表。一種優(yōu)選的實(shí)現(xiàn)為,還可以在用戶主機(jī)設(shè)置Timer,以一定的間隔(缺省值為30s)向隧道服務(wù)器發(fā)送心跳包,隧道服務(wù)器收到心跳包后不作任何處理。用戶主機(jī)發(fā)送心跳包的目的是為了刷新NAT映射表中內(nèi)部地址、內(nèi)部端口和外部地址、外部端口的映射關(guān)系。因?yàn)镹AT會(huì)刪除長(zhǎng)時(shí)間沒有數(shù)據(jù)流的映射關(guān)系,一旦映射關(guān)系不存在,客戶與隧道服務(wù)器建立的虛擬鏈路將不再有效。在這種情況下,所述隧道服務(wù)器還可以利用上述用戶主機(jī)維護(hù)虛擬鏈路的過程來維護(hù)所述狀態(tài)信息表。隧道服務(wù)器也為注冊(cè)用戶主機(jī)設(shè)置一個(gè)Timer,隧道服務(wù)器收到該用戶主機(jī)的數(shù)據(jù)分組后,刷新定時(shí)器。如果長(zhǎng)時(shí)間收不到來自該用戶主機(jī)的數(shù)據(jù),則定時(shí)器會(huì)超時(shí),一旦超時(shí),服務(wù)器認(rèn)為用戶主機(jī)不再需要該虛擬鏈路,將刪除該用戶主機(jī)相關(guān)的映射關(guān)系。作為本發(fā)明的一種優(yōu)選實(shí)施例,所述隧道服務(wù)器維護(hù)的狀態(tài)信息表項(xiàng)可以包括內(nèi)部地址、內(nèi)部端口、外部地址、外部端口、主機(jī)標(biāo)識(shí)地址、路由地址和NAT類型字段。步驟105、源主機(jī)和目標(biāo)主機(jī)通過隧道服務(wù)器,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通信。作為本發(fā)明的一種優(yōu)選實(shí)施例,本步驟可以進(jìn)一步包括以下子步驟子步驟Al、源主機(jī)向目標(biāo)主機(jī)發(fā)起通信;子步驟A2、依據(jù)目標(biāo)主機(jī)的主機(jī)標(biāo)識(shí)地址,判斷目標(biāo)主機(jī)的隧道服務(wù)器中是否存在對(duì)應(yīng)的路由地址,若有,則執(zhí)行子步驟A3;否則執(zhí)行子步驟A4;子步驟A3、將所述路由地址返回給源主機(jī);子步驟A4、由所述目標(biāo)主機(jī)的隧道服務(wù)器通知目標(biāo)主機(jī)生成相應(yīng)的路由地址,并將所述路由地址返回給源主機(jī);子步驟A5、所述源主機(jī)依據(jù)所述路由地址與目標(biāo)主機(jī)進(jìn)行通信。為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下通過幾種端到端通信的具體實(shí)例進(jìn)一步說明本發(fā)明。一、源主機(jī)和目標(biāo)主機(jī)都位于全錐形NAT域內(nèi)在此種情況下,因?yàn)槿F形NAT不會(huì)對(duì)來自外部互聯(lián)網(wǎng)的數(shù)據(jù)包加以限制,所以通信過程十分簡(jiǎn)單,源主機(jī)可以直接向目標(biāo)主機(jī)發(fā)送數(shù)據(jù)包。二、源主機(jī)和目標(biāo)主機(jī)都位于受限錐形NAT域內(nèi)因?yàn)槭芟掊F形NAT對(duì)來自外部互聯(lián)網(wǎng)的數(shù)據(jù)包源地址有所限制,所以在源主機(jī)和目標(biāo)主機(jī)之間必須通過空包交換以便在NAT映射表中創(chuàng)建相應(yīng)的映射關(guān)系后才能互相通信。因而,在這種情況下,所述源主機(jī)與目標(biāo)主機(jī)通信的步驟還可以包括子步驟在NAT映射表中建立所述源主機(jī)與目標(biāo)主機(jī)的映射關(guān)系,基于所述映射關(guān)系,所述源主機(jī)才能依據(jù)所述路由地址與目標(biāo)主機(jī)進(jìn)行通信。具體可以參考圖2所示的位于受限錐形NAT域內(nèi)的源主機(jī)和目標(biāo)主機(jī)進(jìn)行通信的示意圖,假設(shè)源主機(jī)21需要經(jīng)IPv4網(wǎng)絡(luò)23向目標(biāo)主機(jī)22發(fā)送數(shù)據(jù)包,其中,源主機(jī)21位于第一NAT設(shè)備211后,第一NAT設(shè)備211接入第一IPv4內(nèi)網(wǎng)212內(nèi),第一IPv4內(nèi)網(wǎng)212中設(shè)置有第一隧道服務(wù)器213;目標(biāo)主機(jī)22位于第二NAT設(shè)備221后,第二NAT設(shè)備221接入第二IPv4內(nèi)網(wǎng)222內(nèi),第二IPv4內(nèi)網(wǎng)222中設(shè)置有第二隧道服務(wù)器223;其具體通信過程可以為(1)源主機(jī)21向目標(biāo)主機(jī)22發(fā)送一個(gè)空包,這時(shí)目標(biāo)主機(jī)22所在的受限錐形NAT沒有目的地址為源主機(jī)21的映射關(guān)系,所以不允許轉(zhuǎn)發(fā)來自該源主機(jī)21的數(shù)據(jù)包。所述源主機(jī)21所在的受限錐形NAT因?yàn)檗D(zhuǎn)發(fā)過源主機(jī)21到目標(biāo)主機(jī)22的空包,創(chuàng)建了目的地址為目標(biāo)主機(jī)22的映射關(guān)系,所以在接下來的通信中允許轉(zhuǎn)發(fā)來自目標(biāo)主機(jī)22的數(shù)據(jù)包。(2)源主機(jī)21向目標(biāo)主機(jī)22的第二隧道服務(wù)器223發(fā)送消息,IPv4目的地址為該第二隧道服務(wù)器223的地址(源主機(jī)21從目標(biāo)主機(jī)22的地址中獲得該地址)。(3)第二隧道服務(wù)器223收到該消息后,根據(jù)IPv6目的地址轉(zhuǎn)發(fā)給目標(biāo)主機(jī)22,因?yàn)槟繕?biāo)主機(jī)22所在第二NAT設(shè)備221中存在目的地址為第二隧道服務(wù)器223的映射關(guān)系,所以允許轉(zhuǎn)發(fā)來自第二隧道服務(wù)器223的數(shù)據(jù)包。(4)目標(biāo)主機(jī)22收到該消息后向源主機(jī)21發(fā)送一個(gè)空包,因?yàn)樵粗鳈C(jī)21所在第一NAT設(shè)備211中已經(jīng)創(chuàng)建了一個(gè)目的地址為目標(biāo)主機(jī)22的映射關(guān)系,所以允許轉(zhuǎn)發(fā)來自目標(biāo)主機(jī)22的數(shù)據(jù)包。同時(shí)目標(biāo)主機(jī)22所在第二NAT設(shè)備221中因?yàn)檗D(zhuǎn)發(fā)過目的地址為源主機(jī)21的數(shù)據(jù)包,創(chuàng)建了目的地址為源主機(jī)21的映射關(guān)系,所以在接下來的通信中允許轉(zhuǎn)發(fā)來自源主機(jī)21的數(shù)據(jù)包。(5)源主機(jī)21收到來自目標(biāo)主機(jī)22的空包后,兩個(gè)受限錐形NAT設(shè)備211和221都創(chuàng)建了源主機(jī)21和目標(biāo)主機(jī)22通信所需的映射關(guān)系。接下來源主機(jī)21就可以直接向目標(biāo)主機(jī)22發(fā)送數(shù)據(jù)包。三、源主機(jī)和目標(biāo)主機(jī)都位于對(duì)稱NAT域內(nèi)在這種情況下,所述源主機(jī)與目標(biāo)主機(jī)通信的步驟還可以包括以下子步驟子步驟Bi、源主機(jī)將IPv6分組數(shù)據(jù)封裝成IPv4分組數(shù)據(jù);子步驟B2、所述IPv4分組數(shù)據(jù)經(jīng)由源主機(jī)的隧道服務(wù)器連接的第一中繼器,目標(biāo)主機(jī)的隧道服務(wù)器連接的第二中繼器,發(fā)送至目標(biāo)主機(jī)所在的NAT設(shè)備中;子步驟B3、所述NAT設(shè)備將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)。具體可以參考圖3所示的位于對(duì)稱NAT域內(nèi)的源主機(jī)和目標(biāo)主機(jī)進(jìn)行通信的示意圖,假設(shè)源主機(jī)31需要經(jīng)IPv4網(wǎng)絡(luò)33向目標(biāo)主機(jī)32發(fā)送數(shù)據(jù)包,其中,源主機(jī)31位于第一NAT設(shè)備311后,第一NAT設(shè)備311接入第一IPv4內(nèi)網(wǎng)312內(nèi),第一IPv4內(nèi)網(wǎng)312中設(shè)置有第一隧道服務(wù)器313和第一中繼器314;目標(biāo)主機(jī)32位于第二NAT設(shè)備321后,第二NAT設(shè)備321接入第二IPv4內(nèi)網(wǎng)322內(nèi),第二IPv4內(nèi)網(wǎng)322中設(shè)置有第二隧道服務(wù)器323和第二中繼器324;其具體通信過程可以為(1)源主機(jī)31的IPv6分組數(shù)據(jù)經(jīng)過接口封裝成IPv4分組數(shù)據(jù),目的IPv4地址為源IPv6地址(源主機(jī)的路由地址)中的中繼器地址字段所示的第一中繼器314地址,所述IPv4分組數(shù)據(jù)被發(fā)送到所述第一中繼器314中。(2)所述第一中繼器314從該分組數(shù)據(jù)的目的IPv6地址(目標(biāo)主機(jī)的路由地址)的中繼器地址字段,獲取第二中繼器324的IPv4地址,然后把該IPv4分組數(shù)據(jù)的目的IPv4地址修改成該第二中繼器324的IPv4的地址,并將該IPv4分組數(shù)據(jù)經(jīng)過IPv4網(wǎng)絡(luò)33發(fā)送到第二中繼器324中。(3)所述第二中繼器324從該分組數(shù)據(jù)的目的IPv6地址中,獲取NAT映射的外部地址信息和端口信息(IPv4地址和PORT),發(fā)送到目標(biāo)主機(jī)32所在的第二NAT設(shè)備321中,由第二NAT設(shè)備321經(jīng)過映射把該IPv4分組數(shù)據(jù)發(fā)送給目標(biāo)主機(jī)32。四、源主機(jī)位于對(duì)稱NAT域后,目標(biāo)主機(jī)為在IPv6網(wǎng)絡(luò)中的純IPv6主機(jī)作為本發(fā)明的另一實(shí)施例,在這種情況下,隧道接口可以采用ICMPv6請(qǐng)求和ICMPv6回復(fù)來代替鄰居發(fā)現(xiàn)的地址解析過程。向純IPv6主機(jī)發(fā)送數(shù)據(jù)包之前,客戶端需要確定離該IPv6主機(jī)最近的中繼器的IPv4地址和UDP端口。因而在本例中,所述源主機(jī)與目標(biāo)主機(jī)通信的步驟105可以包括以下子步驟子步驟Cl、源主機(jī)通過隧道服務(wù)器向目標(biāo)主機(jī)發(fā)送響應(yīng)請(qǐng)求報(bào)文;子步驟C2、所述隧道服務(wù)器將所述響應(yīng)請(qǐng)求報(bào)文發(fā)送給目標(biāo)主機(jī);子步驟C3、所述目標(biāo)主機(jī)向源主機(jī)應(yīng)答響應(yīng)回復(fù)報(bào)文,所述響應(yīng)回復(fù)報(bào)文被路由至與目標(biāo)主機(jī)最接近的第二中繼器;子步驟C4、第二中繼器封裝所述響應(yīng)回復(fù)報(bào)文后,經(jīng)IPv4網(wǎng)絡(luò)端的第一中繼器和源主機(jī)的NAT設(shè)備發(fā)送至源主機(jī);子步驟C5、所述源主機(jī)將封裝有IPv6數(shù)據(jù)包的IPv4數(shù)據(jù)包經(jīng)由所述第一中繼器發(fā)送至第二中繼器;子步驟C6、所述第二中繼器解封裝所述IPv4數(shù)據(jù)包,獲得IPv6數(shù)據(jù)包,并將所述IPv6數(shù)據(jù)包發(fā)送至目標(biāo)主機(jī)。具體可以參考圖4所示的位于對(duì)稱NAT域內(nèi)的源主機(jī)和目標(biāo)主機(jī)進(jìn)行通信的示意圖,假設(shè)源主機(jī)41向目標(biāo)主機(jī)48發(fā)送數(shù)據(jù)包,其中,源主機(jī)41位于NAT設(shè)備42后,NAT設(shè)備42接入IPv4網(wǎng)絡(luò)43,IPv4網(wǎng)絡(luò)43中設(shè)置有隧道服務(wù)器44和第一中繼器45;該隧道服務(wù)器44和第一中繼器45同時(shí)接入IPv6網(wǎng)絡(luò)46中,IPv6網(wǎng)絡(luò)46中還設(shè)置有第二中繼器47,目標(biāo)主機(jī)48位于所述IPv6網(wǎng)絡(luò)46中;其具體通信過程可以為(1)源主機(jī)41首先通過隧道服務(wù)器44向目標(biāo)主機(jī)48發(fā)送ICMPv6響應(yīng)請(qǐng)求報(bào)文。(2)隧道服務(wù)器44收到響應(yīng)請(qǐng)求報(bào)文后,轉(zhuǎn)發(fā)給目標(biāo)主機(jī)48。(3)目標(biāo)主機(jī)48收到ICMPv6響應(yīng)請(qǐng)求后,向源主機(jī)41發(fā)送ICMPv6響應(yīng)回復(fù)報(bào)文作為應(yīng)答。因?yàn)镮Pv6互聯(lián)網(wǎng)路由體系中3FFE::/16路由指向離目標(biāo)主機(jī)最近的中繼器,所以響應(yīng)回復(fù)報(bào)文最終會(huì)被路由至第二中繼器47。(4)第二中繼器47將響應(yīng)回復(fù)報(bào)文用UDP頭部和IPv4頭部封裝后,發(fā)送到第一中繼器45,所述第一中繼器45把分組轉(zhuǎn)發(fā)給NAT設(shè)備42,由所述NAT設(shè)備42根據(jù)映射關(guān)系把分組轉(zhuǎn)發(fā)給源主機(jī)41。(5)源主機(jī)41從響應(yīng)回復(fù)報(bào)文中獲得離目標(biāo)主機(jī)48最近的第二中繼器47的IPv4地址和UDP端口,通過第一中繼器45到第二中繼器47之間的隧道發(fā)給第二中繼器47。(6)第二中繼器47收到源主機(jī)41的數(shù)據(jù)包后解封裝,即去掉IPv4頭部和UDP頭部,得到一個(gè)IPv6數(shù)據(jù)包,然后轉(zhuǎn)發(fā)給目標(biāo)主機(jī)48。需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。參考圖5,示出了本發(fā)明的一種穿越NAT的隧道過渡系統(tǒng)實(shí)施例的結(jié)構(gòu)圖,具體可以包括NAT域內(nèi)的用戶主機(jī)51和隧道服務(wù)器52,其中,所述NAT域內(nèi)的用戶主機(jī)51可以包括以下模塊主機(jī)地址生成模塊511,用于根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;NAT類型檢測(cè)模塊512,用于連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);路由地址生成模塊513,用于根據(jù)不同的NAT類型生成相應(yīng)的路由地址;所述隧道服務(wù)器52可以包括以下模塊狀態(tài)信息維護(hù)模塊521,用于將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;在進(jìn)行源主機(jī)和目標(biāo)主機(jī)的通信時(shí),所述源主機(jī)和目標(biāo)主機(jī)通過所述隧道服務(wù)器52,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通信。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述NAT類型可以為對(duì)稱NAT,在這種情況下,所述路由地址可以包括所述隧道服務(wù)器的地址信息、所述隧道服務(wù)器選擇的中繼器地址信息和所述用戶主機(jī)的外部端口和外部地址信息。所述NAT類型還可以為全錐形NAT或受限錐形NAT,在這種情況下,所述路由地址可以包括所述隧道服務(wù)器的地址信息和所述用戶主機(jī)的外部端口和外部地址信息。在本發(fā)明實(shí)施例中,優(yōu)選的是,所述源主機(jī)和目標(biāo)主機(jī)的通信可以通過以下模塊實(shí)現(xiàn)位于源主機(jī)的通信發(fā)起模塊,用于依據(jù)源主機(jī)的主機(jī)標(biāo)識(shí)地址和目標(biāo)主機(jī)的主機(jī)標(biāo)識(shí)地址,向目標(biāo)主機(jī)發(fā)起的通信請(qǐng)求;位于目標(biāo)主機(jī)隧道服務(wù)器的路由查找模塊,用于判斷目標(biāo)主機(jī)的隧道服務(wù)器中是否存在對(duì)應(yīng)的路由地址,若有,則執(zhí)行路由地址返回模塊;否則,執(zhí)行通知模塊;位于目標(biāo)主機(jī)隧道服務(wù)器的路由地址返回模塊,用于將所述路由地址返回給源主機(jī);位于目標(biāo)主機(jī)隧道服務(wù)器的通知模塊,用于向目標(biāo)主機(jī)發(fā)送生成路由地址的通知;位于目標(biāo)主機(jī)的路由地址生成模塊,用于根據(jù)所述通知生成相應(yīng)的路由地址,并觸發(fā)所述路由地址返回模塊;位于源主機(jī)的通信執(zhí)行模塊,用于依據(jù)從所述隧道服務(wù)器返回的路由地址與目標(biāo)主機(jī)進(jìn)行通信。在實(shí)際中的一種情形為,所述源主機(jī)為在全錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為全錐形NAT域內(nèi)的目標(biāo)主機(jī)。在實(shí)際中的另一種情形為,所述源主機(jī)為在受限錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在受限錐形NAT域內(nèi)的目標(biāo)主機(jī),在這種情況下,所述源主機(jī)和目標(biāo)主機(jī)的通信實(shí)現(xiàn)還可以包括以下模塊位于所述源主機(jī)和目標(biāo)主機(jī)的NAT設(shè)備中的NAT映射模塊,用于在NAT映射表中建立所述源主機(jī)與目標(biāo)主機(jī)的映射關(guān)系。在實(shí)際中的又一種情形為,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在對(duì)稱NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信實(shí)現(xiàn)還可以包括以下模塊位于源主機(jī)的封裝模塊,用于將IPv6分組數(shù)據(jù)封裝成IPv4分組數(shù)據(jù);位于源主機(jī)的第一發(fā)送模塊,用于依據(jù)源主機(jī)的路由地址,將所述IPv4分組數(shù)據(jù)發(fā)送至源主機(jī)的隧道服務(wù)器連接的第一中繼器;位于第一中繼器的第二發(fā)送模塊,用于依據(jù)目標(biāo)主機(jī)的路由地址,將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)的隧道服務(wù)器連接的第二中繼器;位于第二中繼器的第三發(fā)送模塊,用于將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)所在的NAT設(shè)備中;NAT設(shè)備,用于將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)。作為本發(fā)明的另一實(shí)施例,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在IPv6網(wǎng)絡(luò)中的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信可以通過以下模塊實(shí)現(xiàn)位于源主機(jī)的報(bào)文請(qǐng)求模塊,用于通過隧道服務(wù)器向目標(biāo)主機(jī)發(fā)送響應(yīng)請(qǐng)求報(bào)文;位于隧道服務(wù)器的報(bào)文轉(zhuǎn)發(fā)模塊,用于將所述響應(yīng)請(qǐng)求報(bào)文發(fā)送給目標(biāo)主機(jī);位于目標(biāo)主機(jī)的報(bào)文應(yīng)答模塊,用于向源主機(jī)應(yīng)答響應(yīng)回復(fù)報(bào)文,并將所述響應(yīng)回復(fù)報(bào)文路由至與目標(biāo)主機(jī)最接近的第二中繼器;位于第二中繼器的封裝發(fā)送模塊,用于封裝所述響應(yīng)回復(fù)報(bào)文,并將所述封裝后的報(bào)文發(fā)送至IPv4網(wǎng)絡(luò)端的第一中繼器;位于第一中繼器的分組轉(zhuǎn)發(fā)模塊,用于將所述封裝后的報(bào)文轉(zhuǎn)發(fā)給源主機(jī)的NAT設(shè)備;源主機(jī)的NAT設(shè)備,用于將所述封裝后的報(bào)文轉(zhuǎn)發(fā)給源主機(jī);位于源主機(jī)的數(shù)據(jù)發(fā)送模塊,用于將封裝有IPv6數(shù)據(jù)包的IPv4數(shù)據(jù)包經(jīng)由所述第一中繼器發(fā)送至第二中繼器;位于第二中繼器的解包發(fā)送模塊,用于解封裝所述IPv4數(shù)據(jù)包,獲得IPv6數(shù)據(jù)包,并將所述IPv6數(shù)據(jù)包發(fā)送至目標(biāo)主機(jī)。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、裝置或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、裝置或者系統(tǒng)所固有的要素。以上對(duì)本發(fā)明所提供的一種穿越NAT的隧道過渡方法,以及一種穿越NAT的隧道過渡系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。權(quán)利要求一種穿越NAT的隧道過渡方法,其特征在于,包括NAT域內(nèi)的用戶主機(jī)根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;所述用戶主機(jī)連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);根據(jù)不同的NAT類型生成相應(yīng)的路由地址;所述隧道服務(wù)器將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;源主機(jī)和目標(biāo)主機(jī)通過隧道服務(wù)器,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通信。2.如權(quán)利要求1所述的方法,其特征在于,所述NAT類型為對(duì)稱NAT,所述路由地址包括所述隧道服務(wù)器的地址信息、所述隧道服務(wù)器選擇的中繼器地址信息和所述用戶主機(jī)的外部端口和外部地址信息。3.如權(quán)利要求1所述的方法,其特征在于,所述NAT類型為全錐形NAT或受限錐形NAT,所述路由地址包括所述隧道服務(wù)器的地址信息和所述用戶主機(jī)的外部端口和外部地址信息。4.如權(quán)利要求1、2或3所述的方法,其特征在于,所述主機(jī)標(biāo)識(shí)地址包括16位的地址類型前綴、32位的隧道服務(wù)器地址、32位的地址屬性標(biāo)識(shí)和48位的MAC地址;所述路由地址包括16位的地址類型前綴、32位的隧道服務(wù)器地址、32位的中繼器地址和48位的用戶主機(jī)的外部端口和外部地址。5.如權(quán)利要求1所述的方法,其特征在于,所述源主機(jī)和目標(biāo)主機(jī)通信的步驟進(jìn)一步包括源主機(jī)向目標(biāo)主機(jī)發(fā)起通信;依據(jù)目標(biāo)主機(jī)的主機(jī)標(biāo)識(shí)地址,判斷目標(biāo)主機(jī)的隧道服務(wù)器中是否存在對(duì)應(yīng)的路由地址,若有,則將所述路由地址返回給源主機(jī);否則,由所述目標(biāo)主機(jī)的隧道服務(wù)器通知該目標(biāo)主機(jī)生成相應(yīng)的路由地址,并將所述路由地址返回給源主機(jī);所述源主機(jī)依據(jù)所述路由地址與目標(biāo)主機(jī)進(jìn)行通信。6.如權(quán)利要求5所述的方法,其特征在于,所述源主機(jī)為在全錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為全錐形NAT域內(nèi)的目標(biāo)主機(jī)。7.如權(quán)利要求5所述的方法,其特征在于,所述源主機(jī)為在受限錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在受限錐形NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)與目標(biāo)主機(jī)通信的步驟還包括在NAT映射表中建立所述源主機(jī)與目標(biāo)主機(jī)的映射關(guān)系。8.如權(quán)利要求5所述的方法,其特征在于,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在對(duì)稱NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)與目標(biāo)主機(jī)通信的步驟還包括源主機(jī)將IPv6分組數(shù)據(jù)封裝成IPv4分組數(shù)據(jù);所述IPv4分組數(shù)據(jù)經(jīng)由源主機(jī)的隧道服務(wù)器連接的第一中繼器,目標(biāo)主機(jī)的隧道服務(wù)器連接的第二中繼器,發(fā)送至目標(biāo)主機(jī)所在的NAT設(shè)備中;所述NAT設(shè)備將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)。9.如權(quán)利要求1所述的方法,其特征在于,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在IPv6網(wǎng)絡(luò)中的目標(biāo)主機(jī),所述源主機(jī)與目標(biāo)主機(jī)通信的步驟包括源主機(jī)通過隧道服務(wù)器向目標(biāo)主機(jī)發(fā)送響應(yīng)請(qǐng)求報(bào)文;所述隧道服務(wù)器將所述響應(yīng)請(qǐng)求報(bào)文發(fā)送給目標(biāo)主機(jī);所述目標(biāo)主機(jī)向源主機(jī)應(yīng)答響應(yīng)回復(fù)報(bào)文,所述響應(yīng)回復(fù)報(bào)文被路由至與目標(biāo)主機(jī)最接近的第二中繼器;第二中繼器封裝所述響應(yīng)回復(fù)報(bào)文后,經(jīng)IPv4網(wǎng)絡(luò)端的第一中繼器和源主機(jī)的NAT設(shè)備發(fā)送至源主機(jī);所述源主機(jī)將封裝有IPv6數(shù)據(jù)包的IPv4數(shù)據(jù)包經(jīng)由所述第一中繼器發(fā)送至第二中繼器;所述第二中繼器解封裝所述IPv4數(shù)據(jù)包,獲得IPv6數(shù)據(jù)包,并將所述IPv6數(shù)據(jù)包發(fā)送至目標(biāo)主機(jī)。10.一種穿越NAT的隧道過渡系統(tǒng),其特征在于,包括NAT域內(nèi)的用戶主機(jī)和隧道服務(wù)器,其中,所述NAT域內(nèi)的用戶主機(jī)包括主機(jī)地址生成模塊,用于根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;NAT類型檢測(cè)模塊,用于連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);路由地址生成模塊,用于根據(jù)不同的NAT類型生成相應(yīng)的路由地址;所述隧道服務(wù)器包括狀態(tài)信息維護(hù)模塊,用于將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;源主機(jī)和目標(biāo)主機(jī)通過所述隧道服務(wù)器,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述NAT類型為對(duì)稱NAT,所述路由地址包括所述隧道服務(wù)器的地址信息、所述隧道服務(wù)器選擇的中繼器地址信息和所述用戶主機(jī)的外部端口和外部地址信息。12.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述NAT類型為全錐形NAT或受限錐形NAT,所述路由地址包括所述隧道服務(wù)器的地址信息和所述用戶主機(jī)的外部端口和外部地址f曰息。13.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述源主機(jī)和目標(biāo)主機(jī)的通信通過以下模塊實(shí)現(xiàn)位于源主機(jī)的通信發(fā)起模塊,用于依據(jù)源主機(jī)的主機(jī)標(biāo)識(shí)地址和目標(biāo)主機(jī)的主機(jī)標(biāo)識(shí)地址,向目標(biāo)主機(jī)發(fā)起的通信請(qǐng)求;位于目標(biāo)主機(jī)隧道服務(wù)器的路由查找模塊,用于判斷目標(biāo)主機(jī)的隧道服務(wù)器中是否存在對(duì)應(yīng)的路由地址,若有,則執(zhí)行路由地址返回模塊;否則,執(zhí)行通知模塊;位于目標(biāo)主機(jī)隧道服務(wù)器的路由地址返回模塊,用于將所述路由地址返回給源主機(jī);位于目標(biāo)主機(jī)隧道服務(wù)器的通知模塊,用于向目標(biāo)主機(jī)發(fā)送生成路由地址的通知;位于目標(biāo)主機(jī)的路由地址生成模塊,用于根據(jù)所述通知生成相應(yīng)的路由地址,并觸發(fā)所述路由地址返回模塊;位于源主機(jī)的通信執(zhí)行模塊,用于依據(jù)從所述隧道服務(wù)器返回的路由地址與目標(biāo)主機(jī)進(jìn)行通信。14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述源主機(jī)為在全錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為全錐形NAT域內(nèi)的目標(biāo)主機(jī)。15.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述源主機(jī)為在受限錐形NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在受限錐形NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信實(shí)現(xiàn)還包括以下模塊位于所述源主機(jī)和目標(biāo)主機(jī)的NAT設(shè)備中的NAT映射模塊,用于在NAT映射表中建立所述源主機(jī)與目標(biāo)主機(jī)的映射關(guān)系。16.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在對(duì)稱NAT域內(nèi)的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信實(shí)現(xiàn)還包括以下模塊位于源主機(jī)的封裝模塊,用于將IPv6分組數(shù)據(jù)封裝成IPv4分組數(shù)據(jù);位于源主機(jī)的第一發(fā)送模塊,用于依據(jù)源主機(jī)的路由地址,將所述IPv4分組數(shù)據(jù)發(fā)送至源主機(jī)的隧道服務(wù)器連接的第一中繼器;位于第一中繼器的第二發(fā)送模塊,用于依據(jù)目標(biāo)主機(jī)的路由地址,將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)的隧道服務(wù)器連接的第二中繼器;位于第二中繼器的第三發(fā)送模塊,用于將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)所在的NAT設(shè)備中;NAT設(shè)備,用于將所述IPv4分組數(shù)據(jù)發(fā)送至目標(biāo)主機(jī)。17.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述源主機(jī)為在對(duì)稱NAT域內(nèi)的源主機(jī),所述目標(biāo)主機(jī)為在IPv6網(wǎng)絡(luò)中的目標(biāo)主機(jī),所述源主機(jī)和目標(biāo)主機(jī)的通信通過以下模塊實(shí)現(xiàn)位于源主機(jī)的報(bào)文請(qǐng)求模塊,用于通過隧道服務(wù)器向目標(biāo)主機(jī)發(fā)送響應(yīng)請(qǐng)求報(bào)文;位于隧道服務(wù)器的報(bào)文轉(zhuǎn)發(fā)模塊,用于將所述響應(yīng)請(qǐng)求報(bào)文發(fā)送給目標(biāo)主機(jī);位于目標(biāo)主機(jī)的報(bào)文應(yīng)答模塊,用于向源主機(jī)應(yīng)答響應(yīng)回復(fù)報(bào)文,并將所述響應(yīng)回復(fù)報(bào)文路由至與目標(biāo)主機(jī)最接近的第二中繼器;位于第二中繼器的封裝發(fā)送模塊,用于封裝所述響應(yīng)回復(fù)報(bào)文,并將所述封裝后的報(bào)文發(fā)送至IPv4網(wǎng)絡(luò)端的第一中繼器;位于第一中繼器的分組轉(zhuǎn)發(fā)模塊,用于將所述封裝后的報(bào)文轉(zhuǎn)發(fā)給源主機(jī)的NAT設(shè)備;源主機(jī)的NAT設(shè)備,用于將所述封裝后的報(bào)文轉(zhuǎn)發(fā)給源主機(jī);位于源主機(jī)的數(shù)據(jù)發(fā)送模塊,用于將封裝有IPv6數(shù)據(jù)包的IPv4數(shù)據(jù)包經(jīng)由所述第一中繼器發(fā)送至第二中繼器;位于第二中繼器的解包發(fā)送模塊,用于解封裝所述IPv4數(shù)據(jù)包,獲得IPv6數(shù)據(jù)包,并將所述IPv6數(shù)據(jù)包發(fā)送至目標(biāo)主機(jī)。全文摘要本發(fā)明公開了一種穿越NAT的隧道過渡方法,包括NAT域內(nèi)的用戶主機(jī)根據(jù)MAC地址信息和所連接的隧道服務(wù)器地址信息,生成該用戶主機(jī)的主機(jī)標(biāo)識(shí)地址;所述用戶主機(jī)連接隧道服務(wù)器進(jìn)行NAT類型的檢測(cè);根據(jù)不同的NAT類型生成相應(yīng)的路由地址;所述隧道服務(wù)器將所述主機(jī)標(biāo)識(shí)地址和路由地址維護(hù)至狀態(tài)信息表中;源主機(jī)和目標(biāo)主機(jī)通過隧道服務(wù)器,依據(jù)所述主機(jī)標(biāo)識(shí)地址和路由地址進(jìn)行通信。本發(fā)明以使NAT域內(nèi)的用戶主機(jī)在通過隧道技術(shù)接入Ipv6網(wǎng)絡(luò)時(shí)仍能夠保持端到端的特性,能夠穿透所有典型類型的NAT設(shè)備,接入路由器和客戶端之間可以存在任意數(shù)量和任何類型的NAT。文檔編號(hào)H04L12/56GK101800781SQ20091007769公開日2010年8月11日申請(qǐng)日期2009年2月11日優(yōu)先權(quán)日2009年2月11日發(fā)明者李興鋒,李曉東,毛偉,羅萬明申請(qǐng)人:中國科學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)信息中心