專(zhuān)利名稱(chēng):協(xié)議解析方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種協(xié)議解析方法及裝置。
背景技術(shù):
DPI (Deep Packet Inspection,深度報(bào)文檢測(cè))技術(shù)是一種基于應(yīng)用層的流量檢測(cè)和控制技術(shù)。隨著內(nèi)容計(jì)費(fèi)以及各種增值業(yè)務(wù)的應(yīng)用深入,在DPI技術(shù)應(yīng)用中,除了需要對(duì)流內(nèi)容進(jìn)行協(xié)議識(shí)別(如識(shí)別為HTTP協(xié)議或其他協(xié)議類(lèi)型)外,還需要對(duì)流內(nèi)容進(jìn)行協(xié)議解析(如解析HTTP協(xié)議當(dāng)中的某些字段的內(nèi)容)?,F(xiàn)有技術(shù)進(jìn)行DPI處理時(shí),先提取數(shù)據(jù)流報(bào)文中的五元組信息(協(xié)議域(Type)、源端口、目的端口、源IP、目的IP),進(jìn)行流表匹配(流表中保存著已經(jīng)識(shí)別出來(lái)的協(xié)議跟五元組的對(duì)應(yīng)關(guān)系),通過(guò)流表匹配識(shí)別協(xié)議類(lèi)型;如果流表匹配未識(shí)別出報(bào)文的協(xié)議類(lèi)型,則對(duì)報(bào)文進(jìn)行協(xié)議識(shí)別(包括特征識(shí)別、關(guān)聯(lián)識(shí)別、啟發(fā)示識(shí)別等),以識(shí)別出報(bào)文類(lèi)型,并更新流表;同時(shí),針對(duì)流表匹配時(shí)已經(jīng)識(shí)別出協(xié)議類(lèi)型的報(bào)文,判斷是否需要進(jìn)行協(xié)議解析,如果是,則對(duì)報(bào)文進(jìn)行協(xié)議解析, 通過(guò)協(xié)議解析來(lái)解析出報(bào)文中的一些關(guān)鍵字(也稱(chēng)“字段”、“關(guān)鍵字段”)的內(nèi)容。現(xiàn)有技術(shù)進(jìn)行協(xié)議解析時(shí),采用逐字節(jié)掃描的方法。假設(shè)HTTP的頭部部分有如下內(nèi)容"GET/cn HTTPL l\n\r Accept image/gif, image/x~xbitmap, image/jpeg\n\r,,。則從字母G開(kāi)始,按照HTTP的格式進(jìn)行解析。例如,當(dāng)解析出“GET”后,如果再解析到一個(gè)空格,若干個(gè)字符(/cn)以及再接著1個(gè)空格后,即可知道下一個(gè)位置出現(xiàn)的是協(xié)議版本號(hào)(HTTP1. 1)。發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題現(xiàn)有技術(shù)采用逐字節(jié)掃描的方式進(jìn)行協(xié)議解析時(shí),如果需要對(duì)新的規(guī)則進(jìn)行解析,則需要了解新的協(xié)議報(bào)文中各字段的分布規(guī)則,這個(gè)過(guò)程需要投入大量的時(shí)間進(jìn)行分析,過(guò)程繁瑣,不利于新規(guī)則的擴(kuò)展。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種協(xié)議解析方法及裝置,通過(guò)建立關(guān)鍵字庫(kù),實(shí)現(xiàn)了關(guān)鍵字庫(kù)與協(xié)議類(lèi)型的一一對(duì)應(yīng),并使用各種匹配規(guī)則,增強(qiáng)了協(xié)議和協(xié)議字段的可擴(kuò)展性。本發(fā)明實(shí)施例采用的技術(shù)方案為一種協(xié)議解析方法,包括對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別;當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。
一種協(xié)議解析裝置,包括流表匹配模塊,用于對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別;關(guān)鍵字匹配模塊,用于當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。本發(fā)明實(shí)施例提供的協(xié)議解析方法及裝置,根據(jù)接收的報(bào)文的五元組對(duì)接收到的報(bào)文進(jìn)行流表匹配,來(lái)對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別,當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容。 與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的協(xié)議解析方法通過(guò)對(duì)報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則來(lái)實(shí)現(xiàn)對(duì)報(bào)文的關(guān)鍵字匹配,其中,關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容,這樣,如果需要對(duì)新的協(xié)議或者新的字段進(jìn)行解析時(shí),只需要增加新的關(guān)鍵字庫(kù)以及用正則表達(dá)式撰寫(xiě)新的匹配規(guī)則即可,使用正則表達(dá)式撰寫(xiě)匹配規(guī)則實(shí)現(xiàn)簡(jiǎn)單,因此,增強(qiáng)了協(xié)議和協(xié)議字段(關(guān)鍵字)的可擴(kuò)展性。
圖1為本發(fā)明一實(shí)施例提供的方法流程圖;圖2為本發(fā)明另一實(shí)施例提供的方法流程圖;圖3為本發(fā)明實(shí)施例提供的關(guān)鍵字匹配模塊的結(jié)構(gòu)示意圖;圖4為本發(fā)明另一實(shí)施例提供的裝置結(jié)構(gòu)示意圖;圖5為本發(fā)明另一實(shí)施例提供的裝置結(jié)構(gòu)示意圖;圖6為本發(fā)明另一實(shí)施例提供的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明技術(shù)方案的優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作詳細(xì)說(shuō)明。本發(fā)明一實(shí)施例提供一種協(xié)議解析方法,如圖1所示,所述方法包括步驟101、對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別。這里的識(shí)別主要通過(guò)流表進(jìn)行,接收到報(bào)文五元組(源端口、目的端口、源IP、 目的IP、類(lèi)型)信息后,通過(guò)流表匹配來(lái)識(shí)別出用戶(hù)的ID、IP地址、端口號(hào)、VPN(Virtual Private Network,虛擬專(zhuān)用網(wǎng)絡(luò))和協(xié)議類(lèi)型。具體的,流表中保存著五元組信息與其他信息的對(duì)應(yīng)關(guān)系,因此,可以通過(guò)匹配五元組來(lái)找到與五元組對(duì)應(yīng)的各個(gè)信息(包括協(xié)議類(lèi)型),從而確定報(bào)文的協(xié)議類(lèi)型。流表的具體實(shí)現(xiàn)技術(shù)為本領(lǐng)域技術(shù)人員所公知的技術(shù), 在此不再贅述。步驟102、當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。在步驟101之后,還包括當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型不為基于文本的協(xié)議類(lèi)型時(shí),對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,并將協(xié)議識(shí)別后的結(jié)果送到應(yīng)用軟件進(jìn)行處理;當(dāng)通過(guò)流表匹配未識(shí)別出所述報(bào)文的協(xié)議類(lèi)型時(shí),通過(guò)特征識(shí)別對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別,以識(shí)別所述報(bào)文的協(xié)議類(lèi)型是否是基于文本的協(xié)議類(lèi)型,如果是,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配;如果不是,對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,以對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別。具體的,所述根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容包括讀取所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的協(xié)議編號(hào);讀取與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù);根據(jù)所述關(guān)鍵字庫(kù)對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,獲得與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID(規(guī)則ID具體為數(shù)字編號(hào)),以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置。進(jìn)一步的,當(dāng)與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù)不存在時(shí),對(duì)關(guān)鍵字庫(kù)進(jìn)行更新,建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)。具體的,所述建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)包括將所述協(xié)議的關(guān)鍵字段和關(guān)鍵字段值作為匹配特征,建立關(guān)鍵字庫(kù);具體的,所述關(guān)鍵字段使用字符串表示,所述關(guān)鍵字段值使用*表示;其中,所述關(guān)鍵字庫(kù)是基于每個(gè)協(xié)議建立的,每個(gè)協(xié)議對(duì)應(yīng)一個(gè)獨(dú)立的關(guān)鍵字庫(kù)。進(jìn)一步的,還包括當(dāng)所述報(bào)文出現(xiàn)跨包狀態(tài)時(shí),對(duì)所述報(bào)文進(jìn)行存儲(chǔ);所述跨包是指當(dāng)一段完整的報(bào)文由于報(bào)文長(zhǎng)度和包容量的限制,無(wú)法將所述報(bào)文全部存儲(chǔ)在同一個(gè)包中,而需要將之分段放到兩個(gè)不同的包中進(jìn)行保存。具體的,所述基于文本的協(xié)議是指協(xié)議頭部用文本表示,每個(gè)字段長(zhǎng)度可變的協(xié)議(而不是具有固定的比特位),例如,基于文本的協(xié)議包括HTTP、FTP、RTSP,匪S、SIP、 TFTP 等;進(jìn)一步的,在步驟102之后還包括對(duì)關(guān)鍵字匹配的結(jié)果進(jìn)行結(jié)果處理,將與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置封裝到特定的數(shù)據(jù)結(jié)構(gòu),使得應(yīng)用軟件根據(jù)所述特定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)處理;其中,所述規(guī)則用于提取關(guān)鍵字中所述規(guī)則對(duì)應(yīng)的內(nèi)容。其中,所述特定的即表示約定的,應(yīng)用軟件能識(shí)別的數(shù)據(jù)結(jié)果,其具體實(shí)現(xiàn)形式不固定。本發(fā)明實(shí)施例提供的協(xié)議解析方法通過(guò)對(duì)報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則來(lái)實(shí)現(xiàn)對(duì)報(bào)文的關(guān)鍵字匹配,其中,關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容,這樣,如果需要對(duì)新的協(xié)議或者新的字段進(jìn)行解析時(shí),只需要增加新的關(guān)鍵字庫(kù)以及用正則表達(dá)式撰寫(xiě)新的匹配規(guī)則即可,使用正則表達(dá)式撰寫(xiě)匹配規(guī)則實(shí)現(xiàn)簡(jiǎn)單,因此,增強(qiáng)了協(xié)議和協(xié)議字段的可擴(kuò)展性。本發(fā)明另一實(shí)施例提供一種協(xié)議解析方法,如圖2所示,所述方法包括
步驟201、對(duì)報(bào)文進(jìn)行流表匹配。這里的識(shí)別主要通過(guò)流表進(jìn)行,接收到報(bào)文五元組(源端口、目的端口、源IP、 目的IP、類(lèi)型)信息后,通過(guò)流表匹配來(lái)識(shí)別出用戶(hù)的ID、IP地址、端口號(hào)、VPN(Virtual Private Network,虛擬專(zhuān)用網(wǎng)絡(luò))和協(xié)議類(lèi)型。具體的,流表中保存著五元組信息與其他信息的對(duì)應(yīng)關(guān)系,因此,可以通過(guò)匹配五元組來(lái)找到與五元組對(duì)應(yīng)的各個(gè)信息(包括協(xié)議類(lèi)型),從而確定報(bào)文的協(xié)議類(lèi)型。流表的具體實(shí)現(xiàn)技術(shù)為本領(lǐng)域技術(shù)人員所公知的技術(shù), 在此不再贅述。步驟202、判斷報(bào)文是否需要進(jìn)行DPI處理。如果需要進(jìn)行DPI處理,執(zhí)行步驟 203,如果不需要進(jìn)行DPI處理,執(zhí)行步驟209。步驟203、判斷此報(bào)文的協(xié)議類(lèi)型是否已識(shí)別出,如果未識(shí)別出協(xié)議類(lèi)型,執(zhí)行步驟204,如果已識(shí)別出協(xié)議類(lèi)型,執(zhí)行步驟205。步驟204、對(duì)未識(shí)別出協(xié)議類(lèi)型的報(bào)文進(jìn)行特征識(shí)別以識(shí)別協(xié)議類(lèi)型。具體的,所述特征識(shí)別所識(shí)別的信息主要包括字符、正則表達(dá)式、端口號(hào)、IP地址寸。步驟205、判斷報(bào)文的協(xié)議類(lèi)型是否為基于文本的協(xié)議類(lèi)型,如果為基于文本的協(xié)議類(lèi)型,執(zhí)行步驟206,如果不為基于文本的協(xié)議類(lèi)型,執(zhí)行步驟208。具體的,所述基于文本的協(xié)議是指協(xié)議頭部用文本表示,每個(gè)字段長(zhǎng)度可變的協(xié)議(而不是具有固定的比特位),例如,基于文本的協(xié)議包括HTTP、FTP、RTSP,匪S、SIP、 TFTP 等。步驟206、對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配。具體的,所述關(guān)鍵字匹配用于通過(guò)規(guī)則ID對(duì)報(bào)文進(jìn)行匹配,從而確定規(guī)則ID所對(duì)應(yīng)的字段的內(nèi)容。以HTTP協(xié)議為例,針對(duì)各字段可以有如下正則表達(dá)式GET\x20. *\χ20ΗΤΤΡ1· I\x0d\x0a\wP0ST\x20. *\χ20ΗΤΤΡ1· I\x0d\x0a\wAccept-Language:\x20. *\x0d\x0a\wConnection:\x20. *\x0d\x0a\wUser-Agent:\x20. *\x0d\x0a\wHost:\x20. *\x0d\x0a\wContent-Length:\x20. *\x0d\x0a\w例如,對(duì)于Connection關(guān)鍵字(本發(fā)明實(shí)施例中也稱(chēng)為“字段”、“關(guān)鍵字段”,并不嚴(yán)格區(qū)分),其在在報(bào)文頭中典型的呈現(xiàn)方式如下Connection:Keep-Alive\r\n即先是關(guān)鍵字Connection開(kāi)關(guān),然后冒號(hào),空格,再加上內(nèi)容Ke印-Alive,后面跟回車(chē)換行;針對(duì)上述關(guān)鍵字的內(nèi)容,可用正則表達(dá)式“COnneCtiOn:\x20. *\X0d\X0a\W”來(lái)描述一下規(guī)則,可以看到,該正則表達(dá)式主要包括兩個(gè)部分關(guān)鍵字(Connection)以及關(guān)鍵字的內(nèi)容(用“.*”來(lái)表示匹配的內(nèi)容,用\x20以及\x0d\x0a\w來(lái)限定關(guān)鍵字內(nèi)容在整個(gè)規(guī)則中的位置,其中,\x0d表示回車(chē),\x0a表示換行,表示任意一個(gè)單詞字符)。這樣,通過(guò)上述正則表達(dá)式表示的規(guī)則對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,就能夠提取出符合規(guī)則的內(nèi)容, 如“Connection:Ke印-Alive\r\n”,進(jìn)而也就可以容易地獲取Connection中的內(nèi)容(如 Keep-Alive)。上述各正則表達(dá)式中各符號(hào)表示的含義為本領(lǐng)域技術(shù)人員所熟知的技術(shù) (例如\x20表示16進(jìn)制ASCII碼為20的字符,即空格),在此不再贅述。具體的,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的字段的內(nèi)容包括讀取所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的協(xié)議編號(hào);讀取與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù);根據(jù)所述關(guān)鍵字庫(kù)對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,獲得與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置。其中,起始偏移位置或者結(jié)束偏移位置也可以是關(guān)鍵字內(nèi)容的起始偏移位置以及結(jié)束偏移位置,這里并不具體限定。進(jìn)一步的,所述步驟206可以由關(guān)鍵字匹配模塊42執(zhí)行,其中,如圖3所示,所述關(guān)鍵字匹配模塊42包括結(jié)果上報(bào)單元421,用于在完成所述關(guān)鍵字匹配后,將關(guān)鍵字匹配結(jié)果進(jìn)行封裝上報(bào);匹配引擎單元422,用于讀取所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的協(xié)議編號(hào),根據(jù)所述關(guān)鍵字庫(kù)對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,獲得與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置;字庫(kù)管理單元423,用于讀取與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù);狀態(tài)存儲(chǔ)單元424,用于當(dāng)所述報(bào)文出現(xiàn)跨包狀態(tài)時(shí),對(duì)所述報(bào)文進(jìn)行存儲(chǔ);字庫(kù)更新單元425,用于當(dāng)與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù)不存在時(shí),對(duì)關(guān)鍵字庫(kù)進(jìn)行更新,建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù);字庫(kù)存儲(chǔ)單元426,用于對(duì)每個(gè)協(xié)議所對(duì)應(yīng)的關(guān)鍵字庫(kù)進(jìn)行存儲(chǔ),每種協(xié)議對(duì)應(yīng)一個(gè)關(guān)鍵字庫(kù)。具體的,所述建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)包括將所述協(xié)議的關(guān)鍵字段和關(guān)鍵字段值作為匹配特征,建立關(guān)鍵字庫(kù);具體的,所述關(guān)鍵字段使用字符串表示,所述關(guān)鍵字段值使用*表示;其中,所述關(guān)鍵字庫(kù)是基于每個(gè)協(xié)議建立的,每個(gè)協(xié)議對(duì)應(yīng)一個(gè)獨(dú)立的關(guān)鍵字庫(kù)。進(jìn)一步的,還包括當(dāng)所述報(bào)文出現(xiàn)跨包狀態(tài)時(shí),對(duì)所述報(bào)文進(jìn)行保存;所述跨包是指當(dāng)一段完整的報(bào)文由于報(bào)文長(zhǎng)度和包容量的限制,無(wú)法將所述報(bào)文全部存儲(chǔ)在同一個(gè)包中,而需要將之分段放到兩個(gè)不同的包中進(jìn)行保存。步驟207、進(jìn)行結(jié)果處理。具體的,所述結(jié)果處理包括將與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置封裝到特定的數(shù)據(jù)結(jié)構(gòu),使得應(yīng)用軟件根據(jù)所述特定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)處理;步驟208、對(duì)報(bào)文進(jìn)行協(xié)議識(shí)別。具體的,所述協(xié)議識(shí)別包括特征識(shí)別、關(guān)聯(lián)識(shí)別和啟發(fā)式識(shí)別。
步驟209、送至應(yīng)用軟件進(jìn)行處理。本發(fā)明實(shí)施例提供的協(xié)議解析方法,通過(guò)對(duì)報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則來(lái)實(shí)現(xiàn)對(duì)報(bào)文的關(guān)鍵字匹配,其中,關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容,這樣,如果需要對(duì)新的協(xié)議或者新的字段進(jìn)行解析時(shí),只需要增加新的關(guān)鍵字庫(kù)以及用正則表達(dá)式撰寫(xiě)新的匹配規(guī)則即可,使用正則表達(dá)式撰寫(xiě)匹配規(guī)則實(shí)現(xiàn)簡(jiǎn)單,因此,增強(qiáng)了協(xié)議和協(xié)議字段的可擴(kuò)展性。本發(fā)明再一實(shí)施例提供一種協(xié)議解析裝置,如圖4所示,所述裝置包括流表匹配模塊41,用于對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別;關(guān)鍵字匹配模塊42,用于當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。進(jìn)一步的,如圖5所示,所述協(xié)議解析裝置還包括特征識(shí)別模塊43,用于當(dāng)通過(guò)流表匹配未識(shí)別出所述報(bào)文的協(xié)議類(lèi)型時(shí),通過(guò)特征識(shí)別對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別,以識(shí)別所述報(bào)文的協(xié)議類(lèi)型是否是基于文本的協(xié)議類(lèi)型,如果是,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配;如果不是,對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,以對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別。協(xié)議識(shí)別模塊44,用于當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型不為基于文本的協(xié)議類(lèi)型時(shí),對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,并將協(xié)議識(shí)別后的結(jié)果送到應(yīng)用軟件進(jìn)行處理。結(jié)果處理模塊45,用于對(duì)關(guān)鍵字匹配結(jié)果進(jìn)行結(jié)果處理,將與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置封裝到特定的數(shù)據(jù)結(jié)構(gòu),使得應(yīng)用軟件根據(jù)所述特定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)處理。其中,所述關(guān)鍵字匹配模塊42包括結(jié)果上報(bào)單元421,用于在完成所述關(guān)鍵字匹配后,將關(guān)鍵字匹配結(jié)果進(jìn)行封裝上報(bào);匹配引擎單元422,用于讀取所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的協(xié)議編號(hào),根據(jù)所述關(guān)鍵字庫(kù)對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,獲得與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置;字庫(kù)管理單元423,用于讀取與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù);狀態(tài)存儲(chǔ)單元424,用于當(dāng)所述報(bào)文出現(xiàn)跨包狀態(tài)時(shí),對(duì)所述報(bào)文進(jìn)行存儲(chǔ);字庫(kù)更新單元425,用于當(dāng)與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù)不存在時(shí),對(duì)關(guān)鍵字庫(kù)進(jìn)行更新,建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù);字庫(kù)存儲(chǔ)單元426,用于對(duì)每個(gè)協(xié)議所對(duì)應(yīng)的關(guān)鍵字庫(kù)進(jìn)行存儲(chǔ),每種協(xié)議對(duì)應(yīng)一個(gè)關(guān)鍵字庫(kù)。具體的,所述特征識(shí)別模塊43還用于識(shí)別所述報(bào)文的字符、正則表達(dá)式、端口號(hào)、 IP地址等。
如圖6所示,所述協(xié)議解析裝置可以包括兩個(gè)子系統(tǒng)硬件子系統(tǒng)61和軟件子系統(tǒng)62,具體的,所述硬件子系統(tǒng)61可以包括流表匹配模塊41、特征識(shí)別模塊43、關(guān)鍵字匹配模塊42 ;進(jìn)一步的,所述流表匹配模塊41 可使用 FPGA(Field-Programmable Gate Array, 現(xiàn)場(chǎng)可編程門(mén)陣列)或者網(wǎng)絡(luò)處理器;所述特征識(shí)別模塊43和關(guān)鍵字匹配模塊42可在同一個(gè)FPGA或者 ASIC (Application Specific Integrated Circuit,專(zhuān)用集成電路)實(shí)現(xiàn),或者分別在不同的FPGA或ASIC實(shí)現(xiàn)。具體的,所述軟件子系統(tǒng)62可以包括結(jié)果處理模塊45、協(xié)議識(shí)別模塊44 ;具體的,軟件子系統(tǒng)通過(guò)多核MIPS/ARM/X86CPU實(shí)現(xiàn)協(xié)議識(shí)別、結(jié)果處理以及DPI 應(yīng)用功能。本發(fā)明實(shí)施例提供的協(xié)議解析裝置,流表匹配模塊41根據(jù)接收的報(bào)文的五元組對(duì)報(bào)文進(jìn)行識(shí)別,對(duì)已識(shí)別出協(xié)議類(lèi)型的報(bào)文送至關(guān)鍵字匹配模塊42進(jìn)行關(guān)鍵字匹配,并將經(jīng)過(guò)關(guān)鍵字匹配的匹配結(jié)果送至結(jié)果處理模塊45進(jìn)行解析,對(duì)未識(shí)別出協(xié)議類(lèi)型的報(bào)文送至特征識(shí)別模塊43進(jìn)行特征識(shí)別,并將經(jīng)過(guò)特征識(shí)別的報(bào)文中基于文本的協(xié)議送至關(guān)鍵字匹配模塊42進(jìn)行關(guān)鍵字匹配,結(jié)果處理模塊45對(duì)經(jīng)過(guò)關(guān)鍵字匹配的協(xié)議的匹配結(jié)果進(jìn)行解析。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的協(xié)議解析裝置通過(guò)在關(guān)鍵字匹配模塊 42中對(duì)報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則來(lái)實(shí)現(xiàn)對(duì)報(bào)文的關(guān)鍵字匹配,其中,關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容,這樣,如果需要對(duì)新的協(xié)議或者新的字段進(jìn)行解析時(shí),只需要增加新的關(guān)鍵字庫(kù)以及用正則表達(dá)式撰寫(xiě)新的匹配規(guī)則即可,使用正則表達(dá)式撰寫(xiě)匹配規(guī)則實(shí)現(xiàn)簡(jiǎn)單,因此,增強(qiáng)了協(xié)議和協(xié)議字段的可擴(kuò)展性。本發(fā)明實(shí)施例提供的協(xié)議解析裝置可以實(shí)現(xiàn)上述提供的方法實(shí)施例,具體功能實(shí)現(xiàn)請(qǐng)參見(jiàn)方法實(shí)施例中的說(shuō)明,在此不再贅述。本發(fā)明實(shí)施例提供的協(xié)議解析方法及裝置可以適用于對(duì)報(bào)文進(jìn)行協(xié)議解析,但不僅限于此。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory, RAM)等。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種協(xié)議解析方法,其特征在于,包括對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別;當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí), 根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。
2.如權(quán)利要求1所述的方法,其特征在于,還包括當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型不為基于文本的協(xié)議類(lèi)型時(shí),對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,并將協(xié)議識(shí)別后的結(jié)果送到應(yīng)用軟件進(jìn)行處理。
3.如權(quán)利要求1所述的方法,其特征在于,還包括當(dāng)通過(guò)流表匹配未識(shí)別出所述報(bào)文的協(xié)議類(lèi)型時(shí),通過(guò)特征識(shí)別對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別,以識(shí)別所述報(bào)文的協(xié)議類(lèi)型是否是基于文本的協(xié)議類(lèi)型,如果是,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配;如果不是,對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,以對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別。
4.如權(quán)利要求1-3所述的方法,其特征在于,所述根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容包括讀取所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的協(xié)議編號(hào);讀取與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù);根據(jù)所述關(guān)鍵字庫(kù)對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,獲得與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則 ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置。
5.如權(quán)利要求4所述的方法,其特征在于,還包括當(dāng)與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù)不存在時(shí),對(duì)關(guān)鍵字庫(kù)進(jìn)行更新,建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)。
6.如權(quán)利要求4所述的方法,其特征在于,還包括當(dāng)所述報(bào)文出現(xiàn)跨包狀態(tài)時(shí),對(duì)所述報(bào)文進(jìn)行存儲(chǔ)。
7.如權(quán)利要求4所述的方法,其特征在于,所述建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)包括將所述協(xié)議的關(guān)鍵字段和關(guān)鍵字段值作為匹配特征,建立關(guān)鍵字庫(kù)。
8.如權(quán)利要求4所述的方法,其特征在于,所述關(guān)鍵字庫(kù)是基于每個(gè)協(xié)議建立的,每個(gè)協(xié)議對(duì)應(yīng)一個(gè)獨(dú)立的關(guān)鍵字庫(kù)。
9.如權(quán)利要求4所述的方法,其特征在于,還包括在完成所述關(guān)鍵字匹配后,將關(guān)鍵字匹配結(jié)果進(jìn)行封裝上報(bào)。
10.如權(quán)利要求1所述的方法,其特征在于,還包括對(duì)關(guān)鍵字匹配的結(jié)果進(jìn)行結(jié)果處理,將與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置封裝到特定的數(shù)據(jù)結(jié)構(gòu),使得應(yīng)用軟件根據(jù)所述特定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)處理。
11.一種協(xié)議解析裝置,其特征在于,包括流表匹配模塊,用于對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別;關(guān)鍵字匹配模塊,用于當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。
12.如權(quán)利要求11所述的裝置,其特征在于,還包括協(xié)議識(shí)別模塊,用于當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型不為基于文本的協(xié)議類(lèi)型時(shí),對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,并將協(xié)議識(shí)別后的結(jié)果送到應(yīng)用軟件進(jìn)行處理。
13.如權(quán)利要求11所述的裝置,其特征在于,還包括特征識(shí)別模塊,用于當(dāng)通過(guò)流表匹配未識(shí)別出所述報(bào)文的協(xié)議類(lèi)型時(shí),通過(guò)特征識(shí)別對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別,以識(shí)別所述報(bào)文的協(xié)議類(lèi)型是否是基于文本的協(xié)議類(lèi)型,如果是,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配;如果不是,對(duì)所述報(bào)文進(jìn)行協(xié)議識(shí)別,以對(duì)所述報(bào)文的協(xié)議類(lèi)型進(jìn)行識(shí)別。
14.如權(quán)利要求11-13所述的裝置,其特征在于,所述關(guān)鍵字匹配模塊包括匹配引擎單元,用于讀取所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的協(xié)議編號(hào);字庫(kù)管理單元,用于讀取與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù);所述匹配引擎單元,還用于根據(jù)所述關(guān)鍵字庫(kù)對(duì)報(bào)文進(jìn)行關(guān)鍵字匹配,獲得與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置。
15.如權(quán)利要求14所述的裝置,其特征在于,所述關(guān)鍵字匹配模塊還包括字庫(kù)更新單元,用于當(dāng)與所述協(xié)議編號(hào)對(duì)應(yīng)的關(guān)鍵字庫(kù)不存在時(shí),對(duì)關(guān)鍵字庫(kù)進(jìn)行更新,建立與所述協(xié)議編號(hào)對(duì)應(yīng)的協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)。
16.如權(quán)利要求14所述的裝置,其特征在于,所述關(guān)鍵字匹配模塊還包括狀態(tài)存儲(chǔ)單元,用于當(dāng)所述報(bào)文出現(xiàn)跨包狀態(tài)時(shí),對(duì)所述報(bào)文進(jìn)行存儲(chǔ)。
17.如權(quán)利要求14所述的裝置,其特征在于,所述關(guān)鍵字匹配模塊還包括字庫(kù)存儲(chǔ)單元,用于對(duì)每個(gè)協(xié)議所對(duì)應(yīng)的關(guān)鍵字庫(kù)進(jìn)行存儲(chǔ),每種協(xié)議對(duì)應(yīng)一個(gè)關(guān)鍵字庫(kù)。
18.如權(quán)利要求14所述的裝置,其特征在于,所述關(guān)鍵字匹配模塊還包括結(jié)果上報(bào)單元,用于在完成所述關(guān)鍵字匹配后,將關(guān)鍵字匹配結(jié)果進(jìn)行封裝上報(bào)。
19.如權(quán)利要求11所述的裝置,其特征在于,還包括結(jié)果處理模塊,用于對(duì)關(guān)鍵字匹配結(jié)果進(jìn)行處理,將與匹配到的關(guān)鍵字對(duì)應(yīng)的匹配規(guī)則ID,以及匹配到的關(guān)鍵字的起始偏移位置和結(jié)束偏移位置封裝到特定的數(shù)據(jù)結(jié)構(gòu),使得應(yīng)用軟件根據(jù)所述特定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)處理。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種協(xié)議解析方法及裝置,涉及通信技術(shù)領(lǐng)域,解決了現(xiàn)有技術(shù)中采用逐字節(jié)掃描的方式進(jìn)行協(xié)議解析時(shí),對(duì)新的規(guī)則進(jìn)行解析的過(guò)程需要投入大量的時(shí)間進(jìn)行分析,過(guò)程繁瑣,不利于新規(guī)則的擴(kuò)展的問(wèn)題。所述方法包括對(duì)接收到的報(bào)文進(jìn)行流表匹配,以對(duì)報(bào)文的協(xié)議進(jìn)行識(shí)別;當(dāng)識(shí)別出所述報(bào)文的協(xié)議類(lèi)型且判斷所述報(bào)文的協(xié)議類(lèi)型為基于文本的協(xié)議類(lèi)型時(shí),根據(jù)與所述報(bào)文協(xié)議類(lèi)型對(duì)應(yīng)的關(guān)鍵字庫(kù)中的關(guān)鍵字匹配規(guī)則,對(duì)所述報(bào)文進(jìn)行關(guān)鍵字匹配,提取所述報(bào)文中需要解析的關(guān)鍵字的內(nèi)容;其中,所述關(guān)鍵字庫(kù)中的所述關(guān)鍵字匹配規(guī)則包括用正則表達(dá)式表示的需要解析的關(guān)鍵字以及關(guān)鍵字內(nèi)容。本發(fā)明適用于對(duì)報(bào)文進(jìn)行協(xié)議解析的設(shè)備。
文檔編號(hào)H04L29/06GK102217281SQ201180000837
公開(kāi)日2011年10月12日 申請(qǐng)日期2011年6月13日 優(yōu)先權(quán)日2011年6月13日
發(fā)明者蘇德現(xiàn) 申請(qǐng)人:華為技術(shù)有限公司