專利名稱:具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行通信的方法與裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)通信領(lǐng)域,尤其涉及具有IPv4應(yīng)用的主機(jī)通過(guò)IPv6網(wǎng)絡(luò)進(jìn)行通 信的技術(shù)。
背景技術(shù):
隨著全球IPv4 (Internet Protocol version 4,第4版本互聯(lián)網(wǎng)協(xié)議)地址的耗 盡和業(yè)務(wù)對(duì)終端“永遠(yuǎn)在線”的要求,IPv6 (Internet Protocol version 6,第6版本互聯(lián)網(wǎng) 協(xié)議)技術(shù)的部署將成為必然。為了逐步引入IPv6網(wǎng)絡(luò)的概念,IPv6網(wǎng)絡(luò)以及IPv4/IPv6 雙棧網(wǎng)絡(luò)的建設(shè)將成為IPv6技術(shù)部署的第一步。然而,目前的主機(jī)具有大量的IPv4應(yīng)用, IPv6應(yīng)用的數(shù)量與之相比卻微乎其微,因此在IPv6過(guò)渡方案初期如何解決IPv6網(wǎng)絡(luò)中主 機(jī)間IPv4應(yīng)用的訪問(wèn)與互通將成為IPv6過(guò)渡中需要考慮的一個(gè)重要問(wèn)題。在現(xiàn)有技術(shù)中,SIIT算法提供了 IPv6應(yīng)用(IPv6 Application)通過(guò)IPv6網(wǎng)絡(luò) 和IPv4網(wǎng)絡(luò)與IPv4節(jié)點(diǎn)通信的方法。該方法中在數(shù)據(jù)包進(jìn)出IPv6網(wǎng)絡(luò)的網(wǎng)絡(luò)拓?fù)渎窂?上設(shè)置有SIIT翻譯器,當(dāng)網(wǎng)絡(luò)中出現(xiàn)大量訪問(wèn)外部IPv4應(yīng)用(IPv4 Application)的數(shù)據(jù) 流時(shí),SIIT翻譯器需要對(duì)每個(gè)數(shù)據(jù)流進(jìn)行翻譯并保存其狀態(tài),這使得網(wǎng)絡(luò)系統(tǒng)的處理負(fù)擔(dān) 很大,容易造成系統(tǒng)中單點(diǎn)失效。此外,現(xiàn)有技術(shù)的BIS算法提供了一種IPv4應(yīng)用訪問(wèn)IPv6網(wǎng)絡(luò)中的IPv6節(jié)點(diǎn)的 方法。在該方法中,在IPv4應(yīng)用的主機(jī)中添加翻譯模塊,用于監(jiān)測(cè)TCP/IP模塊與網(wǎng)卡驅(qū)動(dòng) 程序之間的數(shù)據(jù)流,并進(jìn)行相應(yīng)IPv4與IPv6數(shù)據(jù)包之間的相互翻譯。當(dāng)與其他IPv6主機(jī) 進(jìn)行通信時(shí),在這臺(tái)主機(jī)內(nèi)部給對(duì)應(yīng)IPv6主機(jī)分配一些IPv4地址,這些地址只在這臺(tái)主機(jī) 內(nèi)部使用。而且,這種分配過(guò)程是通過(guò)DNS協(xié)議自動(dòng)來(lái)完成的。這樣,IPv4應(yīng)用的主機(jī)可 以通過(guò)翻譯模塊將發(fā)送給對(duì)端IPv6節(jié)點(diǎn)的數(shù)據(jù)包轉(zhuǎn)換為IPv6數(shù)據(jù)包,或者將接收的IPv6 數(shù)據(jù)包轉(zhuǎn)換為IPv4數(shù)據(jù)包傳遞給IPv4應(yīng)用,實(shí)現(xiàn)與IPv6網(wǎng)絡(luò)中IPv6節(jié)點(diǎn)的通信。但是, 在實(shí)際應(yīng)用的場(chǎng)景中,有可能出現(xiàn)IPv4應(yīng)用需要通過(guò)IPv6網(wǎng)絡(luò)訪問(wèn)另一個(gè)IPv4應(yīng)用,那 么BIS算法并沒(méi)有針對(duì)這種場(chǎng)景給出解決方案?,F(xiàn)有技術(shù)的另一個(gè)方案中,提出在IPv4和IPv6網(wǎng)絡(luò)邊緣上部署邊界轉(zhuǎn)換網(wǎng)關(guān)設(shè) 備,邊界轉(zhuǎn)換網(wǎng)關(guān)設(shè)備將從IPv6網(wǎng)絡(luò)發(fā)送到IPv4網(wǎng)絡(luò)的數(shù)據(jù)包轉(zhuǎn)換為IPv4數(shù)據(jù)包,將從 IPv4網(wǎng)絡(luò)發(fā)送到IPv6網(wǎng)絡(luò)的數(shù)據(jù)包轉(zhuǎn)換為IPv6數(shù)據(jù)包。那么,結(jié)合該方案與上述的BIS 算法則可以解決IPv4應(yīng)用通過(guò)IPv6網(wǎng)絡(luò)訪問(wèn)另一個(gè)IPv4應(yīng)用的問(wèn)題。但是,由于需要在 IPv4和IPv6網(wǎng)絡(luò)邊緣上部署專門(mén)的邊界轉(zhuǎn)換網(wǎng)關(guān)設(shè)備來(lái)實(shí)現(xiàn)數(shù)據(jù)包的轉(zhuǎn)換,導(dǎo)致網(wǎng)絡(luò)系 統(tǒng)的處理負(fù)擔(dān)很大,容易造成單點(diǎn)失效的問(wèn)題。綜上所述,現(xiàn)有技術(shù)所提供的IPv4應(yīng)用通過(guò)IPv6網(wǎng)絡(luò)訪問(wèn)另一個(gè)IPv4應(yīng)用的方 法都需要在IPv4和IPv6網(wǎng)絡(luò)邊緣上部署專門(mén)的設(shè)備(比如上述的SIIT翻譯器或者邊界 轉(zhuǎn)換網(wǎng)關(guān)設(shè)備)進(jìn)行地址翻譯以及充當(dāng)應(yīng)用層網(wǎng)關(guān)(ALG)的應(yīng)用信息轉(zhuǎn)換功能(即應(yīng)用層 網(wǎng)關(guān)功能)。尤其是應(yīng)用層網(wǎng)關(guān)功能的添加已被實(shí)踐證明將會(huì)給網(wǎng)絡(luò)系統(tǒng)增加較大的處理 負(fù)擔(dān),容易導(dǎo)致單點(diǎn)失效的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供具有IPv4應(yīng)用的IPv6主機(jī)獲取通信終端IPv4地址并與IPv4 通信對(duì)端進(jìn)行通信的相應(yīng)方法與裝置,通過(guò)改進(jìn)IPv6主機(jī)內(nèi)部結(jié)構(gòu),實(shí)現(xiàn)IPv4應(yīng)用通過(guò) IPv6網(wǎng)絡(luò)訪問(wèn)另一個(gè)IPv4通信終端時(shí),減小網(wǎng)絡(luò)系統(tǒng)的處理負(fù)擔(dān)。本發(fā)明實(shí)施例提供一種具有IPv4應(yīng)用的IPv6主機(jī)獲取通信對(duì)端IPv4地址的方 法,包括由IPv4應(yīng)用根據(jù)獲取的IPv4地址及域名系統(tǒng)DNS地址,生成對(duì)應(yīng)的IPv4DNS請(qǐng) 求數(shù)據(jù)包;所述IPv6主機(jī)將所述IPv4DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,生成 IPv6DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述DNS地址對(duì)應(yīng)的DNS服務(wù)器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包,獲取進(jìn)行通信的 IPv4通信對(duì)端的IPv4地址。本發(fā)明實(shí)施例提供一種具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行數(shù)據(jù)通信的方法,包括IPv4應(yīng)用生成發(fā)送給IPv4通信對(duì)端的IPv4應(yīng)用數(shù)據(jù)包;所述IPv6主機(jī)將所述IPv4應(yīng)用數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭后,通過(guò) IPv6網(wǎng)絡(luò)發(fā)送到網(wǎng)絡(luò)地址翻譯NAT設(shè)備;所述NAT設(shè)備將從所述IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包中IPv6包頭轉(zhuǎn)換為IPv4包頭后, 通過(guò)IPv4網(wǎng)絡(luò)發(fā)送到所述IPv4通信對(duì)端。本發(fā)明還提供一種具有IPv4應(yīng)用的IPv6主機(jī)獲取通信對(duì)端IPv4地址的方法,包 括IPv4應(yīng)用根據(jù)獲取的IPv4地址及域名系統(tǒng)DNS IPv4地址,生成對(duì)應(yīng)的IPv4DNS 請(qǐng)求數(shù)據(jù)包;所述IPv6主機(jī)將所述IPv4DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭, 生成IPv6DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述DNS IPv4地址對(duì)應(yīng)的DNS服務(wù)器;或
者由IPv4應(yīng)用根據(jù)獲取的IPv4地址及DNS IPv6地址,調(diào)用IPv4Socket API函數(shù) 發(fā)起DNS請(qǐng)求;所述IPv6主機(jī)將調(diào)用IPv4Socket API函數(shù)轉(zhuǎn)換為調(diào)用IPv6Socket API函 數(shù),生成IPv6DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述DNS IPv6地址對(duì)應(yīng)的DNS服務(wù) 器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包,獲取進(jìn)行通信的 IPv4通信對(duì)端的IPv4地址。本發(fā)明實(shí)施例再提供一種具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行數(shù)據(jù)通信的方法,包 括IPv4應(yīng)用調(diào)用IPv4 Socket API函數(shù)向所述IPv4通信對(duì)端發(fā)起應(yīng)用數(shù)據(jù)請(qǐng)求;所述IPv6主機(jī)將調(diào)用IPv4 Socket API函數(shù)轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù), 生成IPv6應(yīng)用數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到網(wǎng)絡(luò)地址翻譯NAT設(shè)備;所述NAT設(shè)備將從所述IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包中IPv6包頭轉(zhuǎn)換為IPv4包頭后, 通過(guò)IPv4網(wǎng)絡(luò)發(fā)送到所述IPv4通信對(duì)端。本發(fā)明實(shí)施例由于IPv6主機(jī)將IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭,使得該數(shù)據(jù)包可以通過(guò)IPv6網(wǎng)絡(luò)傳輸,并且不必涉及對(duì)傳輸層頭和數(shù)據(jù)部分進(jìn)行轉(zhuǎn)換,大大 減少了系統(tǒng)的處理負(fù)擔(dān)。進(jìn)一步,由于在IPv6與IPv4網(wǎng)絡(luò)的邊界處設(shè)置的NAT設(shè)備將數(shù)據(jù)包的包頭又轉(zhuǎn) 換回IPv4數(shù)據(jù)包的包頭,從而形成完整的IPv4數(shù)據(jù)包,使之可以通過(guò)IPv4網(wǎng)絡(luò)發(fā)送到 IPv4網(wǎng)絡(luò)中的IPv4節(jié)點(diǎn)或者具有IPv4應(yīng)用的主機(jī)。而NAT設(shè)備僅是對(duì)數(shù)據(jù)包的包頭部分 進(jìn)行轉(zhuǎn)換,而不必涉及對(duì)傳輸層頭和數(shù)據(jù)部分進(jìn)行轉(zhuǎn)換,大大減少了系統(tǒng)的處理負(fù)擔(dān),使得 單點(diǎn)失效發(fā)生的概率下降。
圖1為本發(fā)明實(shí)施例提供的具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行通信的方法步驟流程 圖之一;圖2為本發(fā)明實(shí)施例提供的方案一對(duì)應(yīng)的信令交互流程示意圖;圖3為本發(fā)明實(shí)施例提供的方案一對(duì)應(yīng)的信令交互部分流程示意圖;圖4為本發(fā)明實(shí)施例提供的具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行通信的方法步驟流程 圖之二;圖5為本發(fā)明實(shí)施例提供的方案二對(duì)應(yīng)的信令交互流程示意圖;圖6為本發(fā)明實(shí)施例提供的方案二對(duì)應(yīng)的信令交互部分流程示意圖;圖7為本發(fā)明實(shí)施例提供的IPv6主機(jī)結(jié)構(gòu)示意圖之一;圖8為本發(fā)明實(shí)施例提供的IPv6主機(jī)結(jié)構(gòu)示意圖之二。
具體實(shí)施例方式下面結(jié)合附圖,用具體實(shí)施例對(duì)本發(fā)明提供的具有IPv4應(yīng)用的IPv6主機(jī)與IPv4 通信對(duì)端進(jìn)行通信的方法與裝置進(jìn)行詳細(xì)說(shuō)明。具有IPv4應(yīng)用的IPv6主機(jī)與IPv4通信對(duì)端進(jìn)行通信時(shí),涉及將IPv4數(shù)據(jù)包轉(zhuǎn) 換為IPv6數(shù)據(jù)包通過(guò)IPv6網(wǎng)絡(luò)傳送。為此,本發(fā)明提供一種IPv4數(shù)據(jù)包轉(zhuǎn)換為IPv6數(shù) 據(jù)包的方法,包括IPv6主機(jī)將IPv4數(shù)據(jù)包中的IPv4源地址和分配給該IPv6主機(jī)的IPv6前綴組 合,生成轉(zhuǎn)換后的IPv6數(shù)據(jù)包中IPv6包頭中的IPv6源地址;以及將IPv4數(shù)據(jù)包中的IPv4 目的地址和設(shè)定的周知前綴(Well-known Prefix, WKP)組合,生成轉(zhuǎn)換后的IPv6數(shù)據(jù)包中 IPv6包頭中的IPv6目的地址。下面結(jié)合具體流程,對(duì)本發(fā)明提供的上述轉(zhuǎn)換方法進(jìn)行說(shuō)明。圖1為本發(fā)明提供的一種具有IPv4應(yīng)用的IPv6主機(jī)獲取IPv4通信對(duì)端地址并 進(jìn)行通信的方法的對(duì)應(yīng)步驟流程圖,包括步驟SlOl、由IPv6主機(jī)中的IPv4應(yīng)用根據(jù)獲取的IPv4地址及DNS地址,生成對(duì) 應(yīng)的IPv4 DNS請(qǐng)求數(shù)據(jù)包;步驟S102、IPv6主機(jī)將IPv4DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,生 成IPv6 DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到與DNS地址對(duì)應(yīng)的DNS服務(wù)器;步驟S103、IPv4應(yīng)用接收DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包,確定出進(jìn)行通 信的IPv4通信對(duì)端的IPv4地址后,生成發(fā)送給IPv4通信對(duì)端的IPv4應(yīng)用數(shù)據(jù)包;
步驟S104、IPv6主機(jī)將生成的IPv4應(yīng)用數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭 后,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到網(wǎng)絡(luò)地址翻譯NAT設(shè)備;步驟S105、NAT設(shè)備將從IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包中IPv6包頭轉(zhuǎn)換為IPv4包頭 后,通過(guò)IPv4網(wǎng)絡(luò)發(fā)送到IPv4通信對(duì)端。另一實(shí)施例中,當(dāng)具有IPv4應(yīng)用的IPv6主機(jī)已經(jīng)獲知通信對(duì)端的IPv4地址時(shí), 直接生成發(fā)送給IPv4通信對(duì)端的IPv4應(yīng)用數(shù)據(jù)包后,執(zhí)行上述步驟S104和步驟S105,實(shí) 現(xiàn)與IPv4通信對(duì)端的數(shù)據(jù)通信。為實(shí)現(xiàn)具有IPv4應(yīng)用的IPv6主機(jī)與IPv4通信對(duì)端進(jìn)行通信,作為一個(gè)例子,本 發(fā)明上述方法的一種具體信令交互過(guò)程可以采用下述方案一實(shí)現(xiàn)。方案一通過(guò)在IPv6主機(jī)上新增包頭翻譯模塊和地址翻譯模塊來(lái)實(shí)現(xiàn)將IPv4包 頭轉(zhuǎn)換為IPv6包頭,具體功能為包頭翻譯模塊(Header Translation)主要完成IPv4應(yīng)用所產(chǎn)生的IPv4數(shù)據(jù)到 IPv6數(shù)據(jù)的轉(zhuǎn)換。當(dāng)包頭翻譯模塊收到了 IPv4應(yīng)用發(fā)送的一個(gè)IPv4數(shù)據(jù)包后,將該數(shù)據(jù) 包的源IPv4地址和目的IPv4地址翻譯為IPv6地址,從而實(shí)現(xiàn)IPv4包頭到IPv6包頭的轉(zhuǎn) 換。在翻譯過(guò)程中,源地址和目的地址的翻譯方法也將有所不同。其中,IPv6源地址由運(yùn) 營(yíng)商網(wǎng)絡(luò)所分配的IPv6前綴和IPv4源地址組合而成,而IPv6目的地址是由本發(fā)明設(shè)定的 周知前綴(Well-known Prefix,WKP)和IPv4目的地址組合而成。經(jīng)過(guò)上述處理,原先數(shù)據(jù) 包中的IPv4包頭被IPv6包頭取代。在包頭轉(zhuǎn)換過(guò)程中,除ICMP包之外,數(shù)據(jù)包的傳輸層 頭和數(shù)據(jù)部分都保持不變。地址翻譯模塊(Address Translation)當(dāng)包頭翻譯模塊執(zhí)行IPv4包頭到IPv6 包頭的地址翻譯時(shí),地址翻譯模塊將維護(hù)從IPv4地址到IPv6地址映射過(guò)程所需的前綴信 息,并向包頭翻譯模塊提供翻譯規(guī)則。具體地,地址翻譯模塊將保存兩種前綴信息,即運(yùn)營(yíng) 商分配的IPv6前綴和本發(fā)明設(shè)定的周知前綴(Well-known Prefix, WKP)來(lái)分別處理源地 址和目的地址的翻譯。對(duì)于源地址而言,地址翻譯模塊將添加運(yùn)營(yíng)商分配的IPv6前綴來(lái)形 成IPv6源地址,而對(duì)于目的地址則將增加WKP來(lái)形成IPv6目的地址。結(jié)合以上對(duì)IPv6主 機(jī)的修改,IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)中的動(dòng)態(tài)主機(jī)配置協(xié)議服務(wù)器(DHCP Server)來(lái)得到 分配的地址,隨后將進(jìn)行通信對(duì)端的DNS請(qǐng)求,并根據(jù)DNS所回復(fù)的對(duì)端地址來(lái)進(jìn)行相關(guān)數(shù) 據(jù)流的通信。其具體流程如圖2所示,包括1、IPv6主機(jī)在通信前向DHCP Server請(qǐng)求分配地址,發(fā)送DHCP discovery消息。2、DHCP Server對(duì)請(qǐng)求消息進(jìn)行響應(yīng),并向主機(jī)同時(shí)分配IPv6前綴、IPv4地址以 及域名系統(tǒng)服務(wù)器(DNS Server)的地址;在此IPv4地址可以為公有地址也可以為私有地 址;其返回的DNS Server地址可以是IPv4地址,也可以是位于IPv6網(wǎng)絡(luò)中的DNS6設(shè)備的 IPv6地址。當(dāng)返回的DNS Server地址為IPv4地址時(shí)需要進(jìn)行相關(guān)DHCP擴(kuò)展。圖2流程 將描述返回地址為IPv4地址時(shí)相應(yīng)的流程。當(dāng)返回地址為DNS64的IPv6地址時(shí),相關(guān)的 處理過(guò)程如下圖3所示。3、IPv6主機(jī)中的IPv4應(yīng)用,根據(jù)所得到的IPv4地址,發(fā)起IPv4 DNS請(qǐng)求,該請(qǐng) 求消息將發(fā)到IPv6網(wǎng)絡(luò)之前將被包頭翻譯模塊劫持,并對(duì)其進(jìn)行包頭地址信息的轉(zhuǎn)換。4、包頭翻譯模塊將IPv4包中源地址信息和目的地址信息發(fā)往地址翻譯模塊進(jìn)行處理。
5、針對(duì)目的地址,地址翻譯模塊將添加WKP前綴來(lái)形成IPv6目的地址;對(duì)于源地 址,地址翻譯模塊將添加DHCP所分配給主機(jī)的IPv6前綴來(lái)形成IPv6源地址。以上翻譯后, 地址翻譯模塊將IPv6地址頭信息返回給包頭翻譯模塊。6/7、包頭翻譯模塊根據(jù)得到的IPv6頭信息向網(wǎng)絡(luò)地址翻譯NAT64設(shè)備(本發(fā)明 中網(wǎng)絡(luò)地址翻譯設(shè)備以NAT64設(shè)備為例)發(fā)送DNS請(qǐng)求消息的相應(yīng)數(shù)據(jù)包。8、NAT64設(shè)備接收到DNS請(qǐng)求消息數(shù)據(jù)包后,將完成IPv6包頭向IPv4包頭的轉(zhuǎn) 換。在轉(zhuǎn)換過(guò)程中,如果IPv4應(yīng)用所使用的IPv4地址為私有地址,則NAT64的翻譯過(guò)程為 有狀態(tài)翻譯,需要將源IPv6地址映射為公有IPv4地址,目的IPv6地址則需去掉WKP前綴; 而如果IPv4應(yīng)用所使用的IPv4地址為公有地址,則NAT64的翻譯過(guò)程完全為無(wú)有狀態(tài)翻 譯過(guò)程,對(duì)源地址和目的地址的處理只需去掉相應(yīng)的前綴即可。以上過(guò)程將完成IPv6包頭 向IPv4包頭轉(zhuǎn)換。9、NAT64設(shè)備將請(qǐng)求消息數(shù)據(jù)包發(fā)往IPv4 DNS Server。10、IPv4 DNS Server回復(fù)通信對(duì)端的IPv4地址(本例中以IPv4 Server的地址 為例),并返回給NAT64設(shè)備。1UNAT64設(shè)備對(duì)回復(fù)DNS消息進(jìn)行處理,將源地址和目的地址分配增加相應(yīng)的前 綴,完成IPv4包頭向IPv6包頭的無(wú)狀態(tài)轉(zhuǎn)換。如果IPv4應(yīng)用使用私有地址,還需要根據(jù) NAT64設(shè)備上所存儲(chǔ)的映射狀態(tài)信息來(lái)查找出相應(yīng)的IPv6源地址信息。12、NAT64設(shè)備將DNS回復(fù)數(shù)據(jù)包發(fā)給IPv6主機(jī)。13、IPv6主機(jī)接收到DNS回復(fù)消息后返回給IPv4應(yīng)用。14、IPv6主機(jī)根據(jù)所得到的通信對(duì)端IPv4地址,發(fā)起應(yīng)用數(shù)據(jù)請(qǐng)求,該應(yīng)用請(qǐng)求 消息在發(fā)到IPv6網(wǎng)絡(luò)之前將被包頭翻譯模塊劫持,并對(duì)其進(jìn)行包頭地址信息的轉(zhuǎn)換。15、包頭翻譯模塊將IPv4包中源地址信息和目的地址信息發(fā)往地址翻譯模塊來(lái) 進(jìn)行處理。16、針對(duì)目的地址,地址翻譯模塊將添加WKP前綴來(lái)形成IPv6目的地址;對(duì)于源地 址,地址翻譯模塊將添加DHCP所分配給該IPv6主機(jī)的IPv6前綴來(lái)形成IPv6源地址。進(jìn) 行以上翻譯后,地址翻譯模塊將相關(guān)IPv6地址頭信息返回給包頭翻譯模塊。17/18、包頭翻譯模塊根據(jù)得到的IPv6頭信息向NAT64設(shè)備發(fā)送數(shù)據(jù)請(qǐng)求數(shù)據(jù)包。19、NAT64設(shè)備接收到數(shù)據(jù)請(qǐng)求消息數(shù)據(jù)包后,將完成IPv6包頭向IPv4包頭的轉(zhuǎn) 換。在轉(zhuǎn)換過(guò)程中,如果IPv4應(yīng)用所使用的IPv4地址為私有地址,則NAT64的翻譯過(guò)程為 有狀態(tài)翻譯,需要將源IPv6地址映射為公有IPv4地址,目的IPv6地址則需去掉WKP前綴, 并進(jìn)行相關(guān)的應(yīng)用層網(wǎng)關(guān)(ALG)處理。而如果IPv4應(yīng)用所使用的IPv4地址為公有地址, 則NAT64設(shè)備的翻譯過(guò)程完全為無(wú)有狀態(tài)翻譯過(guò)程,對(duì)源地址和目的地址的處理只需去掉 相應(yīng)的IPv6前綴即可,也無(wú)需進(jìn)行ALG處理。以上過(guò)程將完成IPv6包頭向IPv4包頭的轉(zhuǎn) 換。20、NAT64設(shè)備將請(qǐng)求消息發(fā)往通信對(duì)端,即IPv4應(yīng)用服務(wù)器。21、IPv4應(yīng)用服務(wù)器將回復(fù)消息返回給NAT64設(shè)備。22、NAT64設(shè)備對(duì)回復(fù)IPv4返回的回復(fù)消息進(jìn)行處理,將源地址和目的地址分配 添加相應(yīng)的前綴,完成IPv4包頭向IPv6包頭的無(wú)狀態(tài)轉(zhuǎn)換。如IPv4應(yīng)用使用私有地址,還 需要根據(jù)NAT64上所存儲(chǔ)的映射狀態(tài)信息來(lái)查找相應(yīng)的IPv6地址信息,并且需要進(jìn)行ALG的相關(guān)處理。23、NAT64設(shè)備將應(yīng)用回復(fù)數(shù)據(jù)發(fā)給IPv6主機(jī)。24、IPv6主機(jī)接收到應(yīng)用回復(fù)數(shù)據(jù)后發(fā)還給IPv4應(yīng)用。當(dāng)DHCP Server對(duì)請(qǐng)求消息進(jìn)行響應(yīng),并向IPv6主機(jī)同時(shí)分配IPv6前綴、IPv4地 址以及DNS Server地址時(shí),若返回的DNS Server地址為DNS6的IPv6地址時(shí),相關(guān)的處理 過(guò)程如圖3所示,包括1、主機(jī)在通信前向DHCP Server請(qǐng)求分配地址,發(fā)送DHCP discovery消息。2、DHCP Server對(duì)請(qǐng)求消息進(jìn)行響應(yīng),并向主機(jī)同時(shí)分配IPv6前綴、IPv4地址以 及DNS6Server的地址;在此IPv4地址可以為公有地址也可以為私有地址。3、IPv4根據(jù)所得到的IPv4地址,發(fā)起DNS請(qǐng)求,該請(qǐng)求消息將發(fā)到IPv6網(wǎng)絡(luò)之 前將被包頭翻譯模塊劫持,并對(duì)其進(jìn)行包頭地址信息的轉(zhuǎn)換。4、包頭翻譯模塊將IPv4包中源地址信息發(fā)往地址翻譯模塊來(lái)進(jìn)行處理。5、地址翻譯模塊將添加DHCP所分配給該IPv6主機(jī)的IPv6前綴來(lái)形成IPv6源地 址。目的地址已經(jīng)是IPv6地址,可以直接使用。以上翻譯后,地址翻譯模塊將IPv6地址頭 信息發(fā)還給包頭翻譯模塊。6/7、包頭翻譯模塊根據(jù)得到的IPv6頭信息向DNS6設(shè)備發(fā)送DNS請(qǐng)求數(shù)據(jù)包。8、當(dāng)DNS6收到請(qǐng)求消息后,將查詢是否存儲(chǔ)了通信對(duì)端的相應(yīng)的IPv4地址記錄。9、當(dāng)DNS6存儲(chǔ)了通信對(duì)端的相應(yīng)的IPv4地址記錄時(shí),DNS6會(huì)將DNS回復(fù)數(shù)據(jù)包 直接發(fā)給IPv6主機(jī)。10、IPv6主機(jī)接收到DNS回復(fù)消息后返回給IPv4應(yīng)用。11、當(dāng)DNS6沒(méi)有存儲(chǔ)相應(yīng)的IPv4地址記錄時(shí),DNS6會(huì)將相關(guān)DNS請(qǐng)求轉(zhuǎn)發(fā)給 IPv4DNS服務(wù)器,并將DNS請(qǐng)求消息中的IPv6地址轉(zhuǎn)換為IPv4地址。12、DNS6將相關(guān)DNS請(qǐng)求發(fā)往IPv4DNS服務(wù)器。13、IPv4DNS服務(wù)器返回DNS回復(fù)消息。14、DNS6接收到相關(guān)IPv4DNS服務(wù)器的回復(fù)消息后將其IPv4包頭轉(zhuǎn)換為IPv6包 頭。15、DNS6會(huì)將DNS回復(fù)消息數(shù)據(jù)包發(fā)給IPv6主機(jī)。16、IPv6主機(jī)接收到DNS回復(fù)消息后返回給IPv4應(yīng)用。IPv4應(yīng)用根據(jù)接收到的DNS回復(fù)消息,確定出通信對(duì)端的IPv4地址后,與通信對(duì) 端進(jìn)行應(yīng)用數(shù)據(jù)包傳送的過(guò)程與圖2中的步驟14-24相同,不重述。圖4為本發(fā)明提供的另一種具有IPv4應(yīng)用的IPv6主機(jī)獲取通信對(duì)端的IPv4地 址并進(jìn)行通信的方法的對(duì)應(yīng)步驟流程圖,包括步驟S401、IPv6主機(jī)向IPv6網(wǎng)絡(luò)中的DHCP服務(wù)器請(qǐng)求分配地址;步驟S402、IPv6主機(jī)判斷DHCP服務(wù)器返回的DNS地址是DNS IPv4地址或DNS IPv6地址;當(dāng)獲取的DNS地址為IPv4地址時(shí),執(zhí)行步驟S403 ;當(dāng)獲取的DNS地址為IPv6地 址時(shí),執(zhí)行步驟S405 ;步驟S403、IPv4應(yīng)用根據(jù)獲取的IPv4地址及DNS IPv4地址,生成對(duì)應(yīng)的IPv4DNS 請(qǐng)求數(shù)據(jù)包;步驟S404、IPv6主機(jī)將IPv4DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,生成IPv6DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到DNS IPv4地址對(duì)應(yīng)的DNS服務(wù)器;轉(zhuǎn)至步驟 S407步驟S405、IPv4應(yīng)用根據(jù)獲取的IPv4地址及DNS IPv6地址,調(diào)用IPv4Socket API函數(shù)發(fā)起DNS請(qǐng)求;步驟S406、IPv6主機(jī)將調(diào)用IPv4Socket API函數(shù)轉(zhuǎn)換為調(diào)用IPv6SocketAPI函 數(shù),生成IPv6DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到與DNS IPv6地址對(duì)應(yīng)的DNS服務(wù)器;步驟S407、IPv4應(yīng)用接收DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包,確定出進(jìn)行通 信的IPv4通信對(duì)端的IPv4地址后,調(diào)用IPv4S0Cket API函數(shù)向IPv4通信對(duì)端發(fā)起應(yīng)用 數(shù)據(jù)請(qǐng)求;步驟S408、IPv6主機(jī)將調(diào)用IPv4Socket API函數(shù)轉(zhuǎn)換為調(diào)用IPv6SocketAPI函 數(shù),生成IPv6應(yīng)用數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到NAT設(shè)備;步驟S409、NAT設(shè)備將從IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包中IPv6包頭轉(zhuǎn)換為IPv4包頭 后,通過(guò)IPv4網(wǎng)絡(luò)發(fā)送到所述IPv4通信對(duì)端。另一實(shí)施例中,當(dāng)具有IPv4應(yīng)用的IPv6主機(jī)已經(jīng)獲知通信對(duì)端的IPv4地址時(shí), 直接生成發(fā)送給IPv4通信對(duì)端的IPv4應(yīng)用數(shù)據(jù)包后,執(zhí)行上述步驟S405至步驟S409,實(shí) 現(xiàn)與IPv4通信對(duì)端的數(shù)據(jù)通信。為實(shí)現(xiàn)具有IPv4應(yīng)用的IPv6主機(jī)與IPv4通信對(duì)端進(jìn)行通信,作為一個(gè)例子,本 發(fā)明上述方法的一種具體信令交互過(guò)程可以采用下述方案二實(shí)現(xiàn)。方案二 通過(guò)在IPv6主機(jī)上新增DNS判斷處理模塊、套按字(Socket)翻譯模塊、 包頭翻譯模塊和地址翻譯模塊,具體為DNS判斷處理模塊,用于判斷接收的DNS地址是DNS IPv4地址或DNSIPv6地址; 當(dāng)為DNS IPv4地址時(shí),啟動(dòng)包頭翻譯模塊;當(dāng)為DNS IPv6地址,啟動(dòng)Socket翻譯模塊;Socket翻譯模塊實(shí)現(xiàn)在IPv4的Socket API函數(shù)與IPv6的Socket API函數(shù)間 相互翻譯。當(dāng)檢測(cè)到由IPv4應(yīng)用發(fā)起的Socket函數(shù)調(diào)用時(shí),攔截該函數(shù)調(diào)用,并使用一個(gè) 對(duì)應(yīng)于該IPv4 API函數(shù)的IPv6 API函數(shù)進(jìn)行替換。轉(zhuǎn)換過(guò)程中,相關(guān)API輸入?yún)?shù)也將 進(jìn)行IPv4參數(shù)到IPv6參數(shù)的轉(zhuǎn)換。包頭翻譯模塊(Header Translation)主要完成IPv4應(yīng)用所產(chǎn)生的IPv4DNS請(qǐng)求 消息的IPv4包頭到IPv6包頭的轉(zhuǎn)換。當(dāng)包頭翻譯模塊收到了 IPv4應(yīng)用發(fā)起的DNS請(qǐng)求 消息后,將該數(shù)據(jù)包的源IPv4地址和目的IPv4地址翻譯為IPv6地址,從而實(shí)現(xiàn)IPv4包頭 到IPv6包頭的轉(zhuǎn)換。在翻譯過(guò)程中,源地址和目的地址的翻譯方法也將有所不同。其中, IPv6源地址由運(yùn)營(yíng)商網(wǎng)絡(luò)所分配的IPv6前綴和IPv4源地址組合而成,而IPv6目的地址是 由本發(fā)明設(shè)定的周知前綴(Well-known Prefix, WKP)和目的IPv4地址組合而成。經(jīng)過(guò)上 述處理,原先數(shù)據(jù)包中的IPv4包頭被IPv6包頭取代。在包頭轉(zhuǎn)換過(guò)程中,DNS請(qǐng)求的數(shù)據(jù) 部分將保持不變。地址翻譯模塊(Address Translation)當(dāng)Socket翻譯模塊執(zhí)行需要進(jìn)行IPv4 輸入?yún)?shù)到IPv6輸入?yún)?shù)的轉(zhuǎn)換時(shí),地址翻譯模塊將維護(hù)從IPv4地址到IPv6地址映射過(guò) 程所需的前綴信息并提供該映射信息給Socket翻譯模塊。具體地地址翻譯模塊將保存 兩種前綴信息,即運(yùn)營(yíng)商分配的IPv6前綴和本發(fā)明設(shè)定的周知前綴(Well-known Prefix, WKP)來(lái)分別處理源地址和目的地址的翻譯。對(duì)于源地址,地址翻譯模塊將添加運(yùn)營(yíng)商分配的IPv6前綴來(lái)形成IPv6源地址,而對(duì)于目的地址將增加WKP來(lái)形成IPv6目的地址。結(jié)合以上對(duì)IPv6主機(jī)的修改,在實(shí)施方案二中,IPv6主機(jī)通過(guò)DHCPServer來(lái)得 到地址,隨后將進(jìn)行通信對(duì)端的DNS請(qǐng)求,并根據(jù)DNS所回復(fù)的對(duì)端地址來(lái)進(jìn)行相關(guān)數(shù)據(jù)流 的通信。其具體流程如圖5所示,包括1、IPv6主機(jī)在通信前向DHCP Server請(qǐng)求分配地址,發(fā)送DHCP discovery消息。2、DHCP Server對(duì)請(qǐng)求消息進(jìn)行響應(yīng),并向IPv6主機(jī)同時(shí)分配IPv6前綴、IPv4地 址以及DNS Server的地址;在此IPv4地址可以為公有地址也可以為私有地址;其返回的 DNS Server地址可以是IPv4地址,也可以是位于IPv6網(wǎng)絡(luò)中的DNS6設(shè)備的IPv6地址。 當(dāng)DNS Server返回地址為IPv4地址時(shí)需要進(jìn)行相關(guān)DHCP擴(kuò)展。圖5流程將描述返回的 DNS Server地址為IPv4DNS服務(wù)器地址時(shí)相應(yīng)的流程。當(dāng)返回地址為DNS64的IPv6地址 時(shí),相關(guān)的處理過(guò)程詳如下圖6所示。3、IPv6主機(jī)中的IPv4應(yīng)用,根據(jù)所得到的IPv4地址和DNS IPv4地址,發(fā)起 IPv4DNS請(qǐng)求,該請(qǐng)求消息將發(fā)到IPv6網(wǎng)絡(luò)之前將被包頭翻譯模塊劫持,并對(duì)其進(jìn)行包頭 地址信息的轉(zhuǎn)換。4、包頭翻譯模塊將IPv4包中源地址信息和目的地址信息發(fā)往地址翻譯模塊進(jìn)行處理。5、針對(duì)目的地址,地址翻譯模塊將添加WKP前綴來(lái)形成IPv6目的地址;對(duì)于源地 址,地址翻譯模塊將添加DHCP所分配給主機(jī)的IPv6前綴來(lái)形成IPv6源地址。以上翻譯后, 地址翻譯模塊將IPv6地址頭信息返回給包頭翻譯模塊。6/7、包頭翻譯模塊根據(jù)得到的IPv6頭信息向網(wǎng)絡(luò)地址翻譯NAT64設(shè)備發(fā)送DNS 請(qǐng)求消息的相應(yīng)數(shù)據(jù)包。8、NAT64設(shè)備接收到DNS請(qǐng)求消息后,將完成IPv6包頭向IPv4包頭的轉(zhuǎn)換。在 轉(zhuǎn)換過(guò)程中,如果IPv4應(yīng)用所使用的IPv4地址為私有地址,則NAT64設(shè)備的翻譯過(guò)程為有 狀態(tài)翻譯,需要將源IPv6地址映射為公有IPv4地址,目的IPv6地址則需去掉WKP前綴;而 如果IPv4應(yīng)用所使用的IPv4地址為公有地址,則NAT64的翻譯過(guò)程完全為無(wú)有狀態(tài)翻譯 過(guò)程,對(duì)源地址和目的地址的處理只需去掉相應(yīng)的前綴即可。以上過(guò)程將完成IPv6包頭向 IPv4包頭轉(zhuǎn)換。9、經(jīng)過(guò)包頭轉(zhuǎn)換后,NAT64設(shè)備將DNS請(qǐng)求消息發(fā)往IPv4 DNS Server010,DNS Server回復(fù)通信對(duì)端(以IPv4 Server為例)的地址,并返回給NAT64設(shè) 備。11、NAT64對(duì)回復(fù)的DNS消息進(jìn)行處理,將源地址和目的地址分配增加相應(yīng)的前 綴,完成IPv4包頭向IPv6包頭的無(wú)狀態(tài)轉(zhuǎn)換。如果IPv4應(yīng)用使用私有地址,還需要根據(jù) NAT64上所存儲(chǔ)的映射狀態(tài)信息來(lái)查找相應(yīng)的IPv6源地址信息。12、NAT64設(shè)備將DNS回復(fù)數(shù)據(jù)包發(fā)給IPv6主機(jī)。13、IPv6主機(jī)接收到DNS回復(fù)消息后發(fā)還給IPv4應(yīng)用。14、IPv6主機(jī)中的IPv4應(yīng)用根據(jù)所得到的通信對(duì)端的IPv4地址,發(fā)起應(yīng)用數(shù)據(jù)請(qǐng) 求。Socket翻譯模塊將劫持本次系統(tǒng)調(diào)用,并進(jìn)行IPv6 Socket API的轉(zhuǎn)換。Socket API 函數(shù)所需的IPv6參數(shù)信息將由Socket翻譯模塊查詢地址翻譯模塊來(lái)得到。15、Socket翻譯模塊將IPv4包中源地址信息和目的地址信息發(fā)往地址翻譯模塊來(lái)進(jìn)行處理。16、針對(duì)目的地址,地址翻譯模塊將添加WKP前綴來(lái)形成IPv6目的地址;對(duì)于源地 址,地址翻譯模塊將添加DHCP所分配給該IPv6主機(jī)的IPv6前綴來(lái)形成IPv6源地址。進(jìn) 行以上翻譯后,地址翻譯模塊將相關(guān)IPv6地址頭信息發(fā)還給Socket翻譯模塊。17/18,Socket翻譯根據(jù)得到的IPv6頭信息來(lái)調(diào)用IPv6 Socket API,該過(guò)程實(shí)現(xiàn) IPv4應(yīng)用請(qǐng)求數(shù)據(jù)在IPv6數(shù)據(jù)包的封裝,其原有數(shù)據(jù)部分都將保持不變。隨后,主機(jī)將向 NAT64設(shè)備發(fā)送該數(shù)據(jù)包。19、NAT64設(shè)備接收到數(shù)據(jù)請(qǐng)求消息后,將完成IPv6包頭向IPv4包頭的轉(zhuǎn)換。在 轉(zhuǎn)換過(guò)程中,如果IPv4應(yīng)用所使用的IPv4地址為私有地址,則NAT64的翻譯過(guò)程為有狀態(tài) 翻譯,需要將源IPv6地址映射為公有IPv4地址,目的IPv6地址則需去掉WKP前綴,并進(jìn)行 相關(guān)的ALG處理。而如果IPv4應(yīng)用所使用的IPv4地址為公有地址,則NAT64的翻譯過(guò)程 完全為無(wú)有狀態(tài)翻譯過(guò)程,對(duì)源地址和目的地址的處理只需去掉相應(yīng)的前綴即可,也無(wú)需 進(jìn)行ALG處理。以上過(guò)程將完成IPv6包頭向IPv4包頭的轉(zhuǎn)換。20、NAT64設(shè)備將應(yīng)用請(qǐng)求消息發(fā)往通信端IPv4應(yīng)用服務(wù)器。21、IPv4應(yīng)用服務(wù)器將回復(fù)消息返回給NAT64設(shè)備。22、NAT64設(shè)備對(duì)返回的回復(fù)消息進(jìn)行處理,將源地址和目的地址分配添加相應(yīng)的 IPv6前綴,完成IPv4包頭向IPv6包頭的無(wú)狀態(tài)轉(zhuǎn)換。如果IPv4應(yīng)用使用私有地址,還需 要根據(jù)NAT64上所存儲(chǔ)的映射狀態(tài)信息來(lái)查找相應(yīng)的IPv6地址信息,并且需要進(jìn)行ALG的 相關(guān)處理。23、NAT64設(shè)備將應(yīng)用回復(fù)數(shù)據(jù)發(fā)給IPv6主機(jī)。24、IPv6主機(jī)接收到應(yīng)用回復(fù)消息后發(fā)還給IPv4應(yīng)用。當(dāng)DHCP Server對(duì)請(qǐng)求消息進(jìn)行響應(yīng),并向IPv6主機(jī)同時(shí)分配IPv6前綴、IPv4地 址以及DNS Server地址時(shí),若返回的DNS Server地址為DNS6的IPv6地址時(shí),相關(guān)的處理 過(guò)程如圖6所示,包括1、主機(jī)在通信前向DHCP Server請(qǐng)求分配地址,發(fā)送DHCP discovery消息。2、DHCP Server對(duì)請(qǐng)求消息進(jìn)行響應(yīng),并向主機(jī)同時(shí)分配IPv6前綴、IPv4地址以 及DNS6 Server的地址;在此IPv4地址可以為公有地址也可以為私有地址。3、IPv4應(yīng)用根據(jù)所得到的IPv4地址,發(fā)起DNS請(qǐng)求,該請(qǐng)求將調(diào)用IPv4S0Cket API-gethostbyname ()來(lái)發(fā)起DNS請(qǐng)求。Socket翻譯模塊將劫持本次系統(tǒng)調(diào)用,并進(jìn)行 IPv6Socket的轉(zhuǎn)換,使用相應(yīng)的API-getaddrinfo ()來(lái)形成相應(yīng)的DNS請(qǐng)求。相關(guān)API所 需的IPv6參數(shù)信息將由Socket翻譯模塊查詢地址翻譯模塊來(lái)得到。4、Socket翻譯模塊將調(diào)用IPv4 Socket API函數(shù)中的源地址信息發(fā)往地址翻譯 模塊來(lái)進(jìn)行處理。5、地址翻譯模塊將添加DHCP所分配給主機(jī)的IPv6前綴來(lái)形成IPv6源地址。目 的地址已是IPv6地址,可以直接使用。以上翻譯后,地址翻譯模塊將IPv6地址頭信息發(fā)還 給Socket翻譯模塊。6/7、Socket翻譯模塊根據(jù)得到的IPv6頭信息來(lái)進(jìn)行IPv6 Socket API調(diào)用,并 形成DNS請(qǐng)求消息向NAT64設(shè)備發(fā)送。8、當(dāng)DNS6收到請(qǐng)求消息后,將查詢本地是否存儲(chǔ)了通信對(duì)端的相應(yīng)的IPv4地址記錄。9、當(dāng)DNS6存儲(chǔ)了通信對(duì)端的相應(yīng)的IPv4地址記錄時(shí),DNS6會(huì)將DNS回復(fù)數(shù)據(jù)包 直接發(fā)給IPv6主機(jī)。10、IPv6主機(jī)接收到DNS回復(fù)消息數(shù)據(jù)后返回給IPv4應(yīng)用。11、當(dāng)DNS6沒(méi)有存儲(chǔ)通信對(duì)端的相應(yīng)的IPv4地址記錄時(shí),DNS6會(huì)將相關(guān)DNS請(qǐng) 求轉(zhuǎn)發(fā)給DNS4服務(wù)器,并將DNS請(qǐng)求消息中的IPv6地址轉(zhuǎn)換為IPv4地址。12、DNS6將相關(guān)DNS請(qǐng)求發(fā)往DNS4服務(wù)器。13、DNS4服務(wù)器返回DNS回復(fù)消息。14、DNS6接收到相關(guān)DNS4的回復(fù)消息后將其IPv4包頭轉(zhuǎn)換為IPv6包頭。15、DNS6會(huì)將DNS回復(fù)數(shù)據(jù)發(fā)給IPv6主機(jī)。16、IPv6主機(jī)接收到DNS回復(fù)消息后返回給IPv4應(yīng)用。IPv4應(yīng)用根據(jù)接收到的DNS回復(fù)消息,確定出通信對(duì)端的IPv4地址后,與通信對(duì) 端進(jìn)行應(yīng)用數(shù)據(jù)包傳送的過(guò)程與圖5中的步驟14-24相同,不重述。根據(jù)本發(fā)明上述方案一,相應(yīng)的IPv6主機(jī)結(jié)構(gòu)示意圖如圖7所示,包括IPv4應(yīng)用模塊71,用于執(zhí)行IPv4相關(guān)應(yīng)用;包頭翻譯模塊72,用于將IPv4應(yīng)用模塊71發(fā)送的相關(guān)IPv4數(shù)據(jù)包中的IPv4包 頭轉(zhuǎn)換成IPv6包頭;地址翻譯模塊73,用于提供IPv4地址與IPv6地址之間的映射。其中包頭翻譯模塊72,具體用于劫持IPv4數(shù)據(jù)包中的IPv4包頭,將IPv4包頭中的 IPv4源地址和IPv4目的地址發(fā)送到地址翻譯模塊73 ;接收地址翻譯模塊73返回的IPv6 源地址和IPv6目的地址,形成IPv6包頭;地址翻譯模塊73,具體用于接收包頭翻譯模塊72發(fā)送的IPv4源地址和IPv4目 的地址,將所述IPv4源地址與分配給IPv6主機(jī)的IPv6前綴組合,生成IPv6源地址,以及 將IPv4目的地址與存儲(chǔ)的周知前綴組合,生成IPv6目的地址,并返回給包頭翻譯模塊72。根據(jù)本發(fā)明上述方案二,相應(yīng)的IPv6主機(jī)結(jié)構(gòu)示意圖如圖8所示,包括IPv4應(yīng)用模塊81,用于執(zhí)行IPv4相關(guān)應(yīng)用;DNS判斷處理模塊82,用于判斷接收的DNS地址是DNS IPv4地址或DNS IPv6地 址;當(dāng)為DNS IPv4地址時(shí),啟動(dòng)包頭翻譯模塊;當(dāng)為DNS IPv6地址,啟動(dòng)Socket翻譯模塊;包頭翻譯模塊83,用于將所述IPv4應(yīng)用模塊發(fā)送的相關(guān)IPv4數(shù)據(jù)包中的IPv4包 頭轉(zhuǎn)換成IPv6包頭;Socket翻譯模塊84,用于當(dāng)IPv4應(yīng)用模塊81執(zhí)行IPv4相關(guān)應(yīng)用調(diào)用IPv4Socket API函數(shù)時(shí),轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù);地址翻譯模塊85,用于提供IPv4地址與IPv6地址之間的映射。其中所述包頭翻譯模塊83具體用于劫持IPv4數(shù)據(jù)包中的IPv4包頭,將IPv4包頭中 的IPv4源地址和IPv4目的地址發(fā)送到所述地址翻譯模塊85 ;接收所述地址翻譯模塊85返 回的IPv6源地址和IPv6目的地址,形成IPv6包頭;Socket翻譯模塊84,具體用于劫持IPv4 Socket API函數(shù)調(diào)用,將調(diào)用的IPv4Socket API函數(shù)中的IPv4源地址和IPv4目的地址發(fā)送到地址翻譯模塊85 ;接收地址翻譯 模塊85返回的IPv6源地址和IPv6目的地址,轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù);地址翻譯模塊85,具體用于接收Socket翻譯模塊84發(fā)送的IPv4源地址和IPv4 目的地址,將所述IPv4源地址與分配給IPv6主機(jī)的IPv6前綴組合,生成IPv6源地址,以 及將IPv4目的地址與存儲(chǔ)的周知前綴組合,生成IPv6目的地址,并返回給Socket翻譯模 塊84。綜上所述,采用本發(fā)明,在實(shí)現(xiàn)IPv6系統(tǒng)部署的同時(shí),保證傳統(tǒng)IPv4應(yīng)用程序的 正常通信,做到對(duì)應(yīng)用程序的透明無(wú)感知,實(shí)現(xiàn)向后IPv4兼容的IPv6過(guò)渡技術(shù)。在具有IPv4應(yīng)用的主機(jī)通過(guò)IPv6網(wǎng)絡(luò)通信過(guò)程中,實(shí)現(xiàn)雙向的無(wú)狀態(tài)地址翻譯 過(guò)程,降低了邊界NAT網(wǎng)關(guān)數(shù)據(jù)包處理的負(fù)荷,更進(jìn)一步提高了系統(tǒng)部署的擴(kuò)展性。針對(duì)源地址和目的地址分配不同的前綴,保證了應(yīng)用數(shù)據(jù)路由可達(dá)的同時(shí),且不 破壞原有路由系統(tǒng)中前綴的可聚合性。
權(quán)利要求
一種具有IPv4應(yīng)用的IPv6主機(jī)獲取通信對(duì)端IPv4地址的方法,其特征在于,包括由IPv4應(yīng)用根據(jù)獲取的IPv4地址及域名系統(tǒng)DNS地址,生成對(duì)應(yīng)的IPv4DNS請(qǐng)求數(shù)據(jù)包;所述IPv6主機(jī)將所述IPv4DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,生成IPv6 DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述DNS地址對(duì)應(yīng)的DNS服務(wù)器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包,獲取進(jìn)行通信的IPv4通信對(duì)端的IPv4地址。
2.如權(quán)利要求1所述的方法,其特征在于,在IPv4應(yīng)用生成對(duì)應(yīng)的IPv4DNS請(qǐng)求數(shù)據(jù) 包之前,還包括所述IPv6主機(jī)向IPv6網(wǎng)絡(luò)中的動(dòng)態(tài)主機(jī)配置協(xié)議DHCP服務(wù)器請(qǐng)求分配地址; 所述DHCP服務(wù)器向所述IPv6主機(jī)返回分配的IPv4地址及DNS地址。
3.如權(quán)利要求2所述的方法,其特征在于,所述DHCP服務(wù)器還向所述IPv6主機(jī)返回分 配給所述IPv6主機(jī)的IPv6前綴;所述IPv6主機(jī)中還存儲(chǔ)周知前綴;當(dāng)所述DNS地址為IPv4網(wǎng)絡(luò)中的IPv4 DNS服務(wù)器的地址時(shí),所述IPv6主機(jī)將所述 IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,具體包括所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭中IPv4源地址和所述IPv6 前綴組合,生成所述IPv6包頭中的IPv6源地址;以及所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中IPv4包頭中IPv4目的地址和所述周知 前綴組合,生成所述IPv6包頭中的IPv6目的地址;當(dāng)所述DNS地址為IPv6網(wǎng)絡(luò)中的IPv6 DNS服務(wù)器的地址時(shí),所述IPv6主機(jī)將所述 IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,具體包括所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭中IPv4源地址和所述IPv6 前綴組合,生成所述IPv6包頭中的IPv6源地址;以及所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中IPv4包頭中IPv6目的地址作為所述 IPv6包頭中的IPv6目的地址。
4.如權(quán)利要求3所述的方法,其特征在于,當(dāng)所述DNS地址為IPv4網(wǎng)絡(luò)中的IPv4DNS 服務(wù)器的地址時(shí),所述IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)發(fā)送所述IPv6DNS請(qǐng)求數(shù)據(jù)包到所述DNS 地址對(duì)應(yīng)的DNS服務(wù)器,具體包括所述IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)發(fā)送所述IPv6 DNS請(qǐng)求數(shù)據(jù)包給NAT設(shè)備; 所述NAT設(shè)備將所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭轉(zhuǎn)換為IPv4包頭后,傳送到 所述IPv4 DNS服務(wù)器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包之前,還包括 所述IPv4 DNS服務(wù)器生成IPv4 DNS回復(fù)消息數(shù)據(jù)包,返回給所述NAT設(shè)備; 所述NAT設(shè)備將所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭后,生 成IPv6 DNS回復(fù)消息數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述IPv6主機(jī);所述IPv6主機(jī)將所述IPv6 DNS回復(fù)消息數(shù)據(jù)包返回給所述IPv4應(yīng)用。
5.如權(quán)利要求4所述的方法,其特征在于,所述NAT設(shè)備將所述IPv6DNS請(qǐng)求數(shù)據(jù)包 中的IPv6包頭轉(zhuǎn)換為IPv4包頭,具體包括所述NAT設(shè)備將所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭中的IPv6源地址映射為公有IPv4地址,并在所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6目的地址中去掉所述周知前綴;或者所述NAT設(shè)備在所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭中的IPv6源地址中去掉所 述IPv6前綴,并在IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6目的地址中去掉所述周知前綴;所述NAT設(shè)備將所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,具體 包括當(dāng)所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中IPv4源地址為公有IPv4時(shí),將所述IPv4源地址和 所述IPv6前綴組合,生成所述IPv6包頭中的IPv6源地址;以及將所述IPv4DNS回復(fù)消息 數(shù)據(jù)包中的IPv4目的地址和所述周知前綴組合,生成所述IPv6包頭中的IPv6目的地址。
6.如權(quán)利要求3所述的方法,其特征在于,當(dāng)所述DNS地址為IPv6網(wǎng)絡(luò)中的IPv6DNS 服務(wù)器的地址時(shí),所述IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)直接發(fā)送所述IPv6 DNS請(qǐng)求數(shù)據(jù)包到所述 DNS地址對(duì)應(yīng)的IPv6 DNS服務(wù)器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包之前,還包括 IPv6 DNS服務(wù)器根據(jù)接收的IPv6 DNS請(qǐng)求數(shù)據(jù)包,判斷本地是否保存有通信對(duì)端的 IPv4地址,若是,則直接發(fā)送IPv6 DNS回復(fù)消息數(shù)據(jù)包到所述IPv6主機(jī);若否,所述IPv6 DNS服務(wù)器將所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭轉(zhuǎn)換為IPv4包 頭后,發(fā)送到IPv4 DNS服務(wù)器;并接收所述IPv4 DNS服務(wù)器返回的IPv4 DNS回復(fù)消息數(shù) 據(jù)包,將所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭后發(fā)送到所述IPv6 主機(jī);所述IPv6主機(jī)將所述IPv6 DNS回復(fù)消息數(shù)據(jù)包返回給所述IPv4應(yīng)用。
7.一種具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行數(shù)據(jù)通信的方法,其特征在于,包括 IPv4應(yīng)用生成發(fā)送給IPv4通信對(duì)端的IPv4應(yīng)用數(shù)據(jù)包;所述IPv6主機(jī)將所述IPv4應(yīng)用數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭后,通過(guò)IPv6 網(wǎng)絡(luò)發(fā)送到網(wǎng)絡(luò)地址翻譯NAT設(shè)備;所述NAT設(shè)備將從所述IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包中IPv6包頭轉(zhuǎn)換為IPv4包頭后,通過(guò) IPv4網(wǎng)絡(luò)發(fā)送到所述IPv4通信對(duì)端。
8.如權(quán)利要求7所述的方法,其特征在于,所述IPv6主機(jī)將所述IPv4應(yīng)用數(shù)據(jù)包中的 IPv4包頭轉(zhuǎn)換為IPv6包頭,具體包括所述IPv6主機(jī)將所述IPv4應(yīng)用數(shù)據(jù)包中的IPv4包頭中IPv4源地址和所述IPv6前 綴組合,生成所述IPv6包頭中的IPv6源地址;以及所述IPv6主機(jī)將所述IPv4應(yīng)用數(shù)據(jù)包中IPv4包頭中IPv4目的地址和所述周知前綴 組合,生成所述IPv6包頭中的IPv6目的地址。
9.如權(quán)利要求7所述的方法,其特征在于,所述NAT設(shè)備將IPv6包頭轉(zhuǎn)換為IPv4包 頭,具體包括所述NAT設(shè)備將所述IPv6包頭中的IPv6源地址映射為公有IPv4地址,并在所述IPv6 目的地址中去掉所述周知前綴;或者所述NAT設(shè)備在所述IPv6包頭中的IPv6源地址中去掉所述IPv6前綴,并在所述IPv6 目的地址中去掉所述周知前綴。
10.如權(quán)利要求7-9任一所述的方法,其特征在于,在所述IPv4通信對(duì)端通過(guò)所述IPv4網(wǎng)絡(luò)接收到所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包后,還包括所述IPv4通信對(duì)端通過(guò)IPv4網(wǎng)絡(luò)將返回給所述IPv6主機(jī)的IPv4數(shù)據(jù)包發(fā)送到所述 NAT設(shè)備;所述NAT設(shè)備將所述IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6包頭后,通過(guò)IPv6網(wǎng)絡(luò)傳送給所 述IPv6主機(jī);所述IPv6主機(jī)將接收的數(shù)據(jù)包返回給所述IPv4應(yīng)用。
11.如權(quán)利要求10所述的方法,其特征在于,所述NAT設(shè)備將所述IPv4數(shù)據(jù)包的包頭 轉(zhuǎn)換為IPv6包頭,具體包括所述NAT設(shè)備將IPv4數(shù)據(jù)包的IPv4包頭中的IPv4源地址和所述IPv6前綴組合,生 成所述IPv6包頭中的IPv6源地址;以及所述NAT設(shè)備將IPv4數(shù)據(jù)包的IPv4包頭中IPv4 目的地址和所述周知前綴組合,生成所述IPv6包頭中的IPv6目的地址;或者所述NAT設(shè)備根據(jù)存儲(chǔ)的映射狀態(tài)信息,查找出與所述IPv4數(shù)據(jù)包的IPv4包頭中的 IPv4源地址對(duì)應(yīng)的IPv6源地址;以及所述NAT設(shè)備將IPv4數(shù)據(jù)包的IPv4包頭中IPv4目 的地址和所述周知前綴組合,生成所述IPv6包頭中的IPv6目的地址。
12.—種具有IPv4應(yīng)用的IPv6主機(jī)獲取通信對(duì)端IPv4地址的方法,其特征在于,包括IPv4應(yīng)用根據(jù)獲取的IPv4地址及域名系統(tǒng)DNS IPv4地址,生成對(duì)應(yīng)的IPv4 DNS請(qǐng)求 數(shù)據(jù)包;所述IPv6主機(jī)將所述IPv4DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,生成 IPv6 DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述DNS IPv4地址對(duì)應(yīng)的DNS服務(wù)器;或者 由IPv4應(yīng)用根據(jù)獲取的IPv4地址及DNS IPv6地址,調(diào)用IPv4 Socket API函數(shù)發(fā)起 DNS請(qǐng)求;所述IPv6主機(jī)將調(diào)用IPv4 Socket API函數(shù)轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù), 生成IPv6 DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述DNS IPv6地址對(duì)應(yīng)的DNS服務(wù)器; 所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包,獲取進(jìn)行通信的IPv4 通信對(duì)端的IPv4地址。
13.如權(quán)利要求12所述的方法,其特征在于,IPv4應(yīng)用在生成對(duì)應(yīng)的IPv4DNS請(qǐng)求數(shù) 據(jù)包之前,或調(diào)用IPv4 Socket API函數(shù)發(fā)起DNS請(qǐng)求之前,還包括所述IPv6主機(jī)向IPv6網(wǎng)絡(luò)中的動(dòng)態(tài)主機(jī)配置協(xié)議DHCP服務(wù)器請(qǐng)求分配地址; 所述DHCP服務(wù)器向所述IPv6主機(jī)返回分配的IPv4地址及DNS IPv4地址或DNS IPv6 地址;以及所述IPv6主機(jī)判斷接收的DNS地址是DNS IPv4地址或DNS IPv6地址。
14.如權(quán)利要求13所述的方法,其特征在于,所述DHCP服務(wù)器還向所述IPv6主機(jī)返回 分配給所述IPv6主機(jī)的IPv6前綴;所述IPv6主機(jī)中還存儲(chǔ)周知前綴;當(dāng)所述DNS地址為IPv4網(wǎng)絡(luò)中的IPv4 DNS服務(wù)器的地址時(shí),所述IPv6主機(jī)將所述 IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,具體包括所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭中IPv4源地址和所述IPv6 前綴組合,生成所述IPv6包頭中的IPv6源地址;以及所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中IPv4包頭中IPv4目的地址和所述周知 前綴組合,生成所述IPv6包頭中的IPv6目的地址;當(dāng)所述DNS地址為IPv6網(wǎng)絡(luò)中的IPv6 DNS服務(wù)器的地址時(shí),所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,具體包括所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中的IPv4包頭中IPv4源地址和所述IPv6 前綴組合,生成所述IPv6包頭中的IPv6源地址;以及所述IPv6主機(jī)將所述IPv4 DNS請(qǐng)求數(shù)據(jù)包中IPv4包頭中IPv6目的地址作為所述 IPv6包頭中的IPv6目的地址。
15.如權(quán)利要求14所述的方法,其特征在于,當(dāng)所述DNS地址為IPv4網(wǎng)絡(luò)中的IPv4 DNS服務(wù)器的地址時(shí),所述IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)發(fā)送所述IPv6 DNS請(qǐng)求數(shù)據(jù)包到所述 DNS地址對(duì)應(yīng)的DNS服務(wù)器,具體包括所述IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)發(fā)送所述IPv6 DNS請(qǐng)求數(shù)據(jù)包給NAT設(shè)備; 所述NAT設(shè)備將所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭轉(zhuǎn)換為IPv4包頭后,傳送到 所述IPv4 DNS服務(wù)器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包之前,還包括 所述IPv4 DNS服務(wù)器生成IPv4 DNS回復(fù)消息數(shù)據(jù)包,返回給所述NAT設(shè)備; 所述NAT設(shè)備將所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭后,生 成IPv6 DNS回復(fù)消息數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到所述IPv6主機(jī);所述IPv6主機(jī)將所述IPv6 DNS回復(fù)消息數(shù)據(jù)包返回給所述IPv4應(yīng)用。
16.如權(quán)利要求15所述的方法,其特征在于,所述NAT設(shè)備將所述IPv6DNS請(qǐng)求數(shù)據(jù)包 中的IPv6包頭轉(zhuǎn)換為IPv4包頭,具體包括所述NAT設(shè)備將所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭中的IPv6源地址映射為公 有IPv4地址,并在所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6目的地址中去掉所述周知前綴;或 者所述NAT設(shè)備在所述IPv6DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭中的IPv6源地址中去掉所述 IPv6前綴,并在IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6目的地址中去掉所述周知前綴;所述NAT設(shè)備將所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭,具體 包括當(dāng)所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中IPv4源地址為公有IPv4時(shí),將所述IPv4源地址和 所述IPv6前綴組合,生成所述IPv6包頭中的IPv6源地址;以及將所述IPv4 DNS回復(fù)消息 數(shù)據(jù)包中的IPv4目的地址和所述周知前綴組合,生成所述IPv6包頭中的IPv6目的地址。
17.如權(quán)利要求14所述的方法,其特征在于,當(dāng)所述DNS地址為IPv6網(wǎng)絡(luò)中的IPv6 DNS服務(wù)器的地址時(shí),所述IPv6主機(jī)通過(guò)IPv6網(wǎng)絡(luò)直接發(fā)送所述IPv6 DNS請(qǐng)求數(shù)據(jù)包到 所述DNS地址對(duì)應(yīng)的IPv6 DNS服務(wù)器;所述IPv4應(yīng)用接收所述DNS服務(wù)器返回的DNS回復(fù)消息數(shù)據(jù)包之前,還包括 IPv6 DNS服務(wù)器根據(jù)接收的IPv6 DNS請(qǐng)求數(shù)據(jù)包,判斷本地是否保存有通信對(duì)端的 IPv4地址,若是,則直接發(fā)送IPv6 DNS回復(fù)消息數(shù)據(jù)包到所述IPv6主機(jī);若否,所述IPv6 DNS服務(wù)器將所述IPv6 DNS請(qǐng)求數(shù)據(jù)包中的IPv6包頭轉(zhuǎn)換為IPv4包 頭后,發(fā)送到IPv4 DNS服務(wù)器;并接收所述IPv4 DNS服務(wù)器返回的IPv4 DNS回復(fù)消息數(shù) 據(jù)包,將所述IPv4 DNS回復(fù)消息數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換為IPv6包頭后發(fā)送到所述IPv6 主機(jī);所述IPv6主機(jī)將所述IPv6 DNS回復(fù)消息數(shù)據(jù)包返回給所述IPv4應(yīng)用。
18.一種具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行數(shù)據(jù)通信的方法,其特征在于,包括 IPv4應(yīng)用調(diào)用IPv4 Socket API函數(shù)向所述IPv4通信對(duì)端發(fā)起應(yīng)用數(shù)據(jù)請(qǐng)求; 所述IPv6主機(jī)將調(diào)用IPv4 Socket API函數(shù)轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù),生成IPv6應(yīng)用數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到網(wǎng)絡(luò)地址翻譯NAT設(shè)備;所述NAT設(shè)備將從所述IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包中IPv6包頭轉(zhuǎn)換為IPv4包頭后,通過(guò) IPv4網(wǎng)絡(luò)發(fā)送到所述IPv4通信對(duì)端。
19.如權(quán)利要求18所述的方法,其特征在于,所述IPv6主機(jī)將調(diào)用IPv4S0CketAPI函 數(shù)轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù),生成IPv6應(yīng)用數(shù)據(jù)包,具體包括所述IPv6主機(jī)將調(diào)用的IPv4 Socket API函數(shù)中的IPv4源地址和所述IPv6前綴組 合,生成IPv6源地址;以及所述IPv6主機(jī)將將調(diào)用的IPv4 Socket API函數(shù)中的IPv4目的地址和所述周知前綴 組合,生成IPv6目的地址;所述IPv6主機(jī)根據(jù)生成的所述IPv6源地址和IPv6目的地址,轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù)生成IPv6應(yīng)用數(shù)據(jù)包。
20.如權(quán)利要求18所述的方法,其特征在于,所述NAT設(shè)備將IPv6包頭轉(zhuǎn)換為IPv4包 頭,具體包括所述NAT設(shè)備將所述IPv6包頭中的IPv6源地址映射為公有IPv4地址,并在所述IPv6 目的地址中去掉所述周知前綴;或者所述NAT設(shè)備在所述IPv6包頭中的IPv6源地址中去掉所述IPv6前綴,并在所述IPv6 目的地址中去掉所述周知前綴。
21.如權(quán)利要求18-20任一所述的方法,其特征在于,在所述IPv4通信對(duì)端通過(guò)所述 IPv4網(wǎng)絡(luò)接收到所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包后,還包括所述IPv4通信對(duì)端通過(guò)IPv4網(wǎng)絡(luò)將返回給所述IPv6主機(jī)的IPv4數(shù)據(jù)包發(fā)送到所述 NAT設(shè)備;所述NAT設(shè)備將所述IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6包頭后,通過(guò)IPv6網(wǎng)絡(luò)傳送給所 述IPv6主機(jī);所述IPv6主機(jī)將接收的數(shù)據(jù)包返回給所述IPv4應(yīng)用。
22.如權(quán)利要求21所述的方法,其特征在于,所述NAT設(shè)備將所述IPv4數(shù)據(jù)包的包頭 轉(zhuǎn)換為IPv6包頭,具體包括所述NAT設(shè)備將IPv4數(shù)據(jù)包的IPv4包頭中的IPv4源地址和所述IPv6前綴組合,生 成所述IPv6包頭中的IPv6源地址;以及所述NAT設(shè)備將IPv4數(shù)據(jù)包的IPv4包頭中IPv4 目的地址和所述周知前綴組合,生成所述IPv6包頭中的IPv6目的地址;或者所述NAT設(shè)備根據(jù)存儲(chǔ)的映射狀態(tài)信息,查找出與所述IPv4數(shù)據(jù)包的IPv4包頭中的 IPv4源地址對(duì)應(yīng)的IPv6源地址;以及所述NAT設(shè)備將IPv4數(shù)據(jù)包的IPv4包頭中IPv4目 的地址和所述周知前綴組合,生成所述IPv6包頭中的IPv6目的地址。
23.—種IPv6主機(jī),其特征在于,包括 IPv4應(yīng)用模塊,用于執(zhí)行IPv4相關(guān)應(yīng)用;包頭翻譯模塊,用于將所述IPv4應(yīng)用模塊發(fā)送的相關(guān)IPv4數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換 成IPv6包頭;地址翻譯模塊,用于提供IPv4地址與IPv6地址之間的映射。
24.如權(quán)利要求23所述的IPv6主機(jī),其特征在于所述包頭翻譯模塊具體用于劫持IPv4數(shù)據(jù)包中的IPv4包頭,將IPv4包頭中的IPv4 源地址和IPv4目的地址發(fā)送到所述地址翻譯模塊;接收所述地址翻譯模塊返回的IPv6源 地址和IPv6目的地址,形成IPv6包頭;所述地址翻譯模塊具體用于接收所述包頭翻譯模塊發(fā)送的IPv4源地址和IPv4目的 地址,將所述IPv4源地址與分配給IPv6主機(jī)的IPv6前綴組合,生成IPv6源地址,以及將 IPv4目的地址與存儲(chǔ)的周知前綴組合,生成IPv6目的地址,并返回給所述包頭翻譯模塊。
25.—種IPv6主機(jī),其特征在于,包括IPv4應(yīng)用模塊,用于執(zhí)行IPv4相關(guān)應(yīng)用;DNS判斷處理模塊,用于判斷接收的DNS地址是DNS IPv4地址或DNSIPv6地址;當(dāng)為 DNS IPv4地址時(shí),啟動(dòng)包頭翻譯模塊;當(dāng)為DNS IPv6地址,啟動(dòng)Socket翻譯模塊;包頭翻譯模塊,用于將所述IPv4應(yīng)用模塊發(fā)送的相關(guān)IPv4數(shù)據(jù)包中的IPv4包頭轉(zhuǎn)換 成IPv6包頭;Socket翻譯模塊,用于當(dāng)所述IPv4應(yīng)用模塊執(zhí)行IPv4相關(guān)應(yīng)用調(diào)用IPv4S0Cket API 函數(shù)時(shí),轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù);地址翻譯模塊,用于提供IPv4地址與IPv6地址之間的映射。
26.如權(quán)利要求25所述的IPv6主機(jī),其特征在于所述包頭翻譯模塊具體用于劫持IPv4數(shù)據(jù)包中的IPv4包頭,將IPv4包頭中的IPv4 源地址和IPv4目的地址發(fā)送到所述地址翻譯模塊;接收所述地址翻譯模塊返回的IPv6源 地址和IPv6目的地址,形成IPv6包頭;所述Socket翻譯模塊具體用于劫持IPv4 Socket API函數(shù)調(diào)用,將調(diào)用的IPv4 Socket API函數(shù)中的IPv4源地址和IPv4目的地址發(fā)送到所述地址翻譯模塊;接收所述地 址翻譯模塊返回的IPv6源地址和IPv6目的地址,轉(zhuǎn)換為調(diào)用IPv6 Socket API函數(shù);所述地址翻譯模塊具體用于接收所述Socket翻譯模塊發(fā)送的IPv4源地址和IPv4目 的地址,將所述IPv4源地址與分配給IPv6主機(jī)的IPv6前綴組合,生成IPv6源地址,以及 將IPv4目的地址與存儲(chǔ)的周知前綴組合,生成IPv6目的地址,并返回給所述Socket翻譯 模塊。
全文摘要
本發(fā)明涉及移動(dòng)通信領(lǐng)域,尤其涉及一種具有IPv4應(yīng)用的IPv6主機(jī)進(jìn)行通信方法,包括由IPv4應(yīng)用根據(jù)獲取的IPv4地址及DNS地址,生成對(duì)應(yīng)的IPv4DNS請(qǐng)求數(shù)據(jù)包;由IPv6主機(jī)將IPv4包頭轉(zhuǎn)換為IPv6包頭,生成IPv6DNS請(qǐng)求數(shù)據(jù)包,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到DNS服務(wù)器;所述IPv4應(yīng)用根據(jù)接收的DNS回復(fù)消息數(shù)據(jù)包,確定出進(jìn)行通信的IPv4通信對(duì)端的IPv4地址后,生成發(fā)送給所述IPv4通信對(duì)端的IPv4應(yīng)用數(shù)據(jù)包;由IPv6主機(jī)進(jìn)行包頭轉(zhuǎn)換后,通過(guò)IPv6網(wǎng)絡(luò)發(fā)送到NAT設(shè)備;由NAT設(shè)備將IPv6包頭轉(zhuǎn)換為IPv4包頭后,通過(guò)IPv4網(wǎng)絡(luò)發(fā)送到所述IPv4通信對(duì)端。本發(fā)明實(shí)現(xiàn)了具有IPv4應(yīng)用的IPv6主機(jī)與IPv4通信對(duì)端進(jìn)行通信,且大大減少了系統(tǒng)的處理負(fù)擔(dān),使得單點(diǎn)失效發(fā)生的概率下降,并方便了原有IPv4應(yīng)用向IPv6系統(tǒng)的平滑移植和過(guò)渡。
文檔編號(hào)H04L12/66GK101931658SQ20091008835
公開(kāi)日2010年12月29日 申請(qǐng)日期2009年6月26日 優(yōu)先權(quán)日2009年6月26日
發(fā)明者王曉云, 鄧輝, 陳剛, 魏冰, 黃曉慶 申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)公司