亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種通用的針對應(yīng)用層協(xié)議的IPv4/IPv6數(shù)據(jù)翻譯網(wǎng)關(guān)及方法

文檔序號:9690858閱讀:1426來源:國知局
一種通用的針對應(yīng)用層協(xié)議的IPv4/IPv6數(shù)據(jù)翻譯網(wǎng)關(guān)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種通用的針對應(yīng)用層協(xié)議的IPv4/IPv6 數(shù)據(jù)翻譯網(wǎng)關(guān)及方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)的發(fā)展,IPv4地址資源已經(jīng)枯竭,而下一代網(wǎng)絡(luò)協(xié)議IPv6是互聯(lián)網(wǎng)工 程任務(wù)組(Internet Engineering Task Force)建議的解決方案。但是IPv6不支持向后兼 容IPv4,所以IPv4向IPv6的過渡正在成為當(dāng)今互聯(lián)網(wǎng)發(fā)展的嚴(yán)峻挑戰(zhàn)。而且,由于基礎(chǔ)設(shè)施 的升級以及數(shù)據(jù)的迀移等多方面存在困難,對于互聯(lián)網(wǎng)內(nèi)容提供商(ICP)來說,向IPv6的轉(zhuǎn) 換不能在較短的時間內(nèi)完成。與此同時,絕大多數(shù)用戶操作系統(tǒng)都已經(jīng)支持IPv6協(xié)議,并且 IPv6用戶數(shù)量在迅速上漲。因為IPv4地址嚴(yán)重短缺,一些互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider)的新建網(wǎng)絡(luò)使用了IPv6單協(xié)議棧而不是IPv4/IPv6雙協(xié)議棧。因此,彌 補IPv4與IPv6之間的隔閡是網(wǎng)絡(luò)協(xié)議過渡時期的重要任務(wù)。
[0003] 為了給IPv6單棧用戶提供IPv4網(wǎng)絡(luò)服務(wù),一種常見手段是建立IPv4/IPv6翻譯網(wǎng) 關(guān)?,F(xiàn)在已經(jīng)有若干基于翻譯原理的實現(xiàn),比較常用的是由互聯(lián)網(wǎng)工程任務(wù)組設(shè)計的 NAT64。它將收到的每一個IPv6報文的協(xié)議頭替換成IPv4協(xié)議頭,并轉(zhuǎn)發(fā);反之亦然。IPv4與 IPv6的轉(zhuǎn)換映射關(guān)系記錄在內(nèi)部的動態(tài)映射表中。但很多應(yīng)用層協(xié)議的數(shù)據(jù)中也包含IP地 址等信息,這些信息可能被用來建立新的連接或者發(fā)起新的請求,例如:HTTP協(xié)議中的一個 用于傳輸HTML頁面的數(shù)據(jù)報文攜帶了一個帶有IP地址形式的URL,如果這個地址沒有被翻 譯,那么用戶將不能訪問該URL指向的資源。而對于其他應(yīng)用層協(xié)議來說,這樣的錯誤可能 會導(dǎo)致應(yīng)用程序崩潰。并且現(xiàn)有的翻譯網(wǎng)關(guān)不能支持很多私有應(yīng)用層協(xié)議,這也導(dǎo)致IPv4 向IPv6過渡困難。
[0004] 針對上述情況,一種有效的解決方法是實現(xiàn)一個應(yīng)用層的翻譯網(wǎng)關(guān),即應(yīng)用層網(wǎng) 關(guān)(Application Layer Gateway)。近年來,應(yīng)用層網(wǎng)關(guān)已經(jīng)成為解決應(yīng)用層協(xié)議問題的重 要手段。但實際上,開發(fā)一個用于IPv4/IPv6翻譯的應(yīng)用層網(wǎng)關(guān)是很困難的,主要因為:其 一,應(yīng)用層協(xié)議種類繁多,其對于協(xié)議格式的定義差別很大,針對每一種協(xié)議都設(shè)計一個翻 譯網(wǎng)關(guān)代價巨大,甚至很多互聯(lián)網(wǎng)內(nèi)容提供商使用私有協(xié)議,無法為其設(shè)計翻譯網(wǎng)關(guān);其 二,正確性不易保證,同樣的內(nèi)容可能有不同的語義,比如HTTP協(xié)議中發(fā)現(xiàn)了一個IP地址, 但其可能僅是頁面上顯示的文本,并不用來請求其他頁面,這使自動識別協(xié)議內(nèi)容的實現(xiàn) 變得很困難;其三,翻譯網(wǎng)關(guān)處理一個數(shù)據(jù)報文不僅要解析其內(nèi)容格式,還要對相應(yīng)的數(shù)據(jù) 進行修改,這對于性能提出了很高的要求,并且考慮到靈活性亦不能使用硬件實現(xiàn)。

