一種ipv4地址轉(zhuǎn)換方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種IPV4地址轉(zhuǎn)換方法及裝置。
【背景技術(shù)】
[0002]僵尸網(wǎng)絡(luò)具有攻擊方法簡單、影響較大、難以追查等特點(diǎn),使得分布式拒絕服務(wù)攻擊(DDoS,Distributed Denial of Service)得到快速壯大和日益泛濫。成千上萬主機(jī)組成的僵尸網(wǎng)絡(luò)為DDoS攻擊提供了所需的帶寬和主機(jī),形成了規(guī)模巨大的攻擊和網(wǎng)絡(luò)流量,對(duì)被攻擊網(wǎng)絡(luò)造成了極大的危害。隨著DDoS攻擊技術(shù)的不斷提高和發(fā)展,ISP (互聯(lián)網(wǎng)月艮務(wù)提供商,Internet Service Provider)、ICP(因特網(wǎng)內(nèi)容提供商,Internet ContentProvider)、IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心,Internet Data Center)等運(yùn)營商面臨的安全和運(yùn)營挑戰(zhàn)也不斷增多,運(yùn)營商必須在DDoS威脅影響關(guān)鍵業(yè)務(wù)和應(yīng)用之前,對(duì)流量進(jìn)行檢測(cè)并加以清洗,確保網(wǎng)絡(luò)正常穩(wěn)定的運(yùn)行以及業(yè)務(wù)的正常開展。
[0003]IP統(tǒng)計(jì)與分析是DDos檢測(cè)的核心技術(shù)之一,IPV4地址為一組由四個(gè)數(shù)字組成的字符串,而其在網(wǎng)絡(luò)上傳輸時(shí)會(huì)轉(zhuǎn)換成一個(gè)四字節(jié)的整數(shù),為了方便分析,經(jīng)常需要將從網(wǎng)絡(luò)上截獲到的報(bào)文里面的IP地址轉(zhuǎn)換成字符串。
[0004]目前的程序設(shè)計(jì)一般使用系統(tǒng)提供的API(應(yīng)用程序編程接口,Applicat1nProgramming Interface)來實(shí)現(xiàn)IP地址與字符串之間的互換,系統(tǒng)提供的API —般比較通用,但效率卻比較低下,在高速率報(bào)文和大流量的環(huán)境下,使用這些系統(tǒng)接口無疑是會(huì)大大的拖低了程序的整體性能。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例提供一種IPV4地址轉(zhuǎn)換方法及裝置,以解決現(xiàn)有技術(shù)中的技術(shù)問題。
[0006]第一方面,本發(fā)明實(shí)施例提供了一種IPV4地址轉(zhuǎn)換方法,包括:
[0007]初始化與IPV4地址的數(shù)字對(duì)應(yīng)的字符串?dāng)?shù)組;
[0008]依次從IPV4地址的四字節(jié)中提取一個(gè)字節(jié)對(duì)應(yīng)的數(shù)字,并獲取對(duì)應(yīng)的字符串,填充至轉(zhuǎn)換結(jié)果中與該字節(jié)對(duì)應(yīng)的位置,直至完成IPV4地址四字節(jié)的轉(zhuǎn)換,形成轉(zhuǎn)換后的地址字符串。
[0009]第二方面,本發(fā)明實(shí)施例還提供了一種IPV4地址轉(zhuǎn)換裝置,包括:
[0010]初始化模塊,用于初始化與IPV4地址的數(shù)字對(duì)應(yīng)的字符串?dāng)?shù)組;
[0011]轉(zhuǎn)換模塊,用于依次從IPV4地址的四字節(jié)中提取一個(gè)字節(jié)對(duì)應(yīng)的數(shù)字,并獲取對(duì)應(yīng)的字符串,填充至轉(zhuǎn)換結(jié)果中與該字節(jié)對(duì)應(yīng)的位置,直至完成IPV4地址四字節(jié)的轉(zhuǎn)換,形成轉(zhuǎn)換后的地址字符串。
[0012]本發(fā)明實(shí)施例提供的一種IPV4地址轉(zhuǎn)換方法,通過初始化一個(gè)全局的字符串?dāng)?shù)組與IPV4地址字節(jié)中的數(shù)字相對(duì)應(yīng),并建立數(shù)字與字符串的映射關(guān)系,根據(jù)IPV4每個(gè)字節(jié)所對(duì)應(yīng)的數(shù)字從字符串?dāng)?shù)組中把對(duì)應(yīng)的內(nèi)容直接復(fù)制到轉(zhuǎn)換結(jié)果,免去了內(nèi)存拷貝;另外,由于IPV4中組成IP地址的數(shù)字為O?255,所以可以使用少量字符串初始化加靜態(tài)賦值的方法,每次轉(zhuǎn)換僅需進(jìn)行4至8次賦值操作,操作簡潔明了且賦值次數(shù)少、計(jì)算簡單,大大地提升了 IP地址轉(zhuǎn)換成字符串的速度。
【附圖說明】
[0013]通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
[0014]圖1是本發(fā)明實(shí)施例一提供的一種IPV4地址轉(zhuǎn)換方法流程圖;
[0015]圖2是圖1所述一種IPV4地址轉(zhuǎn)換方法的具體過程流程圖;
[0016]圖3是本發(fā)明實(shí)施例二提供的一種IPV4地址轉(zhuǎn)換方法流程圖;
[0017]圖4是本發(fā)明實(shí)施例三提供的一種IPV4地址轉(zhuǎn)換裝置結(jié)構(gòu)框圖;
[0018]圖5是圖4所述一種IPV4地址轉(zhuǎn)換裝置的具體結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0019]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。可以理解的是,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0020]實(shí)施例一
[0021]圖1為本發(fā)明實(shí)施例一中的一種IPV4地址轉(zhuǎn)換方法流程圖,本實(shí)施例提供了一種IPV4地址轉(zhuǎn)換方法,該方法可以由任意執(zhí)行IPV4地址轉(zhuǎn)換的裝置來執(zhí)行,該裝置可以通過軟件/或硬件實(shí)現(xiàn)。如圖1所示,該方法包括:
[0022]S110、初始化與IPV4地址的數(shù)字對(duì)應(yīng)的字符串?dāng)?shù)組;
[0023]IPV4中規(guī)定IP地址長度為32,即有2~32-1 = 255個(gè)地址,所以這里初始化一個(gè)全局的長度為255字符串?dāng)?shù)組str,與IPV4地址的數(shù)字相對(duì)應(yīng)。將O至255的數(shù)字,分別設(shè)置對(duì)應(yīng)的字符串,且將設(shè)置的所述字符串形成字符串?dāng)?shù)組,并建立數(shù)字與字符串的映射關(guān)系,映射關(guān)系如下所示:
[0024]str [O] =,,0”,str [I] =,,1”,......str [10] =”10”,str [100] =”100”,......str [255] =”255”。
[0025]如此類推,這樣全局?jǐn)?shù)組只需初始化一次,就可以將IPV4中的所有地址進(jìn)行初始化設(shè)置,就可以在程序中一直使用。
[0026]S120、依次從IPV4地址的四字節(jié)中提取一個(gè)字節(jié)對(duì)應(yīng)的數(shù)字,并獲取對(duì)應(yīng)的字符串,填充至轉(zhuǎn)換結(jié)果中與該字節(jié)對(duì)應(yīng)的位置,直至完成IPV4地址四字節(jié)的轉(zhuǎn)換,形成轉(zhuǎn)換后的地址字符串。
[0027]參見圖2,優(yōu)選的,基于上述方案,該操作包括:
[0028]S121、對(duì)于待轉(zhuǎn)換的IPV4地址,設(shè)置指針指向所述IPV4地址的第一個(gè)字節(jié),作為當(dāng)前字節(jié);
[0029]優(yōu)選的,由于IPV4地址總共包含4個(gè)字節(jié),將左起第一個(gè)字節(jié)作為所述指針指向所述IPV4地址的第一個(gè)字節(jié),依次類推,將左起第四個(gè)字節(jié)作為所述IPV4地址的末尾。
[0030]S122、使用所述指針提取當(dāng)前字節(jié)的數(shù)字;[0031 ] S123、根據(jù)數(shù)字與字符串的映射關(guān)系,從初始化字符串?dāng)?shù)組中查詢獲取所述數(shù)字對(duì)應(yīng)的字符串;
[0032]S124、將查詢到的字符串填充至轉(zhuǎn)換結(jié)果中與該字節(jié)對(duì)應(yīng)的位置;
[0033]優(yōu)選的,由于IPV4地址總共包含4個(gè)字節(jié),所述字節(jié)在轉(zhuǎn)換結(jié)果中設(shè)置與之相對(duì)應(yīng)的4個(gè)位置,例如:第一個(gè)字節(jié)對(duì)應(yīng)位置一,第二個(gè)字節(jié)對(duì)應(yīng)位置二,第三個(gè)字節(jié)對(duì)應(yīng)位置三,第四個(gè)字節(jié)對(duì)應(yīng)位置四。
[0034]S125、移動(dòng)指針,判斷是否達(dá)到所述IPV4地址的末尾,若是,則在所述轉(zhuǎn)換結(jié)果的末尾設(shè)置結(jié)束符,形成地址字符串,若否,則將下一個(gè)字節(jié)作為當(dāng)前字節(jié),返回執(zhí)行所述提取當(dāng)前字節(jié)的數(shù)字的操作。
[0035]優(yōu)選的,如當(dāng)前字節(jié)為第四字節(jié),則在所述轉(zhuǎn)換結(jié)果ret的末尾設(shè)置結(jié)束符0,形成地址字符串并返回到所述轉(zhuǎn)換結(jié)果ret中,否則所述轉(zhuǎn)換結(jié)果ret當(dāng)前位置置為’.’,并返回執(zhí)行所述提取當(dāng)前字節(jié)的數(shù)字的操作。
[0036]本發(fā)明實(shí)施例一提供的IPV4地址轉(zhuǎn)換方法,通過初始化一個(gè)全局的字符串?dāng)?shù)組與IPV4地址字節(jié)中的數(shù)字相對(duì)應(yīng),并建立數(shù)字與字符串的映射關(guān)系,這樣全局?jǐn)?shù)組只需初始化一次,就可以將IPV4中的所有地址進(jìn)行初始化設(shè)置,就可以在程序中一直使用;另外,轉(zhuǎn)換IP地址時(shí),使用指針?biāo)惴?,使指針P指向該IP,使用指針P可以依次從四字節(jié)組成的IPV4整數(shù)里提取出每一個(gè)字節(jié),這樣就可以使用指針傳遞地址而不是實(shí)際數(shù)據(jù),既能提高傳輸速度,有可以節(jié)省大量內(nèi)存。
[0037]實(shí)施例二
[0038]圖3為本發(fā)明實(shí)施例二中的一種IPV4地址轉(zhuǎn)換方法流程圖,本實(shí)施例的技術(shù)方案以上述實(shí)施例一為基礎(chǔ),在實(shí)施例一的基礎(chǔ)上作進(jìn)一步的優(yōu)化。
[0039]進(jìn)一步的,在所述獲取對(duì)應(yīng)的字符串,填充至轉(zhuǎn)換結(jié)果中與該字節(jié)對(duì)應(yīng)的位置之前,根據(jù)所述數(shù)字的長度,確定對(duì)應(yīng)字符串的賦值類型。該流程具體包括:
[0040]S310、如果所述數(shù)字大于等于100,則將對(duì)應(yīng)的字符串拆分為一個(gè)字符型和一個(gè)短整型進(jìn)行賦值;
[0041]S320、如果所述數(shù)字小于100且大于等于10,則將對(duì)應(yīng)的字符串賦值為短整型;
[0042]S330、如果所述數(shù)字小于10,則將對(duì)應(yīng)的字符串賦值為字符型。
[0043]示例性的,