本發(fā)明涉及報文檢測領(lǐng)域,特別涉及一種報文檢測內(nèi)容的確定方法及裝置。
背景技術(shù):
多封裝報文是指除了采用因特網(wǎng)互聯(lián)協(xié)議(Internet Protocol,IP)進(jìn)行封裝之外,還采用了其他封裝協(xié)議進(jìn)行封裝的報文,例如還采用通用路由封裝(Generic Routing Encapsulation,GRE)、第二層隧道協(xié)議(Layer 2Tunneling Protocol,L2TP)、多協(xié)議標(biāo)簽交換(Multiprotocol Label Switching,MPLS)等協(xié)議中的一種或多種進(jìn)行封裝的報文。
現(xiàn)有技術(shù)中,針對于多封裝報文,在對其進(jìn)行深度報文檢測(Deep Packet Inspection,DPI)處理時,通常先從報文中確定DPI處理的目標(biāo)檢測內(nèi)容,即內(nèi)層IP報文部分,再針對確定的檢測內(nèi)容進(jìn)行DPI處理。
具體地,通過如下方式來確定DPI處理的目標(biāo)檢測內(nèi)容:先檢測多封裝報文中外層報文所采用的封裝協(xié)議,當(dāng)檢測出封裝協(xié)議之后,根據(jù)該協(xié)議報文頭的特點,對報文內(nèi)容進(jìn)行相應(yīng)的偏移,以便去掉該封裝協(xié)議的封裝頭部分,從而獲得DPI的目標(biāo)檢測內(nèi)容。
但是,檢測封裝協(xié)議的過程將耗費(fèi)一部分設(shè)備資源。并且,如果報文采用了除IP協(xié)議封裝之外的兩種以上的封裝技術(shù),那么需要進(jìn)行多次封裝協(xié)議的檢測,其處理復(fù)雜度將大大增加,也將耗費(fèi)檢測設(shè)備大量的資源。例如,對于MPLS封裝,需要檢測以太網(wǎng)的Type是否為MPLS,此處檢測將耗費(fèi)一部分資源。如果MPLS封裝的IP后還有一層GRE封裝,那么設(shè)備需要再做一次協(xié)議匹配。如果報文中采用了兩層隧道封裝,則處理復(fù)雜度再翻倍。并且,如果設(shè)備中沒有更新相應(yīng)的封裝協(xié)議,則對報文所采用的其他封裝協(xié)議進(jìn)行檢測時,其處理過程的復(fù)雜度將更大。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供了一種報文檢測內(nèi)容的確定方法及裝置,以降低處理復(fù)雜度,減少設(shè)備資源消耗。
為了達(dá)到上述目的,本發(fā)明公開了一種報文檢測內(nèi)容的確定方法,應(yīng)用于檢測設(shè)備,所述方法包括:
接收目標(biāo)報文,查找所述目標(biāo)報文中包含的因特網(wǎng)互聯(lián)協(xié)議IP特征值的位置;
根據(jù)IP報文的格式以及查找到的IP特征值的位置,從所述目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置;
將所述內(nèi)層IP報文頭的起始位置與所述目標(biāo)報文的報文尾之間的內(nèi)容確定為深度報文檢測的目標(biāo)檢測內(nèi)容。
為了達(dá)到上述目的,本發(fā)明還公開了一種報文檢測內(nèi)容的確定裝置,應(yīng)用于檢測設(shè)備,所述裝置包括:
查找模塊,用于接收目標(biāo)報文,查找所述目標(biāo)報文中包含的因特網(wǎng)互聯(lián)協(xié)議IP特征值的位置;
第一確定模塊,用于根據(jù)IP報文的格式以及查找到的IP特征值的位置,從所述目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置;
第二確定模塊,用于將所述內(nèi)層IP報文頭的起始位置與所述目標(biāo)報文的報文尾之間的內(nèi)容確定為深度報文檢測的目標(biāo)檢測內(nèi)容。
由上述技術(shù)方案可見,本發(fā)明實施例通過從目標(biāo)報文中查找IP特征值,并根據(jù)IP報文的格式以及查找到的IP特征值的位置,從所述目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置,從而將內(nèi)層IP報文頭的起始位置與報文尾之間的內(nèi)容確定為深度報文檢測的目標(biāo)檢測內(nèi)容。也就是說,本發(fā)明實施例根據(jù)查找到的IP特征值及IP報文格式來確定內(nèi)層IP報文的起始位置,進(jìn)而將該內(nèi)層IP報文的起始位置與報文尾之間的內(nèi)容確定為目標(biāo)檢測內(nèi)容,無需對多封裝報文所采用的其他封裝協(xié)議進(jìn)行檢測,能夠降低處理復(fù)雜度,減少設(shè)備資源消耗。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為深度報文檢測在內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)之間的作用示意圖;
圖2為本發(fā)明實施例提供的報文檢測內(nèi)容的確定方法的一種流程示意圖;
圖3a為封裝協(xié)議的示意圖(1);
圖3b為封裝協(xié)議的示意圖(2);
圖3c為封裝協(xié)議的示意圖(3);
圖4為本發(fā)明實施例提供的圖2中步驟102的另一種流程示意圖;
圖5為本發(fā)明實施例提供的報文檢測內(nèi)容的確定裝置的一種結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的報文檢測內(nèi)容的確定裝置的另一種結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整的描述。顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實施例提供了一種報文檢測內(nèi)容的確定方法及裝置,可以通過查找IP報文的特征值,從多封裝報文中確定深度報文檢測DPI處理的目標(biāo)檢測內(nèi)容,無需對多封裝報文所采用的其他封裝協(xié)議進(jìn)行檢測,能夠降低處理復(fù)雜度,減少設(shè)備資源耗費(fèi)。
下面通過具體實施例,對本發(fā)明進(jìn)行詳細(xì)說明。
圖2為本發(fā)明實施例提供的報文檢測內(nèi)容的確定方法的一種流程示意圖,應(yīng)用于檢測設(shè)備,其包括如下步驟:
步驟101:接收目標(biāo)報文,查找所述目標(biāo)報文中包含的因特網(wǎng)互聯(lián)協(xié)議IP 特征值的位置。
其中,目標(biāo)報文一般是檢測設(shè)備接收到的從外部網(wǎng)絡(luò)發(fā)送至內(nèi)部網(wǎng)絡(luò)或從內(nèi)部網(wǎng)絡(luò)發(fā)送至外部網(wǎng)絡(luò)的報文。具體的,檢測設(shè)備可以包括網(wǎng)關(guān)設(shè)備等。
目標(biāo)報文一般都是經(jīng)過了多層封裝協(xié)議的封裝,例如,采用MPLS協(xié)議封裝的報文如圖3a所示,其中,圖3a中具體包括二層頭、MPLS頭、IP頭和數(shù)據(jù)部分;采用GRE協(xié)議封裝的報文如圖3b所示,其中,圖3b中的報文采用了兩層IP封裝,圖中具體包括外層IP頭、GRE頭、內(nèi)層IP頭和數(shù)據(jù)部分;采用L2TP封裝的報文如圖3c所示,其中,圖3c中具體包括L2TP頭、點對點協(xié)議頭(Point to Point Protocol,PPP)頭、IP頭和數(shù)據(jù)部分。由于深度報文檢測(DPI)只對應(yīng)用層的IP報文內(nèi)容進(jìn)行檢測,因此,需要確定最內(nèi)層的IP報文,即目標(biāo)檢測內(nèi)容。針對多封裝技術(shù),現(xiàn)有技術(shù)中存在無法簡便地獲取DPI處理的目標(biāo)檢測內(nèi)容的問題。
在一個例子中,IP特征值可以為0x45。需要說明的是,由于目標(biāo)報文中可能包含多層IP封裝,因此檢測到的IP特征值的位置可能有多個。另外,目標(biāo)報文的數(shù)據(jù)部分也可能包含該IP特征值。
步驟102:根據(jù)IP報文的格式以及查找到的IP特征值的位置,從所述目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置。
在一個例子中,由于查找到的IP特征值的位置可能不止一個,因此需要根據(jù)IP報文的格式,進(jìn)一步從查找到的IP特征值的位置中確定內(nèi)層IP報文頭的起始位置。從目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置的方式可以有多種,在本實施例中對該方式不進(jìn)行限定。
步驟103:將所述內(nèi)層IP報文頭的起始位置與所述目標(biāo)報文的報文尾之間的內(nèi)容確定為深度報文檢測的目標(biāo)檢測內(nèi)容。
當(dāng)確定內(nèi)層IP報文頭的起始位置之后,該內(nèi)層IP報文頭的起始位置與報文尾之間的內(nèi)容即為深度報文檢測的目標(biāo)檢測內(nèi)容。一般情況下,該目標(biāo)檢測內(nèi)容中包括IP封裝頭、傳輸控制協(xié)議TCP封裝頭或用戶數(shù)據(jù)報協(xié)議UDP頭兩者之一、數(shù)據(jù)部分等。
由以上內(nèi)容可知,本實施例中,本發(fā)明實施例根據(jù)查找到的IP特征值及IP 報文格式來確定內(nèi)層IP報文的起始位置,進(jìn)而將該內(nèi)層IP報文的起始位置與報文尾之間的內(nèi)容確定為目標(biāo)檢測內(nèi)容,無需對多封裝報文所采用的其他封裝協(xié)議一一進(jìn)行檢測,能夠降低處理復(fù)雜度,減少設(shè)備資源耗費(fèi)。
作為本發(fā)明的另一個實施例,圖2所示實施例還可以包括:當(dāng)檢測到所述目標(biāo)報文中不包含所述IP特征值時,對所述目標(biāo)報文進(jìn)行轉(zhuǎn)發(fā)。當(dāng)目標(biāo)報文中不包含IP特征值時,說明該目標(biāo)報文不屬于IP報文,直接對該目標(biāo)報文進(jìn)行轉(zhuǎn)發(fā)即可。
作為本發(fā)明的另一個實施例,由于從目標(biāo)報文中查找到的IP特征值可能有多個,并且報文中的數(shù)據(jù)部分也可能出現(xiàn)其值等于IP特征值的數(shù)值,因此為了更準(zhǔn)確地確定內(nèi)層IP報文頭的起始位置,圖2中的步驟102中,根據(jù)IP報文的格式以及查找到的IP特征值的位置,從所述目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置,可以按如圖4所示流程示意圖進(jìn)行,可以包括:
步驟102A:根據(jù)查找到的IP特征值的位置,將從所述目標(biāo)報文的報文尾到所述目標(biāo)報文的報文頭方向的第一個IP特征值的位置選取為目標(biāo)IP報文頭的起始位置。
步驟102B:根據(jù)所述目標(biāo)IP報文頭的起始位置以及IP報文的格式,從所述目標(biāo)IP報文頭中查找出與從所述目標(biāo)IP報文頭的起始位置到所述報文尾之間的內(nèi)容長度對應(yīng)的第一數(shù)值。
作為本實施例的另一種實施方式,步驟102B具體可以包括:根據(jù)所述目標(biāo)IP報文頭的起始位置以及IP報文的格式,將所述目標(biāo)IP報文頭的起始位置作為第一個字節(jié),將從所述報文頭到所述報文尾方向的第三和第四個字節(jié)對應(yīng)的數(shù)值確定為第一數(shù)值。
其中,IP報文的格式可以包括:IP報文頭、TCP或UDP頭、數(shù)據(jù)部分等。IP報文頭包括源IP地址、目的IP地址、IP協(xié)議的版本、IP報文頭的長度以及IP報文的總長度等信息。一般來說,IP報文的第一個字節(jié)為IP報文的特征值,第二個字節(jié)為可變字段,第三和第四個字節(jié)標(biāo)識IP報文的總長度。
步驟102C:計算所述目標(biāo)IP報文頭的起始位置與所述報文尾之間的內(nèi)容包含的字節(jié)數(shù)量,獲得第二數(shù)值。
可以理解的是,計算指定內(nèi)容包含的字節(jié)數(shù)量屬于現(xiàn)有技術(shù),其具體過程此處不再贅述。
步驟102D:判斷所述第一數(shù)值與第二數(shù)值是否相等,如果是,則進(jìn)行步驟102E,否則,進(jìn)行步驟102F。
一般情況下,獲得的第二數(shù)值為十進(jìn)制數(shù),查找到的第一數(shù)值可以為十六進(jìn)制數(shù),也可以為二進(jìn)制數(shù),為了避免對第一數(shù)值和第二數(shù)值的進(jìn)制一一進(jìn)行檢測,也為了使判斷過程更準(zhǔn)確,在本實施例中,步驟102D具體可以包括:將所述第一數(shù)值與第二數(shù)值轉(zhuǎn)換為相同進(jìn)制的數(shù)值;判斷轉(zhuǎn)換后的第一數(shù)值與轉(zhuǎn)換后的第二數(shù)值是否相等,如果是,則確定所述第一數(shù)值與第二數(shù)值相等,否則,確定所述第一數(shù)值與第二數(shù)值不相等。
步驟102E:將所述目標(biāo)IP報文頭的起始位置確定為內(nèi)層IP報文頭的起始位置。
步驟102F:將從所述報文尾到所述報文頭方向的下一個IP特征值的位置確定為目標(biāo)IP報文頭的起始位置,繼續(xù)執(zhí)行步驟102B,直到確定出內(nèi)層IP報文頭的起始位置。
在一個例子中,假設(shè)獲取到的目標(biāo)報文如下:
47 c7 06 80……e1 1f 45 00 01 9c a1 c7 40 00 1f 06 5a 80 45 00 0a b4 00 0a ff 36……1f
其中,查找到了兩個IP特征值“45”,并且省略號部分省略了部分報文內(nèi)容。將從目標(biāo)報文的報文尾到報文頭方向的第一個IP特征值的位置選取為目標(biāo)IP報文頭的起始位置,并將該起始位置作為第一個字節(jié),則從報文頭到報文尾方向的第三和第四個字節(jié)對應(yīng)的數(shù)值為0x0ab4,即第一數(shù)值為十六進(jìn)制的0x0ab4,計算得到該起始位置與報文尾之間內(nèi)容包含的字節(jié)數(shù)量為400,即第二數(shù)值為400。將第一數(shù)值0x0ab4轉(zhuǎn)換為十進(jìn)制,即為2740,從而可知第一數(shù)值與第二數(shù)值不相等。
進(jìn)一步的,將第二個IP特征值“45”確定為目標(biāo)IP報文頭的起始位置,并將該起始位置作為第一個字節(jié),從報文頭到報文尾方向的第三和第四個字節(jié)對應(yīng)的數(shù)值為0x019c,即第一數(shù)值為十六進(jìn)制的0x019c,計算得到該起始位置與 報文尾之間內(nèi)容包含的字節(jié)數(shù)量為412,即第二數(shù)值為412。將第一數(shù)值轉(zhuǎn)換為十進(jìn)制,即為412,從而可知第一數(shù)值與第二數(shù)值相等,此時即可將該目標(biāo)IP報文頭的起始位置確定為內(nèi)層IP報文頭的起始位置。
可見,在本實施例中,通過判斷IP報文頭中包含的表征所述IP報文長度的第一數(shù)值與表征報文內(nèi)容實際長度的所述第二數(shù)值是否相等,來判斷目標(biāo)IP特征值的位置是否為內(nèi)層IP報文頭的起始位置,能夠更準(zhǔn)確地確定內(nèi)層IP報文頭的起始位置。
作為本發(fā)明的另一個實施例,在圖2所示實施例的基礎(chǔ)上,當(dāng)確定深度報文檢測的目標(biāo)檢測內(nèi)容之后,還可以對所述目標(biāo)檢測內(nèi)容進(jìn)行深度報文檢測。在采用本發(fā)明實施例提供的報文檢測內(nèi)容的確定方法確定目標(biāo)檢測內(nèi)容之后,進(jìn)行深度報文檢測,無需對多封裝報文所采用的其他封裝協(xié)議進(jìn)行檢測,能夠降低DPI處理過程的復(fù)雜度,減少設(shè)備資源耗費(fèi)。
另外,現(xiàn)有技術(shù)中通過檢測多封裝報文中所采用的封裝協(xié)議,并根據(jù)檢測出的封裝協(xié)議的特點,對報文內(nèi)容進(jìn)行相應(yīng)的偏移,以便去掉該封裝協(xié)議的封裝頭部分。如果檢測設(shè)備中沒有更新相應(yīng)的封裝協(xié)議,則檢測設(shè)備無法檢測出報文所采用的封裝協(xié)議,進(jìn)而無法獲得DPI處理的目標(biāo)檢測內(nèi)容,本發(fā)明實施例無需對多封裝報文所采用的其他封裝協(xié)議進(jìn)行檢測,能夠從多封裝報文中確定DPI處理的目標(biāo)檢測內(nèi)容,因此也能夠解決檢測設(shè)備中沒有更新封裝協(xié)議而導(dǎo)致的無法獲得DPI處理的目標(biāo)檢測內(nèi)容的問題。
圖5為本發(fā)明實施例提供的多封裝報文的深度報文檢測內(nèi)容的確定裝置的一種結(jié)構(gòu)示意圖,應(yīng)用于檢測設(shè)備,與圖2的方法實施例相對應(yīng),該裝置包括查找模塊501、第一確定模塊502和第二確定模塊503:
所述查找模塊501,用于接收目標(biāo)報文,查找所述目標(biāo)報文中包含的因特網(wǎng)互聯(lián)協(xié)議IP特征值的位置;
所述第一確定模塊502,用于根據(jù)IP報文的格式以及查找到的IP特征值的位置,從所述目標(biāo)報文中確定內(nèi)層IP報文頭的起始位置;
所述第二確定模塊503,用于將所述內(nèi)層IP報文頭的起始位置與所述目標(biāo)報文的報文尾之間的內(nèi)容確定為深度報文檢測的目標(biāo)檢測內(nèi)容。
在本實施例中,所述裝置還可以包括轉(zhuǎn)發(fā)模塊(圖中未顯示):
所述轉(zhuǎn)發(fā)模塊,用于當(dāng)檢測到所述目標(biāo)報文中不包含所述IP特征值時,對所述目標(biāo)報文進(jìn)行轉(zhuǎn)發(fā)。
在本實施例中,所述裝置還可以包括檢測模塊(圖中未顯示):
所述檢測模塊,用于當(dāng)確定深度報文檢測的目標(biāo)檢測內(nèi)容之后,對所述目標(biāo)檢測內(nèi)容進(jìn)行深度報文檢測。
圖6為本發(fā)明實施例提供的報文檢測內(nèi)容的確定裝置的另一種結(jié)構(gòu)示意圖,應(yīng)用于檢測設(shè)備,與圖4的方法實施例相對應(yīng),該裝置包括查找模塊601、第一確定模塊602和第二確定模塊603。其中,查找模塊601、第二確定模塊603分別與圖5中的查找模塊501、第二確定模塊503相同,此處不再贅述。第一確定模塊602包括:
選取子模塊6021,用于根據(jù)查找到的IP特征值的位置,將從所述目標(biāo)報文的報文尾到所述目標(biāo)報文的報文頭方向的第一個IP特征值的位置選取為目標(biāo)IP報文頭的起始位置;
查找子模塊6022,用于根據(jù)所述目標(biāo)IP報文頭的起始位置以及IP報文的格式,從所述目標(biāo)IP報文頭中查找出與從所述目標(biāo)IP報文頭的起始位置到所述報文尾之間的內(nèi)容長度對應(yīng)的第一數(shù)值;
計算子模塊6023,用于計算所述目標(biāo)IP報文頭的起始位置與所述報文尾之間的內(nèi)容包含的字節(jié)數(shù)量,獲得第二數(shù)值;
判斷子模塊6024,用于判斷所述第一數(shù)值與第二數(shù)值是否相等,如果是,則將所述目標(biāo)IP報文頭的起始位置確定為內(nèi)層IP報文頭的起始位置;否則,將從所述報文尾到所述報文頭方向的下一個IP特征值的位置確定為目標(biāo)IP報文頭的起始位置,執(zhí)行查找子模塊6022。
在本實施例中,所述查找子模塊6022具體可以用于:根據(jù)所述目標(biāo)IP報文頭的起始位置以及IP報文的格式,將所述目標(biāo)IP報文頭的起始位置作為第一個字節(jié),將從所述報文頭到所述報文尾方向的第三和第四個字節(jié)對應(yīng)的數(shù)值確定為第一數(shù)值。
在本實施例中,所述判斷子模塊6024具體可以包括轉(zhuǎn)換單元和判斷單元 (圖中未顯示):
轉(zhuǎn)換單元,用于將所述第一數(shù)值與第二數(shù)值轉(zhuǎn)換為相同進(jìn)制的數(shù)值;
判斷單元,用于判斷轉(zhuǎn)換后的第一數(shù)值與轉(zhuǎn)換后的第二數(shù)值是否相等,如果是,則確定所述第一數(shù)值與第二數(shù)值相等,否則,確定所述第一數(shù)值與第二數(shù)值不相等。
由于上述各個裝置實施例是基于相應(yīng)的方法實施例得到的,與各方法實施例具有相同的技術(shù)效果,因此裝置實施例的技術(shù)效果在此不再贅述。
對于裝置實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域普通技術(shù)人員可以理解,上述實施方式中的全部或部分步驟是能夠通過程序指令相關(guān)的硬件來完成的,所述的程序可以存儲于計算機(jī)可讀取存儲介質(zhì)中。這里所稱存儲介質(zhì),是指ROM/RAM、磁碟、光盤等。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。