【發(fā)明內(nèi)容】

[0005] 為了克服上述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種通用的針對應(yīng)用層協(xié) 議的IPv4/IPv6數(shù)據(jù)翻譯網(wǎng)關(guān)及方法,通過應(yīng)用層翻譯器對不同IP協(xié)議的報文進行翻譯,允 許IPv6用戶訪問基于IPv4的服務(wù),提供高效的IPv6與IPv4的互聯(lián)。
[0006] 為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
[0007] 一種通用的針對應(yīng)用層協(xié)議的IPv4/IPv6數(shù)據(jù)翻譯網(wǎng)關(guān),部署于ICP側(cè),將上行 IPv6數(shù)據(jù)報文翻譯成IPv4數(shù)據(jù)報文,將下行IPv4數(shù)據(jù)報文翻譯成IPv6數(shù)據(jù)報文,其翻譯內(nèi) 容包括IP數(shù)據(jù)報文頭部以及下行IPv4數(shù)據(jù)報文中包含的用于建立數(shù)據(jù)連接的IPv4地址。
[0008] 其中:網(wǎng)關(guān)體系中包括如下模塊:
[0009] 分類器,決定接收到的數(shù)據(jù)報文的應(yīng)用層協(xié)議類型:當(dāng)一個新的數(shù)據(jù)報文到來時, 分類器根據(jù)傳輸層協(xié)議及端口來決定該數(shù)據(jù)報文的應(yīng)用層協(xié)議類型,然后調(diào)用對應(yīng)的解析 器來解析該數(shù)據(jù)報文,如果根據(jù)上述條件有多個協(xié)議同時匹配成功,則輪流調(diào)用對應(yīng)的解 析器,直到有一個協(xié)議的解析器接受該數(shù)據(jù)報文;如果分類器判定該數(shù)據(jù)報文不需要處理 跨協(xié)議的翻譯,則跳過應(yīng)用層處理;
[0010] 解析器,分析應(yīng)用層數(shù)據(jù)并根據(jù)翻譯規(guī)則產(chǎn)生將會應(yīng)用于該數(shù)據(jù)報文的翻譯操 作;
[0011] 數(shù)據(jù)報文修改模塊,執(zhí)行解析器生成的翻譯操作;
[0012] TCP 管理器;
[0013] 流狀態(tài)管理器:與上述其它各模塊交互來獲取、提供以及更新各種狀態(tài)信息。
[0014] 所述解析器包括由生成引擎根據(jù)協(xié)議描述語言生成可執(zhí)行的應(yīng)用層協(xié)議解析程 序,其輸入為對于某應(yīng)用層協(xié)議格式的描述,輸出為能夠被數(shù)據(jù)報文處理引擎調(diào)用的可執(zhí) 行程序代碼,該代碼中包括處理引擎應(yīng)當(dāng)對該協(xié)議的數(shù)據(jù)報文做出的翻譯操作。
[0015] IPv4的地址為IPx,端口為PORTx,所述翻譯規(guī)則為:IPx,P0RTx->IPy,P0RTy;
[0016] 當(dāng)解析器找到了 IPv4的地址IPx和端口 PORTx,然后調(diào)用流管理器查找到用于替換 的IPv6的地址IPy和端口 PORTy,則根據(jù)翻譯規(guī)則產(chǎn)生相應(yīng)的操作,將IPx替換成IPy,將 PORTx 替換成 PORTy。
[0017] 所述數(shù)據(jù)報文處理引擎包含三個功能模塊:解析器、數(shù)據(jù)報文修改模塊以及TCP管 理器,數(shù)據(jù)報文處理引擎采用基于報文的數(shù)據(jù)處理機制,利用所述解析器對相應(yīng)協(xié)議數(shù)據(jù) 報文進行解析,找到所有需要翻譯操作的字段,包括其位置、長度,并執(zhí)行相應(yīng)的翻譯操作。
[0018] 所述協(xié)議描述語言結(jié)合了詞法分析和語法分析功能,并提供如下額外特性:自動 生成終結(jié)符的正則表達式,進而轉(zhuǎn)換成具體的可執(zhí)行代碼;提供常用的翻譯操作接口,使得 僅用一行命令來代表原來多行代碼才能實現(xiàn)的翻譯操作;以及自動添加異常處理操作,來 支持一定程度上的自動異?;謴?fù)。
[0019] 所述數(shù)據(jù)報文修改模塊中,所有的翻譯操作最終均轉(zhuǎn)換成文本替換操作。
[0020] 在所述數(shù)據(jù)報文修改模塊中,采用如下算法來加速修改操作的執(zhí)行過程:
[0021] 首先,將操作集根據(jù)操作開始位置升序排序,對于每個目標(biāo)位置,判斷是應(yīng)該選擇 來自操作的結(jié)果還是原始的文本,如果某一個操作的結(jié)果被選取了,新的數(shù)據(jù)將被拷貝到 目標(biāo)位置,同時原始文本的遍歷指針將跳至該操作數(shù)據(jù)的結(jié)尾。
[0022] 所述TCP管理器,一方面跟蹤更新TCP序號和ACK序號,以處理TCP報文的無序接收; 另一方面提供緩存能力,以處理TCP重傳和跨越數(shù)據(jù)報文的應(yīng)用層協(xié)議字段。
[0023] 本發(fā)明還提供了一種基于所述通用的針對應(yīng)用層協(xié)議的IPv4/IPv6數(shù)據(jù)翻譯網(wǎng)關(guān) 的方法,包括如下步驟:
[0024] 步驟1:用戶使用協(xié)議描述語言對其使用的應(yīng)用層協(xié)議進行代碼描述,包括協(xié)議頭 部格式及內(nèi)容格式,標(biāo)記出需要執(zhí)行翻譯操作的字段,并指定在該字段上執(zhí)行的操作;
[0025] 步驟2 :根據(jù)步驟1中用戶的代碼描述,生成可執(zhí)行的解析器子程序;首先,自動補 全代碼描述中缺失的規(guī)則,包括終結(jié)符的正則表達式以及將預(yù)定義的操作接口展開為C++ 代碼,補全后的代碼作為中間代碼;然后,將中間代碼分離為詞法規(guī)則和語法規(guī)則,分別送 往對應(yīng)的分析程序;最后,生成解析器的C++代碼,并集成到翻譯網(wǎng)關(guān)中供其他模塊調(diào)用;
[0026] 步驟3:當(dāng)一個報文到來時,首先被分類器接收并進行分類;分類是根據(jù)傳輸層協(xié) 議及端口號,如果能夠匹配某個應(yīng)用層協(xié)議的解析器,則調(diào)用該解析器執(zhí)行后續(xù)操作;如果 匹配到多個應(yīng)用層協(xié)議,則輪流調(diào)用其對應(yīng)的解析器,直到存在某解析器表示接受該數(shù)據(jù) 報文的格式;如果分類器判定該數(shù)據(jù)報文不需要處理跨協(xié)議的翻譯,則跳過應(yīng)用層處理;
[0027] 步驟4:由步驟3調(diào)用的解析器對傳入的數(shù)據(jù)報文的應(yīng)用層數(shù)據(jù)進行分析,找到所 有需要被翻譯的協(xié)議字段,包括其位置和長度,并查詢流管理器來獲取翻譯之后的值,并將 這些信息傳遞給數(shù)據(jù)報文修改模塊;
[0028] 其中,對于一個數(shù)據(jù)流的不同方向,將創(chuàng)建兩個獨立的解析器分別處理,當(dāng)一個報 文處理完畢而數(shù)據(jù)流未結(jié)束時,則解析器狀態(tài)被保存,等待下一個該數(shù)據(jù)流的報文到來之 后,再恢復(fù)運行;
[0029] 步驟5:數(shù)據(jù)報文修改模塊接收步驟4中解析器所傳遞的參數(shù),并執(zhí)行其中包含的 操作;
[0030]步驟6:將修改之后的報文重新封裝并轉(zhuǎn)發(fā),并在每接收到一個新的數(shù)據(jù)報文時重 復(fù)步驟3-6。
[0031] 本發(fā)明使得IPv6單棧用戶能夠訪問原有IPv4服務(wù),并能夠方便地支持多種應(yīng)用層 協(xié)議,從而有效實現(xiàn)IPv4與IPv6的互聯(lián)。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
[0032] 1、可以使用經(jīng)過特殊設(shè)計的語言來定義應(yīng)用層協(xié)議的格式,從而支持多種應(yīng)用層 協(xié)議,并且此語言簡單方便,降低了實際部署的復(fù)雜程度。
[0033] 2、針對每個單獨的數(shù)據(jù)報文進行解析和翻譯,并應(yīng)用了更高效的修改算法,相比 于針對數(shù)據(jù)流的操作在性能上有所提升。
【附圖說明】
[0034] 圖1是本發(fā)明通用的針對應(yīng)用層協(xié)議的IPv4/IPv6數(shù)據(jù)翻譯網(wǎng)關(guān)宏觀示意圖。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1