專利名稱:具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動通信領(lǐng)域,尤其涉及具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通 信的技術(shù)。
背景技術(shù):
隨著全球IPv4 (Internet Protocol version 4,第4版本互聯(lián)網(wǎng)協(xié)議)地址的耗 盡和業(yè)務(wù)對終端“永遠(yuǎn)在線”的要求,IPv6技術(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 過渡方案初期如何解決IPv6網(wǎng)絡(luò)中主機(jī)間IPv4應(yīng)用的訪問與互通將成為IPv6過渡中需 要考慮的一個重要問題。在現(xiàn)有技術(shù)中,SIIT算法提供了 IPv6應(yīng)用(IPv6 Application)通過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)大量訪問外部IPv4應(yīng)用(IPV4Applicati0n)的數(shù)據(jù)流 時,SIIT翻譯器需要對每個數(shù)據(jù)流進(jìn)行翻譯并保存其狀態(tài),這使得網(wǎng)絡(luò)系統(tǒng)的處理負(fù)擔(dān)很 大,容易造成系統(tǒng)中單點(diǎn)失效。并且,SIIT算法沒有提供IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)與IPv4 節(jié)點(diǎn)通信的方法。此外,現(xiàn)有技術(shù)的BIS算法提供了一種IPv4應(yīng)用訪問IPv6網(wǎng)絡(luò)中的IPv6節(jié)點(diǎn)的 方法。在該方法中,在IPv4應(yīng)用的主機(jī)中添加翻譯模塊,用于監(jiān)測TCP/IP模塊與網(wǎng)卡驅(qū)動 程序之間的數(shù)據(jù)流,并進(jìn)行相應(yīng)IPv4與IPv6數(shù)據(jù)包之間的相互翻譯。當(dāng)與其他IPv6主機(jī) 進(jìn)行通信時,在這臺主機(jī)內(nèi)部給對應(yīng)IPv6主機(jī)分配一些IPv4地址,這些地址只在這臺主機(jī) 內(nèi)部使用。而且,這種分配過程是通過DNS協(xié)議自動來完成的。這樣,IPv4應(yīng)用的主機(jī)可 以通過翻譯模塊將發(fā)送給對端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)用的場景中,有可能出現(xiàn)IPv4應(yīng)用需要通過IPv6網(wǎng)絡(luò)訪問另一個IPv4應(yīng)用,那 么BIS算法并沒有針對這種場景給出解決方案?,F(xiàn)有技術(shù)的另一個方案中,提出在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)用通過IPv6網(wǎng)絡(luò)訪問另一個IPv4應(yīng)用的問題。但是,由于需要 在IPv4和IPv6網(wǎng)絡(luò)邊緣上部署專門的邊界轉(zhuǎn)換網(wǎng)關(guān)設(shè)備來實(shí)現(xiàn)數(shù)據(jù)包的轉(zhuǎn)換,導(dǎo)致網(wǎng)絡(luò) 系統(tǒng)的處理負(fù)擔(dān)很大,容易造成單點(diǎn)失效的問題。而且,雖然該技術(shù)方案可以實(shí)現(xiàn)IPv4應(yīng) 用通過IPv6網(wǎng)絡(luò)訪問IPv4網(wǎng)絡(luò)中的IPv4節(jié)點(diǎn),但是該方案僅限于對端為IPv4節(jié)點(diǎn)(或 IPv4應(yīng)用主機(jī))的場景;也就是說,IPv4應(yīng)用在進(jìn)行通信時認(rèn)為對端必然是IPv4節(jié)點(diǎn)或 IPv4應(yīng)用主機(jī),如果對端時是IPv6節(jié)點(diǎn)則會造成無法通信或通信錯誤,大大限制了 IPv4應(yīng)
5用通過IPv6網(wǎng)絡(luò)通信的靈活性。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種具有IPv4應(yīng)用的主機(jī)及其通過IPv6網(wǎng)絡(luò)進(jìn)行通信的方 法和系統(tǒng),用以實(shí)現(xiàn)IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)既可以與IPv6應(yīng)用進(jìn)行通信,也可以與另一 個IPv4應(yīng)用進(jìn)行通信,提高IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)通信的靈活性。一種具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的方法,包括當(dāng)主機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,所述主機(jī)攔截該信息;并確定本次應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型;若所述類型屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv4數(shù)據(jù) 包,將所述IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送;若所述類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv6數(shù)據(jù) 包,并將生成的IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。一種具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的系統(tǒng),包括第一主機(jī),用于在本機(jī)的IPv4應(yīng)用向第二主機(jī)發(fā)送信息時,若確定本次應(yīng)用會話 相關(guān)的DNS回復(fù)信息的類型屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv4 數(shù)據(jù)包;并將生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送; 若確定所述類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv6數(shù)據(jù)包,并 將生成的IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。一種具有IPv4應(yīng)用的主機(jī),包括類型確定模塊,用于在本機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,確定本次應(yīng)用會 話相關(guān)的DNS回復(fù)信息的類型;數(shù)據(jù)包生成模塊,用于在所述類型確定模塊確定所述DNS回復(fù)信息的類型屬于 IPv4業(yè)務(wù)的DNS回復(fù)信息類型時,將所述信息封裝為IPv4數(shù)據(jù)包;以及在所述類型確定模 塊確定所述DNS回復(fù)信息的類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型時,將所述信息封裝為 IPv6數(shù)據(jù)包;第一包頭轉(zhuǎn)換模塊,用于將所述數(shù)據(jù)包生成模塊生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換 為IPv6數(shù)據(jù)包的包頭;數(shù)據(jù)包發(fā)送模塊,用于將所述第一包頭轉(zhuǎn)換模塊轉(zhuǎn)換后的數(shù)據(jù)包以及所述數(shù)據(jù)包 生成模塊生成的IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。本發(fā)明實(shí)施例的主機(jī)由于根據(jù)本次應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型先判斷 對端所能處理的數(shù)據(jù)包的類型,生成相應(yīng)數(shù)據(jù)包進(jìn)行發(fā)送,從而使得具有IPv4應(yīng)用的通信 對端以及具有IPv6應(yīng)用的通信對端都可以處理主機(jī)發(fā)送的數(shù)據(jù)包并獲取信息,達(dá)到IPv4 應(yīng)用通過IPv6網(wǎng)絡(luò)既可以與IPv6應(yīng)用進(jìn)行通信,也可以與另一個IPv4應(yīng)用進(jìn)行通信的目 的,提高IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)通信的靈活性。進(jìn)一步,本發(fā)明實(shí)施例由于主機(jī)將IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭, 使得該數(shù)據(jù)包可以通過IPv6網(wǎng)絡(luò)傳輸,在IPv6與IPv4網(wǎng)絡(luò)的邊界處由NAT設(shè)備將數(shù)據(jù)包 的包頭又轉(zhuǎn)換回IPv4數(shù)據(jù)包的包頭,從而形成完整的IPv4數(shù)據(jù)包,使之可以通過IPv4網(wǎng) 絡(luò)發(fā)送到IPv4節(jié)點(diǎn)或者具有IPv4應(yīng)用的主機(jī)。由于NAT設(shè)備僅是對數(shù)據(jù)包的包頭部分進(jìn)
6行轉(zhuǎn)換,而不必涉及對傳輸層頭和數(shù)據(jù)部分進(jìn)行轉(zhuǎn)換,大大減少了系統(tǒng)的處理負(fù)擔(dān),使得單 點(diǎn)失效發(fā)生的概率下降。并且,主機(jī)還可以根據(jù)DNS回復(fù)信息的類型判斷通信對端是IPv4 還是IPv6節(jié)點(diǎn),從而發(fā)送相應(yīng)的數(shù)據(jù)包,具有更大的使用靈活性。
圖1為本發(fā)明實(shí)施例的具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的系統(tǒng)示意 圖;圖2a、2b為本發(fā)明實(shí)施例的具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的方法 流程示意圖;圖3為本發(fā)明實(shí)施例的具有IPv4應(yīng)用的主機(jī)獲取DNS回復(fù)信息的方法流程示意 圖;圖4為本發(fā)明實(shí)施例的具有IPv4應(yīng)用的主機(jī)的內(nèi)部結(jié)構(gòu)框圖。
具體實(shí)施例方式本發(fā)明實(shí)施例在主機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,主機(jī)判斷本次應(yīng)用會 話相關(guān)的DNS (Domain Name System,域名系統(tǒng))回復(fù)信息的類型;若DNS回復(fù)信息的類型 為屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型(A類型),則將所述信息封裝為IPv4數(shù)據(jù)包,并將 生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭,對于數(shù)據(jù)包的傳輸層頭和數(shù)據(jù)部分 則不進(jìn)行轉(zhuǎn)換,之后將數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送,經(jīng)過包頭轉(zhuǎn)換的數(shù)據(jù)包即可通過IPv6網(wǎng) 絡(luò)進(jìn)行發(fā)送了 ;若判斷DNS回復(fù)信息的類型為屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型(AAAA類 型),則主機(jī)將信息封裝為IPv6數(shù)據(jù)包后,直接通過IPv6網(wǎng)絡(luò)發(fā)送。這樣,具有IPv4應(yīng)用 的通信對端以及具有IPv6應(yīng)用的通信對端都可以處理主機(jī)發(fā)送的數(shù)據(jù)包并獲取信息,達(dá) 到IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)既可以與IPv6應(yīng)用進(jìn)行通信,也可以與另一個IPv4應(yīng)用進(jìn)行 通信的目的,提高IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)通信的靈活性。在IPv6和IPv4網(wǎng)絡(luò)邊緣上的NAT設(shè)備在通過IPv6網(wǎng)絡(luò)接收到數(shù)據(jù)包后,將該數(shù) 據(jù)包的包頭換成IPv4數(shù)據(jù)包頭后即得到IPv4數(shù)據(jù)包,并通過IPv4網(wǎng)絡(luò)向通信對端發(fā)送 IPv4數(shù)據(jù)包。這樣,設(shè)置在IPv6和IPv4網(wǎng)絡(luò)邊緣上的NAT設(shè)備不必對整個數(shù)據(jù)包(包括 傳輸層頭和數(shù)據(jù)部分)進(jìn)行轉(zhuǎn)換,只需對數(shù)據(jù)包的包頭進(jìn)行轉(zhuǎn)換,減小了網(wǎng)絡(luò)系統(tǒng)的處理 負(fù)擔(dān),使得單點(diǎn)失效發(fā)生的概率大大下降。反之亦然,NAT (Network Address Translation,網(wǎng)絡(luò)地址翻譯)設(shè)備在通過IPv4 網(wǎng)絡(luò)接收到數(shù)據(jù)包后,將該數(shù)據(jù)包的包頭換成IPv6數(shù)據(jù)包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送給具有 IPv4應(yīng)用的主機(jī),該主機(jī)將接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后即得到IPv4 數(shù)據(jù)包傳遞到IPv4應(yīng)用進(jìn)行處理。下面結(jié)合附圖詳細(xì)說明本發(fā)明實(shí)施例的具體技術(shù)方案。在如圖1所示的具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的系統(tǒng)中,包括與 IPv6網(wǎng)絡(luò)相連的主機(jī)A101、NAT設(shè)備102、與IPv4網(wǎng)絡(luò)相連的主機(jī)B103、與IPv6網(wǎng)絡(luò)相連 的主機(jī)C105。其中,主機(jī)AlOl中具有IPv4應(yīng)用,主機(jī)AlOl與IPv6網(wǎng)絡(luò)相連,通過IPv6網(wǎng)絡(luò)發(fā) 送或接收數(shù)據(jù)包。
NAT設(shè)備102設(shè)置于IPv6網(wǎng)絡(luò)與IPv4網(wǎng)絡(luò)的邊界處,用以將IPv6網(wǎng)絡(luò)的數(shù)據(jù)包 向IPv4網(wǎng)絡(luò)轉(zhuǎn)發(fā),或者將IPv4網(wǎng)絡(luò)的數(shù)據(jù)包向IPv6網(wǎng)絡(luò)轉(zhuǎn)發(fā)。主機(jī)B103為具有IPv4應(yīng)用的主機(jī),其可以是純IPv4節(jié)點(diǎn),也可以是具有IPv4/ IPv6的雙棧節(jié)點(diǎn)。主機(jī)B103通過IPv4網(wǎng)絡(luò)接收IPv4數(shù)據(jù)包、并通過IPv4網(wǎng)絡(luò)發(fā)送IPv4 數(shù)據(jù)包。主機(jī)C105為具有IPv6應(yīng)用的主機(jī),其可以是純IPv6節(jié)點(diǎn),也可以是具有IPv4/ IPv6的雙棧節(jié)點(diǎn)。主機(jī)C105通過IPv6網(wǎng)絡(luò)接收IPv6數(shù)據(jù)包、并通過IPv6網(wǎng)絡(luò)發(fā)送IPv6 數(shù)據(jù)包。主機(jī)AlOl通過IPv6網(wǎng)絡(luò)與主機(jī)B103或者主機(jī)C105進(jìn)行通信的過程如圖2a所 示,包括如下步驟S201、主機(jī)AlOl的IPv4應(yīng)用向通信對端發(fā)送信息。S202、主機(jī)AlOl攔截IPv4應(yīng)用發(fā)送的信息,并確定本次應(yīng)用會話相關(guān)的DNS回復(fù) 信息的類型;若確定DNS回復(fù)信息的類型為屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型,執(zhí)行步驟 S203 ;否則,執(zhí)行步驟S220(如圖2b所示)。DNS回復(fù)信息的類型反映了業(yè)務(wù)類型,也反映了通信對端的地址類型,以及通信對 端處理的數(shù)據(jù)包的類型。通常,屬于IPv4業(yè)務(wù)的DNS回復(fù)信息中,其類型標(biāo)識為A,被稱為 A類型的DNS回復(fù)信息。A類型的DNS回復(fù)信息表明通信對端的地址為IPv4地址、通信對端 處理的數(shù)據(jù)包為IPv4數(shù)據(jù)包;而對于屬于IPv6業(yè)務(wù)的DNS回復(fù)信息,其類型標(biāo)識為AAAA, 被稱為AAAA類型的DNS回復(fù)信息,AAAA類型的DNS回復(fù)信息表明通信對端的地址為IPv6 地址、通信對端處理的數(shù)據(jù)包為IPv6數(shù)據(jù)包。主機(jī)AlOl可以根據(jù)DNS回復(fù)信息的類型確定通信對端處理的數(shù)據(jù)包的類型,以此 來決定從主機(jī)IPv4應(yīng)用所發(fā)出的數(shù)據(jù)包是否要進(jìn)行SocketAPI函數(shù)的轉(zhuǎn)換。也就是說,主 機(jī)AlOl的IPv4應(yīng)用既可以與IPv4主機(jī)通信,也可以與IPv6主機(jī)通信,具有更大的靈活性。S203、主機(jī)AlOl將IPv4應(yīng)用發(fā)送的信息封裝為IPv4數(shù)據(jù)包。若主機(jī)AlOl判斷DNS回復(fù)信息為A類型,表明通信對端處理的數(shù)據(jù)包為IPv4數(shù) 據(jù)包(假設(shè)該通信對端為主機(jī)B103),則主機(jī)AlOl根據(jù)IPv4應(yīng)用發(fā)送的信息生成IPv4數(shù) 據(jù)包。具體為,主機(jī)AlOl根據(jù)IPv4應(yīng)用需要發(fā)送給對端通信設(shè)備主機(jī)B103的信息,調(diào)用
API (Application ProgrammingInterface, j^MISfM^ Π ) Μι· (Socket API 數(shù)),并根據(jù) TCP(TransmissionControl Protocol,傳輸控制協(xié)議)/UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)/IP (Internet Protocol,互聯(lián)網(wǎng)協(xié)議)v4協(xié)議生成IPv4數(shù)據(jù) 包。S204、主機(jī)AlOl將生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過 IPv6網(wǎng)絡(luò)發(fā)送。為了能夠使生成的數(shù)據(jù)包在IPv6網(wǎng)絡(luò)中傳輸,主機(jī)AlOl將生成的IPv4數(shù)據(jù)包的 包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭。具體為,主機(jī)AlOl將生成的IPv4數(shù)據(jù)包包頭的格式轉(zhuǎn)換 為IPv6數(shù)據(jù)包的包頭格式,并且將包頭中的本機(jī)和通信對端(主機(jī)B103)的IPv4地址轉(zhuǎn) 換為IPv6地址,而對于數(shù)據(jù)包的傳輸層頭和數(shù)據(jù)部分都不進(jìn)行轉(zhuǎn)換。地址轉(zhuǎn)換的具體方法為在主機(jī)AlOl中維護(hù)了一個保存了 IPv4地址與IPv6地址 對應(yīng)關(guān)系的映射表;IPv4到IPv6地址間的轉(zhuǎn)換采用了無狀態(tài)的地址翻譯方式,實(shí)現(xiàn)主機(jī)向
8IPv6網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包的封裝。其具體方法是在IPv4地址前增加96位的IPv6前綴,形成 IPv6地址。IPv6前綴屬于周知前綴(well-knowprefix),可由網(wǎng)絡(luò)運(yùn)營商加以指定。根據(jù) 該對應(yīng)關(guān)系表將包頭中的本機(jī)和通信對端的IPv4地址轉(zhuǎn)換為對應(yīng)的IPv6地址。如果,主機(jī)AlOl的IPv4應(yīng)用需要發(fā)送信息的通信對端為具有IPv4應(yīng)用的主機(jī), 且也在IPv6網(wǎng)絡(luò)中,則主機(jī)AlOl發(fā)送的經(jīng)過包頭轉(zhuǎn)換后的數(shù)據(jù)包將直接發(fā)送到該通信對 端,該通信對端將接收的數(shù)據(jù)包進(jìn)行包頭轉(zhuǎn)換后(即將包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭),獲得 IPv4數(shù)據(jù)包,之后,對IPv4數(shù)據(jù)包進(jìn)行解析得到信息。如果,主機(jī)AlOl的IPv4應(yīng)用需要發(fā)送信息的通信對端為具有IPv4應(yīng)用的主機(jī), 但是位于IPv4網(wǎng)絡(luò)中,則采用如下方法步驟將數(shù)據(jù)包傳送到通信對端S205、NAT設(shè)備102 (具體可以是NAT64設(shè)備)接收主機(jī)AlOl發(fā)送的數(shù)據(jù)包。NAT設(shè)備102通過IPv6網(wǎng)絡(luò)接收到主機(jī)AlOl發(fā)送的數(shù)據(jù)包。S206、NAT設(shè)備102將接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后,通過 IPv4網(wǎng)絡(luò)轉(zhuǎn)發(fā)該數(shù)據(jù)包。在NAT設(shè)備102中將接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭時,將包頭中 IPv6地址轉(zhuǎn)換為對應(yīng)的IPv4地址;具體為,將IPv6的前綴去掉,即可得到對應(yīng)的IPv4地址。NAT設(shè)備102在將接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后,通過IPv4網(wǎng) 絡(luò)轉(zhuǎn)發(fā)該數(shù)據(jù)包。也就是說,NAT設(shè)備102不用對整個數(shù)據(jù)包進(jìn)行轉(zhuǎn)換,不必涉及對數(shù)據(jù)包 的傳輸層頭和數(shù)據(jù)部分進(jìn)行轉(zhuǎn)換,其只要對包頭部分進(jìn)行轉(zhuǎn)換就可以得到IPv4數(shù)據(jù)包,從 而通過IPv4網(wǎng)絡(luò)轉(zhuǎn)發(fā)該IPv4數(shù)據(jù)包。這樣,相比于現(xiàn)有技術(shù)中設(shè)置于IPv6和IPv4網(wǎng)絡(luò) 邊界的設(shè)備,對數(shù)據(jù)包的解析、轉(zhuǎn)換工作大大減少了,減小了系統(tǒng)的處理負(fù)擔(dān),從而可以盡 量避免單點(diǎn)失效。S207、主機(jī)B103通過IPv4網(wǎng)絡(luò)接收到NAT設(shè)備102轉(zhuǎn)發(fā)的數(shù)據(jù)包。主機(jī)B103通過IPv4網(wǎng)絡(luò)接收到NAT設(shè)備102轉(zhuǎn)發(fā)的數(shù)據(jù)包后,對IPv4數(shù)據(jù)包進(jìn) 行解析獲得信息,并將獲得的信息傳送到主機(jī)B103的IPv4應(yīng)用,主機(jī)B103的IPv4應(yīng)用對 接收的信息進(jìn)行處理,或者返回信息。之后,主機(jī)B103根據(jù)IPv4應(yīng)用返回的信息生成IPv4數(shù)據(jù)包,并向主機(jī)AlOl返回 數(shù)據(jù)包的過程與上述過程類似,為其逆過程S208、主機(jī)B103通過IPv4網(wǎng)絡(luò)向主機(jī)AlOl返回IPv4數(shù)據(jù)包。S209、NAT設(shè)備102將從IPv4網(wǎng)絡(luò)接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包 頭后,通過IPv6網(wǎng)絡(luò)轉(zhuǎn)發(fā)該數(shù)據(jù)包。具體為,NAT設(shè)備102將接收的主機(jī)B103通過IPv4網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包的包頭轉(zhuǎn)換 為IPv6數(shù)據(jù)包的包頭,并根據(jù)存儲的映射表將包頭中的IPv4地址換為對應(yīng)的IPv6地址; 之后,NAT設(shè)備102通過IPv6網(wǎng)絡(luò)轉(zhuǎn)發(fā)轉(zhuǎn)換后的數(shù)據(jù)包。NAT設(shè)備可存儲預(yù)先規(guī)定的IPv6 前綴信息,以此來構(gòu)成NAT設(shè)備102的映射表中的IPv6地址和IPv4地址的對應(yīng)關(guān)系。NAT 設(shè)備102查找其存儲的映射表,將包頭中的IPv4地址轉(zhuǎn)換為對應(yīng)的IPv6地址。S210、主機(jī)AlOl通過IPv6網(wǎng)絡(luò)接收到數(shù)據(jù)包后,將數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù) 據(jù)包的包頭。主機(jī)AlOl通過IPv6網(wǎng)絡(luò)接收到數(shù)據(jù)包后,將該數(shù)據(jù)包的IPv6數(shù)據(jù)包包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭,從而獲得IPv4數(shù)據(jù)包。在包頭轉(zhuǎn)換過程中,主機(jī)AlOl將包頭中的IPv6 地址前綴去掉,轉(zhuǎn)換為對應(yīng)的IPv4地址,并判斷數(shù)據(jù)包包頭中攜帶的通信對端的IPv6地址 的前綴是否為周知前綴。如果不是(即表明通信對端為具有IPv4應(yīng)用的主機(jī)),那么從數(shù) 據(jù)包的應(yīng)用數(shù)據(jù)中直接提取IPv4應(yīng)用信息發(fā)送給IPv4應(yīng)用。S211、主機(jī)AlOl將獲得的IPv4數(shù)據(jù)包進(jìn)行解析后得到的信息傳遞到IPv4應(yīng)用。主機(jī)AlOl對獲得的IPv4數(shù)據(jù)包進(jìn)行解析得到相關(guān)信息,并將得到的信息傳送到 IPv4應(yīng)用進(jìn)行處理。由此,實(shí)現(xiàn)兩個IPv4應(yīng)用(主機(jī)AlOl的IPv4應(yīng)用與主機(jī)B103的 IPv4應(yīng)用)通過IPv6網(wǎng)絡(luò)的雙向通信。S220、主機(jī)AlOl將IPv4應(yīng)用發(fā)送的信息封裝為IPv6數(shù)據(jù)包。若主機(jī)AlOl判斷DNS回復(fù)信息的類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型(即為 AAAA類型的DNS回復(fù)信息),表明通信對端處理的數(shù)據(jù)包為IPv6數(shù)據(jù)包(假設(shè)該通信對端 為主機(jī)C105),則主機(jī)AlOl根據(jù)IPv4應(yīng)用發(fā)送的信息生成IPv6數(shù)據(jù)包。具體為,主機(jī)AlOl采用Socket翻譯方法主機(jī)AlOl將用于封裝數(shù)據(jù)包的相關(guān) IPv4Socket API函數(shù)轉(zhuǎn)換為IPv6Socket API函數(shù),并將相關(guān)IPv4SocketAPI函數(shù)的參數(shù)轉(zhuǎn) 換為IPv6Socket API函數(shù)的參數(shù)后,通過調(diào)用IPv6SocketAPI函數(shù)實(shí)現(xiàn)將IPv4應(yīng)用發(fā)送 的信息封裝為IPv6數(shù)據(jù)包。S221、主機(jī)AlOl將IPv6數(shù)據(jù)包直接通過IPv6網(wǎng)絡(luò)發(fā)送。S222、主機(jī)C105通過IPv6網(wǎng)絡(luò)接收到數(shù)據(jù)包后,解析該IPv6數(shù)據(jù)包獲取信息。S223、主機(jī)C105還可以將返回的信息封裝為IPv6數(shù)據(jù)包后,通過IPv6網(wǎng)絡(luò)發(fā)送 到主機(jī)AlOl。S224、主機(jī)AlOl接收到IPv6數(shù)據(jù)包后,解析該數(shù)據(jù)包獲取信息,返回該信息給 IPv4應(yīng)用。具體為,主機(jī)AlOl接收到數(shù)據(jù)包后,將數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭,在 包頭轉(zhuǎn)換過程中,判斷數(shù)據(jù)包包頭中攜帶的通信對端的IPv6地址的前綴是否為周知前綴。 如果是(即表明通信對端為具有IPv6應(yīng)用的主機(jī)),那么從數(shù)據(jù)包的應(yīng)用數(shù)據(jù)中提取IPv6 應(yīng)用信息后轉(zhuǎn)換為IPv4應(yīng)用信息發(fā)送給IPv4應(yīng)用。上述的DNS回復(fù)信息可以通過如下方法得到,如圖3所示,具體包括如下步驟S301、主機(jī)AlOl的IPv4應(yīng)用發(fā)起DNS請求。假設(shè)主機(jī)AlOl的IPv4應(yīng)用在與通信對端通信前,需要獲取通信對端的IP地址, 則主機(jī)AlOl的IPv4應(yīng)用根據(jù)該需求發(fā)起DNS請求。S302、主機(jī)AlOl根據(jù)IPv4應(yīng)用發(fā)起的DNS請求生成DNS請求報文。具體為,主機(jī)AlOl根據(jù)IPv4應(yīng)用發(fā)起的DNS請求生成屬于IPv4業(yè)務(wù)的DNS請求 報文和屬于IPv6業(yè)務(wù)的DNS請求報文。通常而言,屬于IPv4業(yè)務(wù)的DNS請求報文中,其類 型標(biāo)識為A,被稱為A類型的DNS請求報文;屬于IPv6業(yè)務(wù)的DNS請求報文中,其類型標(biāo)識 為AAAA,被稱為A類型的DNS請求報文。主機(jī)AlOl調(diào)用IPv4的DNS Socket API生成IPv4的DNS請求報文(即A類型的 DNS請求報文);并采用Socket翻譯方法,將相關(guān)IPv4的DNS SocketAPI函數(shù)轉(zhuǎn)換為IPv6 的DNS Socket API函數(shù),并將相關(guān)IPv4Socket API函數(shù)的參數(shù)轉(zhuǎn)換為IPv6參數(shù)后,通過 調(diào)用IPv6的DNS Socket API函數(shù)生成IPv6的DNS請求報文(即AAAA類型的DNS請求報
10文)。生成A類型的DNS請求報文后,主機(jī)AlOl將A類型的DNS請求報文的數(shù)據(jù)包包頭 轉(zhuǎn)換為IPv6數(shù)據(jù)包包頭,以便于A類型的DNS請求報文通過IPv6網(wǎng)絡(luò)進(jìn)行傳輸。主機(jī)AlOl 將A類型的DNS請求報文的數(shù)據(jù)包包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包包頭的方法與上述步驟S204相 同,此處不再贅述。S303、主機(jī)AlOl將AAAA類型的DNS請求報文以及經(jīng)過轉(zhuǎn)換后的A類型的DNS請 求報文通過IPv6網(wǎng)絡(luò)發(fā)送。假設(shè)主機(jī)AlOl的通信對端的IP地址為IPv4地址(例如主機(jī)B103),則IPv4網(wǎng)絡(luò) 中的DNS服務(wù)器將收到A類型的DNS請求報文,并返回A類型的DNS回復(fù)信息,具體過程如 步驟S304-S310所述;若主機(jī)AlOl的通信對端的IP地址為IPv6地址(例如主機(jī)C105), 則IPv6網(wǎng)絡(luò)中的DNS服務(wù)器將收到AAAA類型的DNS請求報文,并返回AAAA類型的DNS回 Μ, π 息。主機(jī)AlOl若接收到AAAA類型的DNS回復(fù)信息,其對AAAA類型的DNS回復(fù)信息處 理的方式同上述步驟S224中所述的對IPv6數(shù)據(jù)包的處理方式,主機(jī)AlOl在對報文進(jìn)行解 析后即可確定DNS回復(fù)信息的類型,并進(jìn)行存儲,作為上述步驟S202的判斷依據(jù)。此外,為 了能夠?qū)AAA類型的DNS回復(fù)信息進(jìn)行解析,得到的信息提供給IPv4應(yīng)用,主機(jī)AlOl 將把解析信息中的IPv6地址翻譯為對應(yīng)的IPv4地址(翻譯方法與前述相同),并將AAAA 類型標(biāo)識轉(zhuǎn)變?yōu)锳類型標(biāo)識后提供給IPv4應(yīng)用。S304、NAT設(shè)備102接收主機(jī)AlOl發(fā)送的A類DNS請求報文后,將接收的DNS請 求報文的數(shù)據(jù)包包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭。包頭的具體轉(zhuǎn)換方法與上述步驟S206相同,此處不再贅述。在NAT設(shè)備102對 DNS請求報文進(jìn)行數(shù)據(jù)包包頭轉(zhuǎn)換后,DNS請求報文仍是A類型的DNS請求報文。S305、NAT設(shè)備102將轉(zhuǎn)換后的報文通過IPv4網(wǎng)絡(luò)發(fā)送到DNS服務(wù)器104。S306、DNS服務(wù)器104返回包含主機(jī)B103的IPv4地址的DNS回復(fù)信息。DNS服務(wù)器104根據(jù)接收的DNS請求報文,明確主機(jī)AlOl請求主機(jī)B103的IPv4 地址,則返回包含主機(jī)B103的IPv4地址的DNS回復(fù)信息,該DNS回復(fù)信息為A類DNS回復(fù) fn息οS307、NAT設(shè)備102將DNS服務(wù)器104返回的A類DNS回復(fù)信息的數(shù)據(jù)包包頭轉(zhuǎn) 換為IPv6數(shù)據(jù)包包頭。具體的轉(zhuǎn)換方法與上述步驟S209相同,此處不再贅述。S308、NAT設(shè)備102將經(jīng)過包頭轉(zhuǎn)換的A類DNS回復(fù)信息通過IPv6網(wǎng)絡(luò)發(fā)送到主 機(jī)AlOl。S309、主機(jī)AlOl通過IPv6網(wǎng)絡(luò)接收到A類DNS回復(fù)信息后,將接收的DNS回復(fù)信 息的數(shù)據(jù)包包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭,得到基于IPv4的DNS回復(fù)信息。S310、主機(jī)AlOl對基于IPv4的DNS回復(fù)信息進(jìn)行解析后,可以確定該DNS回復(fù)信 息的類型為A類,并將主機(jī)B103的IPv4地址傳送給IPv4應(yīng)用。IPv4應(yīng)用可以根據(jù)DNS回 復(fù)中的通信對端(主機(jī)B103)的IPv4地址向通信對端發(fā)送信息。主機(jī)A在確定DNS回復(fù) 信息的類型后,記錄DNS回復(fù)信息的類型,作為上述步驟S202的判斷依據(jù)。如果,DNS請求報文中所請求的地址所對應(yīng)的通信對端為具有IPv6應(yīng)用的主機(jī), 則主機(jī)AlOl將接收到AAAA類DNS回復(fù)信息。主機(jī)AlOl將AAAA類DNS回復(fù)信息的數(shù)據(jù)包
11包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭,并通過數(shù)據(jù)包中攜帶的類型標(biāo)識判斷出該DNS回復(fù)信息是 AAAA類型的,則記錄DNS回復(fù)信息的類型,作為上述步驟S202的判斷依據(jù)。本領(lǐng)域技術(shù)人員可以理解,雖然上述說明中,為便于理解,對方法的步驟采用了順 序性描述,但是應(yīng)當(dāng)指出,對于上述步驟的順序并不作嚴(yán)格限制。上述主機(jī)AlOl中的內(nèi)部框圖,如圖4所示,包括類型確定模塊401、數(shù)據(jù)包生成 模塊402、第一包頭轉(zhuǎn)換模塊403、數(shù)據(jù)包發(fā)送模塊404。 類型確定模塊401用于在本機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,確定本次應(yīng)用 會話相關(guān)的DNS回復(fù)信息的類型。數(shù)據(jù)包生成模塊402用于在類型確定模塊401確定所述DNS回復(fù)信息A類型時, 將所述信息封裝為IPv4數(shù)據(jù)包;以及在所述類型確定模塊確定所述DNS回復(fù)信息為AAAA 類型時,將所述信息封裝為IPv6數(shù)據(jù)包后直接發(fā)送給數(shù)據(jù)包發(fā)送模塊404。第一包頭轉(zhuǎn)換模塊403用于將數(shù)據(jù)包生成模塊402生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn) 換為IPv6數(shù)據(jù)包的包頭。包頭的轉(zhuǎn)換方法與前述相同,此處不再贅述。數(shù)據(jù)包發(fā)送模塊404用于將第一包頭轉(zhuǎn)換模塊403轉(zhuǎn)換后的數(shù)據(jù)包以及數(shù)據(jù)包生 成模塊402生成的IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。數(shù)據(jù)包生成模塊402具體可以包括IPv4數(shù)據(jù)包生成單元,用于在類型確定模塊401確定所述DNS回復(fù)信息為A類型 時,將所述信息封裝為IPv4數(shù)據(jù)包。Socket API翻譯單元,用于在所述類型確定模塊確定所述DNS回復(fù)信息為AAAA類 型時,將用于封裝數(shù)據(jù)包的相關(guān)IPv4Socket API函數(shù)轉(zhuǎn)換為IPv6S0Cket API函數(shù),并將相 關(guān)IPv4Socket API函數(shù)的參數(shù)轉(zhuǎn)換為IPv6參數(shù)后,通過調(diào)用IPv6Socket API函數(shù)將所述 信息封裝為IPv6數(shù)據(jù)包后直接發(fā)送給數(shù)據(jù)包發(fā)送模塊404。主機(jī)AlOl還可以包括數(shù)據(jù)包接收模塊405、第二包頭轉(zhuǎn)換模塊406、數(shù)據(jù)包解析 模塊407。數(shù)據(jù)包接收模塊405用于通過所述IPv6網(wǎng)絡(luò)接收數(shù)據(jù)包。數(shù)據(jù)包接收模塊405 通過IPv6網(wǎng)絡(luò)接收的數(shù)據(jù)包有可能是具有IPv6應(yīng)用的主機(jī)發(fā)送的IPv6數(shù)據(jù)包,也可能是 由具有IPv4應(yīng)用的主機(jī)發(fā)送的、經(jīng)過包頭轉(zhuǎn)換的IPv4數(shù)據(jù)包(即將包頭轉(zhuǎn)換為IPv6數(shù)據(jù) 包包頭的IPv4數(shù)據(jù)包)。第二包頭轉(zhuǎn)換模塊406用于將數(shù)據(jù)包接收模塊405接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為 IPv4數(shù)據(jù)包包頭(將IPv6數(shù)據(jù)包包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭的方法與前述相同);并在 轉(zhuǎn)換包頭的過程中,根據(jù)接收的數(shù)據(jù)包的包頭中攜帶的通信對端的IPv6地址的前綴,判斷 該數(shù)據(jù)包是否為IPv6數(shù)據(jù)包。具體的,如果通信對端為具有IPv4應(yīng)用的主機(jī),其發(fā)送的是 IPv4數(shù)據(jù)包,在經(jīng)過NAT設(shè)備將IPv4數(shù)據(jù)包包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包包頭后,發(fā)送到主機(jī) AlOl ;那么,主機(jī)AlOl接收的該數(shù)據(jù)包的包頭中攜帶的通信對端的IPv6地址的前綴將屬于 周知前綴。第二包頭轉(zhuǎn)換模塊406在判斷出接收的數(shù)據(jù)包包頭中攜帶的通信對端的IPv6地 址的前綴屬于周知前綴時,可以確定該數(shù)據(jù)包是由具有IPv4應(yīng)用的主機(jī)發(fā)送的,其應(yīng)用數(shù) 據(jù)部分?jǐn)y帶的是IPv4應(yīng)用信息;否則,第二包頭轉(zhuǎn)換模塊406確定該數(shù)據(jù)包是由具有IPv6 應(yīng)用的主機(jī)發(fā)送的,其應(yīng)用數(shù)據(jù)部分?jǐn)y帶的是IPv6應(yīng)用信息。
12
第二包頭轉(zhuǎn)換模塊406將經(jīng)過包頭轉(zhuǎn)換的數(shù)據(jù)包以及判斷結(jié)果發(fā)送給數(shù)據(jù)包解 析模塊407。數(shù)據(jù)包解析模塊407根據(jù)判斷結(jié)果,對第二包頭轉(zhuǎn)換模塊406發(fā)送的數(shù)據(jù)包進(jìn)行 解析,得到IPv4應(yīng)用信息發(fā)送給IPv4應(yīng)用。具體為,若第二包頭轉(zhuǎn)換模塊406的判斷結(jié)果 為數(shù)據(jù)包包頭中攜帶的通信對端的IPv6地址的前綴屬于周知前綴,那么,數(shù)據(jù)包解析模塊 407直接從該數(shù)據(jù)包的應(yīng)用數(shù)據(jù)中提取IPv4應(yīng)用信息發(fā)送給IPv4應(yīng)用;否則,數(shù)據(jù)包解析 模塊407從該數(shù)據(jù)包的應(yīng)用數(shù)據(jù)中提取出IPv6應(yīng)用信息,并將IPv6應(yīng)用信息轉(zhuǎn)換為IPv4 應(yīng)用信息后發(fā)送給IPv4應(yīng)用。進(jìn)一步,主機(jī)AlOl還可以包括DNS請求控制模塊409。DNS請求控制模塊409在本機(jī)的IPv4應(yīng)用發(fā)起獲取通信對端的地址的DNS請求 后,控制所述數(shù)據(jù)包生成模塊402根據(jù)IPv4應(yīng)用發(fā)起的DNS請求生成AAAA類型的DNS請 求報文(即IPv6數(shù)據(jù)包)和A類型的DNS請求報文(即IPv4數(shù)據(jù)包)。數(shù)據(jù)包生成模塊402在生成AAAA類型的DNS請求報文后,由于該報文是IPv6數(shù) 據(jù)包,因此,直接發(fā)送到數(shù)據(jù)包發(fā)送模塊404 ;在生成A類型的DNS請求報文后,由于該報文 是IPv4數(shù)據(jù)包,因此,將A類型的DNS請求報文發(fā)送到第一包頭轉(zhuǎn)換模塊403。第一包頭轉(zhuǎn)換模塊403將所述A類型的DNS請求報文的數(shù)據(jù)包包頭轉(zhuǎn)換為IPv6 數(shù)據(jù)包包頭后,將轉(zhuǎn)換后的A類型的DNS請求報文發(fā)送到數(shù)據(jù)包發(fā)送模塊404。數(shù)據(jù)包發(fā)送模塊404將通過IPv6網(wǎng)絡(luò)發(fā)送AAAA類型的DNS請求報文和轉(zhuǎn)換后的 A類型的DNS請求報文。數(shù)據(jù)包接收模塊405可以通過IPv6網(wǎng)絡(luò)接收到返回的DNS回復(fù)信息,并發(fā)送給第 二包頭轉(zhuǎn)換模塊406。第二包頭轉(zhuǎn)換模塊406進(jìn)一步還用于若判斷從數(shù)據(jù)包接收模塊405接收的數(shù)據(jù)包 為DNS回復(fù)信息的數(shù)據(jù)包,則將該數(shù)據(jù)包包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭,并判斷該DNS回復(fù) 信息是AAA類型的DNS回復(fù)信息還是A類型的DNS回復(fù)信息;將DNS回復(fù)信息的判斷結(jié)果 發(fā)送給DNS請求控制模塊409。DNS請求控制模塊409根據(jù)第二包頭轉(zhuǎn)換模塊406發(fā)送的DNS回復(fù)信息的判斷結(jié) 果存儲所述DNS回復(fù)信息的類型;以及類型確定模塊401具體可以根據(jù)所述DNS請求控制模塊409存儲的信息確定本次 應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型。此外,第二包頭轉(zhuǎn)換模塊406還將經(jīng)過包頭轉(zhuǎn)換的DNS回復(fù)信息以及判斷結(jié)果發(fā) 送給數(shù)據(jù)包解析模塊407。若第二包頭轉(zhuǎn)換模塊406判斷結(jié)果為DNS回復(fù)信息是A類型,則數(shù)據(jù)包解析模塊 407直接將DNS回復(fù)信息發(fā)送給IPv4應(yīng)用;否則,數(shù)據(jù)包解析模塊407將DNS回復(fù)信息轉(zhuǎn) 換為A類型的DNS回復(fù)信息后發(fā)送給IPv4應(yīng)用。IPv4應(yīng)用將對A類型的DNS回復(fù)信息進(jìn) 行處理。本發(fā)明實(shí)施例的主機(jī)由于根據(jù)本次應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型先判斷 對端所能處理的數(shù)據(jù)包的類型,生成相應(yīng)數(shù)據(jù)包進(jìn)行發(fā)送,從而使得具有IPv4應(yīng)用的通信 對端以及具有IPv6應(yīng)用的通信對端都可以處理主機(jī)發(fā)送的數(shù)據(jù)包并獲取信息,達(dá)到IPv4 應(yīng)用通過IPv6網(wǎng)絡(luò)既可以與IPv6應(yīng)用進(jìn)行通信,也可以與另一個IPv4應(yīng)用進(jìn)行通信的目
13的,提高IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)通信的靈活性。進(jìn)一步,本發(fā)明實(shí)施例由于主機(jī)將IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭, 使得該數(shù)據(jù)包可以通過IPv6網(wǎng)絡(luò)傳輸,在IPv6與IPv4網(wǎng)絡(luò)的邊界處由NAT設(shè)備將數(shù)據(jù)包 的包頭又轉(zhuǎn)換回IPv4數(shù)據(jù)包的包頭,從而形成完整的IPv4數(shù)據(jù)包,使之可以通過IPv4網(wǎng) 絡(luò)發(fā)送到IPv4節(jié)點(diǎn)或者具有IPv4應(yīng)用的主機(jī)。由于NAT設(shè)備僅是對數(shù)據(jù)包的包頭部分進(jìn) 行轉(zhuǎn)換,而不必涉及對傳輸層頭和數(shù)據(jù)部分進(jìn)行轉(zhuǎn)換,大大減少了系統(tǒng)的處理負(fù)擔(dān),使得單 點(diǎn)失效發(fā)生的概率下降。并且,主機(jī)還可以根據(jù)DNS回復(fù)信息的類型判斷通信對端是IPv4 還是IPv6節(jié)點(diǎn),從而發(fā)送相應(yīng)的數(shù)據(jù)包,具有更大的使用靈活性。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以 通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中,如 ROM/RAM、磁碟、光盤等。還可以理解的是,附圖或?qū)嵤├兴镜难b置結(jié)構(gòu)僅僅是示意性的,表示邏輯結(jié) 構(gòu)。其中作為分離部件顯示的模塊可能是或者可能不是物理上分開的,作為模塊顯示的部 件可能是或者可能不是物理模塊。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人 員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng) 視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的方法,其特征在于,包括當(dāng)主機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,所述主機(jī)攔截該信息;并確定本次應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型;若所述類型屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv4數(shù)據(jù)包,將所述IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送;若所述類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。
2.如權(quán)利要求1所述的方法,其特征在于,在所述主機(jī)將所述信息封裝為IPv4數(shù)據(jù)包, 將所述IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送之后,還包括NAT設(shè)備通過所述IPv6網(wǎng)絡(luò)接收到所述主機(jī)發(fā)送的數(shù)據(jù)包,并將接收的數(shù)據(jù)包的包頭 轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后,通過IPv4網(wǎng)絡(luò)轉(zhuǎn)發(fā);所述通信對端通過所述IPv4網(wǎng)絡(luò)接收到所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包,解析該數(shù)據(jù)包獲 取所述主機(jī)發(fā)送的信息。
3.如權(quán)利要求1所述的方法,其特征在于,將所述信息封裝為IPv6數(shù)據(jù)包,具體包括 將用于封裝數(shù)據(jù)包的相關(guān)IPv4S0Cket API函數(shù)轉(zhuǎn)換為IPv6S0Cket API函數(shù),并調(diào)用IPv6SocketAPI函數(shù)將所述信息封裝為IPv6數(shù)據(jù)包。
4.如權(quán)利要求1-3任一所述的方法,其特征在于,在所述通信對端通過所述IPv4網(wǎng)絡(luò) 接收到所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包后,還包括所述通信對端通過IPv4網(wǎng)絡(luò)返回IPv4數(shù)據(jù)包;所述NAT設(shè)備通過所述IPv4網(wǎng)絡(luò)接收到返回的IPv4數(shù)據(jù)包后,將該數(shù)據(jù)包的包頭轉(zhuǎn) 換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)轉(zhuǎn)發(fā);所述主機(jī)通過所述IPv6網(wǎng)絡(luò)接收到所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包后,將接收的數(shù)據(jù)包的 包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后得到IPv4數(shù)據(jù)包,解析該IPv4數(shù)據(jù)包獲取所述通信對端 返回的信息。
5.如權(quán)利要求1-3任一所述的方法,其特征在于,所述DNS回復(fù)信息類型的確定方法, 具體包括所述主機(jī)的IPv4應(yīng)用發(fā)起DNS請求;所述主機(jī)根據(jù)所述DNS請求生成屬于IPv4業(yè)務(wù)的DNS請求報文和屬于IPv6業(yè)務(wù)的 DNS請求報文,并將屬于IPv4業(yè)務(wù)的DNS請求報文的數(shù)據(jù)包包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包包頭 后,將屬于IPv6業(yè)務(wù)的DNS請求報文和經(jīng)過包頭轉(zhuǎn)換后的屬于IPv4業(yè)務(wù)的DNS請求報文 通過IPv6網(wǎng)絡(luò)發(fā)送;所述主機(jī)接收到DNS回復(fù)信息后,解析該DNS回復(fù)信息確定其類型。
6.一種具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的系統(tǒng),其特征在于,包括 第一主機(jī),用于在本機(jī)的IPv4應(yīng)用向第二主機(jī)發(fā)送信息時,若確定本次應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv4數(shù) 據(jù)包;并將生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送;若 確定所述類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv6數(shù)據(jù)包,并將 生成的IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括NAT設(shè)備,用于通過所述IPv6網(wǎng)絡(luò)接收所述第一主機(jī)發(fā)送的經(jīng)過包頭轉(zhuǎn)換的數(shù)據(jù)包; 并將接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后,通過IPv4網(wǎng)絡(luò)轉(zhuǎn)發(fā);第二主機(jī),用于通過所述IPv4網(wǎng)絡(luò)接收所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包,并解析該數(shù)據(jù)包 獲取所述第一主機(jī)發(fā)送的信息。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述第二主機(jī)還用于通過IPv4網(wǎng)絡(luò)向所述第一主機(jī)返回IPv4數(shù)據(jù)包;以及所述NAT設(shè)備還用于通過所述IPv4網(wǎng)絡(luò)接收所述第二主機(jī)返回的IPv4數(shù)據(jù)包,并將 該數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包的包頭后,通過IPv6網(wǎng)絡(luò)轉(zhuǎn)發(fā);以及所述第一主機(jī)還用于通過所述IPv6網(wǎng)絡(luò)接收到所述NAT設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包后,將接收 的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包的包頭后得到IPv4數(shù)據(jù)包,解析該IPv4數(shù)據(jù)包獲取所 述第二主機(jī)返回的信息。
9.如權(quán)利要求6-8任一所述的系統(tǒng),其特征在于,所述第一主機(jī)還用于在本機(jī)的IPv4應(yīng)用發(fā)起獲取所述第二主機(jī)的地址的DNS請求后, 根據(jù)所述DNS請求生成屬于IPv6業(yè)務(wù)的DNS請求報文通過IPv6網(wǎng)絡(luò)發(fā)送;并且,所述主機(jī) 還生成屬于IPv4業(yè)務(wù)的DNS請求報文,在更換該報文的數(shù)據(jù)包包頭為IPv6數(shù)據(jù)包包頭后, 通過IPv6網(wǎng)絡(luò)發(fā)送;在接收到DNS回復(fù)信息后,解析該DNS回復(fù)信息確定DNS回復(fù)信息的 類型。
10.一種具有IPv4應(yīng)用的主機(jī),其特征在于,包括類型確定模塊,用于在本機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,確定本次應(yīng)用會話相 關(guān)的DNS回復(fù)信息的類型;數(shù)據(jù)包生成模塊,用于在所述類型確定模塊確定所述DNS回復(fù)信息的類型屬于IPv4業(yè) 務(wù)的DNS回復(fù)信息類型時,將所述信息封裝為IPv4數(shù)據(jù)包;以及在所述類型確定模塊確定 所述DNS回復(fù)信息的類型屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型時,將所述信息封裝為IPv6 數(shù)據(jù)包;第一包頭轉(zhuǎn)換模塊,用于將所述數(shù)據(jù)包生成模塊生成的IPv4數(shù)據(jù)包的包頭轉(zhuǎn)換為 IPv6數(shù)據(jù)包的包頭;數(shù)據(jù)包發(fā)送模塊,用于將所述第一包頭轉(zhuǎn)換模塊轉(zhuǎn)換后的數(shù)據(jù)包以及所述數(shù)據(jù)包生成 模塊生成的IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。
11.如權(quán)利要求10所述的主機(jī),其特征在于,還包括數(shù)據(jù)包接收模塊,用于通過所述IPv6網(wǎng)絡(luò)接收數(shù)據(jù)包;第二包頭轉(zhuǎn)換模塊,用于將所述數(shù)據(jù)包接收模塊接收的數(shù)據(jù)包的包頭轉(zhuǎn)換為IPv4數(shù) 據(jù)包包頭,并在包頭轉(zhuǎn)換過程中根據(jù)包頭中攜帶的通信對端的IPv6地址的前綴,判斷該數(shù) 據(jù)包是否為IPv6數(shù)據(jù)包;數(shù)據(jù)包解析模塊,用于根據(jù)所述第二包頭轉(zhuǎn)換模塊的判斷結(jié)果對其發(fā)送的數(shù)據(jù)包進(jìn)行 解析,得到IPv4應(yīng)用信息后發(fā)送給IPv4應(yīng)用。
12.如權(quán)利要求11所述的主機(jī),其特征在于,還包括DNS請求控制模塊,用于在本機(jī)的IPv4應(yīng)用發(fā)起獲取所述通信對端的地址的DNS請求 后,控制所述數(shù)據(jù)包生成模塊生成屬于IPv4業(yè)務(wù)的DNS請求報文和屬于IPv6業(yè)務(wù)的DNS 請求報文;以及3所述第二包頭轉(zhuǎn)換模塊還用于若判斷從所述數(shù)據(jù)包接收模塊接收的數(shù)據(jù)包為DNS回 復(fù)信息的數(shù)據(jù)包,則將該數(shù)據(jù)包包頭轉(zhuǎn)換為IPv4數(shù)據(jù)包包頭,并判斷該DNS回復(fù)信息的類 型,將DNS回復(fù)信息的判斷結(jié)果發(fā)送給所述DNS請求控制模塊進(jìn)行存儲;所述類型確定模塊具體用于根據(jù)所述DNS請求控制模塊存儲的信息確定所述本次應(yīng) 用會話的DNS回復(fù)信息的類型。
全文摘要
本發(fā)明涉及移動通信領(lǐng)域,尤其涉及具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的技術(shù)。本發(fā)明提供了一種具有IPv4應(yīng)用的主機(jī)通過IPv6網(wǎng)絡(luò)進(jìn)行通信的系統(tǒng)和方法,包括當(dāng)主機(jī)的IPv4應(yīng)用向通信對端發(fā)送信息時,主機(jī)攔截該信息;并確定本次應(yīng)用會話相關(guān)的DNS回復(fù)信息的類型屬于IPv4業(yè)務(wù)的DNS回復(fù)信息類型時,將所述信息封裝為IPv4數(shù)據(jù)包,并將其包頭轉(zhuǎn)換為IPv6數(shù)據(jù)包包頭后,通過IPv6網(wǎng)絡(luò)發(fā)送;若確定屬于IPv6業(yè)務(wù)的DNS回復(fù)信息類型,則將所述信息封裝為IPv6數(shù)據(jù)包通過IPv6網(wǎng)絡(luò)發(fā)送。由于根據(jù)DNS回復(fù)信息的類型先判斷對端所能處理的數(shù)據(jù)包的類型,生成相應(yīng)數(shù)據(jù)包發(fā)送,使得IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)既可以與IPv6應(yīng)用、也可以與IPv4應(yīng)用進(jìn)行通信,從而提高IPv4應(yīng)用通過IPv6網(wǎng)絡(luò)通信的靈活性。
文檔編號H04L29/12GK101909041SQ20091008588
公開日2010年12月8日 申請日期2009年6月3日 優(yōu)先權(quán)日2009年6月3日
發(fā)明者王曉云, 鄧輝, 陳剛, 魏冰, 黃曉慶 申請人:中國移動通信集團(tuán)公司