專利名稱:識別和驗證消息協(xié)議類型的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種識別和驗證消息協(xié)議類型的方法和裝置。
背景技術(shù):
網(wǎng)絡(luò)協(xié)議即網(wǎng)絡(luò)中(包括互聯(lián)網(wǎng))傳遞、管理信息的一些規(guī)范。無論是對 網(wǎng)絡(luò)架構(gòu)、網(wǎng)絡(luò)使用情況等方面的檢測,還是為了提高網(wǎng)絡(luò)服務(wù)質(zhì)量,對網(wǎng)絡(luò) 異常流量的檢測,都首先需要對網(wǎng)絡(luò)流量的所屬協(xié)議類型進行識別。
目前的應(yīng)用層協(xié)議識別方案,為一種基于特征字符的識別方法。該方法根 據(jù)網(wǎng)絡(luò)協(xié)議的特點,提取一個或多個消息的特征字符,組成協(xié)議指紋,同時提 取組成協(xié)議指紋的特征字符以外的特征字符,組成協(xié)議的驗證規(guī)則。
例如,以識別HTTP ( Hypertext Transfer Protocol,超文本傳輸協(xié)議)為例 首先建立協(xié)議指紋集,包括"GET,,和"POST,,,然后分別為協(xié)議指紋"GET"和 "POST"建立相應(yīng)的3全證規(guī)則集。
HTTP協(xié)議指紋"GET,,的驗證規(guī)則集為
規(guī)則1:文本中必須含有"TTP"字符串;
規(guī)則2:文本中必須包含'Vm"字符串。
HTTP協(xié)議指紋"POST"的驗證規(guī)則集為
規(guī)則l:文本中必須含有"rW,字符串;
規(guī)則2:文本中必須包含"Content - Length,,字符串。
一種協(xié)議對應(yīng) 一個或多個協(xié)議指紋, 一個協(xié)議指紋對應(yīng) 一個或多個驗證規(guī) 則。已有的應(yīng)用層切、-漢識別方法包括獲取兩個IP地址的端口之間傳輸?shù)南ⅲ?將消息與協(xié)議指紋匹配, 一旦匹配成功,則激活該協(xié)議指紋的驗證規(guī)則集。通過協(xié)議指紋的驗證規(guī)則集的驗證后,則判斷為協(xié)議類型識別成功。在協(xié)議類型 識別成功后,采用 <源IP地址、源IP地址的端口 、目標IP地址、目標IP地址 的端口、協(xié)議類型>的五元組形式,存儲消息的兩個傳輸端以及消息所屬的協(xié)議 類型,組成固化表,以進行"記憶"。這種形式的固化表只對當前會話流的識別有 效,并且會占用大量的系統(tǒng)資源的空間。
在上述方案的實施過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在以下問題單 純的通過消息的特征字符組成協(xié)議指紋,通過組成協(xié)議指紋的特征字符以外的 特征字符組成協(xié)議指紋的驗證規(guī)則集,根據(jù)消息所包含的一些特征字符而識別 其所屬的協(xié)議類型,這樣的識別及驗證方法不完善,誤報率比較高,如包括這 些特征字符的其它協(xié)議類型的消息,也會被識別出屬于該協(xié)議類型。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了 一種識別消息協(xié)議類型的方法,能夠識別消息所屬 的協(xié)議類型,識別的正確率比較高。
一方面,本發(fā)明實施例提供了一種識別消息協(xié)議類型的方法,包括 獲得通訊端之間傳輸?shù)南ⅲ?br>
查找與所述消息相匹配的消息識別模板,所述消息識別模板包含消息的特 征字符和特征字符的格式;
查找與該消息相匹配的消息識別才莫板對應(yīng)的協(xié)議類型。
另一方面,本發(fā)明實施例提供了一種驗證消息協(xié)議類型的方法,包括
連續(xù)獲得通訊端之間傳輸?shù)闹辽賰蓷l消息;
判斷獲得的至少兩條消息與消息驗證模板是否匹配,所述消息驗證模板順
本發(fā)明實施例還提供了一種識別消息協(xié)議類型的方法,包括:獲得通訊端之間傳輸?shù)南ⅲ?br>
查找與所述消息相匹配的消息識別模板,所述消息識別模板包含消息的特 征字符和特征字符的格式;
查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型;
判斷獲得的消息與消息驗證模板是否匹配,所述消息驗證模板順序包含至 少兩條消息的特征字符以及特征字符的格式;
如果匹配,則確定所述消息的協(xié)議類型為查找的與該消息相匹配的消息識 別模板對應(yīng)的協(xié)議類型。
本發(fā)明實施例提供了 一種識別消息協(xié)議類型的裝置,包括
第一獲得單元,用于獲得通訊端之間傳輸?shù)南ⅲ?br>
第一查找單元,用于查找與該消息相匹配的消息識別模板,所述消息識別 模板包含消息的特征字符和特征字符的格式;
第二查找單元,用于查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型。 本發(fā)明實施例還提供了 一種驗證消息協(xié)議類型的裝置,包括 第二獲得單元,用于連續(xù)獲得通訊端之間傳輸?shù)闹辽賰蓷l消息; 判斷單元,用于判斷獲得的至少兩條消息與消息驗證模板是否匹配,所述
本發(fā)明實施例識別消息協(xié)議類型的方法和裝置,通過查找與獲得的通訊端 間傳輸?shù)南⑾嗥ヅ涞南⒆R別模板,并將進一步查找到的與該識別模板所對 應(yīng)的協(xié)議類型作為消息協(xié)議類型。作為識別標準的消息識別^^莫板不僅包括協(xié)議 中消息的特征字符,而且包括消息的特征字符格式,提高了識別消息協(xié)議類型 的正確率。本實施例驗證消息協(xié)議類型的方法和裝置,作為驗證標準的消息驗 證模板不僅包括協(xié)議中消息的特征字符,而且包括消息的特征字符格式,并且消息驗證模板包含的至少兩條消息的特征字符以及特征字符的格式的順序與通 信過程中消息的交互順序一致,模擬了消息的交互過程,每個協(xié)議的消息交互 過程是該協(xié)議特有的,所以就能提高通過協(xié)議驗證的協(xié)議類型的正確性。
圖1是本發(fā)明實施例消息協(xié)議類型的識別方法流程圖; 圖2是本發(fā)明實施例消息協(xié)議類型的驗證方法流程圖; 圖3是本發(fā)明實施例協(xié)議類型識別過程的協(xié)議狀態(tài)機示意圖; 圖4是本發(fā)明實施例SMTP (Simple Message Transfer Protocol,簡單郵件傳 輸協(xié)議)消息的典型交互過程圖5是本發(fā)明實施例SMTP消息的協(xié)議驗證過程; 圖6是本發(fā)明實施例識別消息協(xié)議類型的裝置示意圖; 圖7是本發(fā)明實施例驗證消息協(xié)議類型的裝置示意圖。
具體實施例方式
本發(fā)明實施例提供的識別消息協(xié)議類型的技術(shù)方案,根據(jù)消息的特征字符 和特征字符格式,識別消息協(xié)議類型,并且根據(jù)消息的特征字符、特征字符格 式以及消息的交互順序,對識別出的消息協(xié)議類型進行驗證。
如圖1所示,為本發(fā)明實施例消息協(xié)議類型的識別方法流程圖,該方法包
括
步驟IOI,獲得通訊端之間傳輸?shù)南ⅰ?br>
其中,通訊端包括客戶端(Client)和月l務(wù)器端(Server),也可以包括兩個 對等的通訊端??蛻舳税ㄒ苿咏K端(如移動電話、個人電腦PC、個人數(shù)字助理PDA)和固定終端(如固定電話)等。本實施例中,獲得消息的過程可以包 括主動從通訊端處獲取消息,或者為被動接收通訊端發(fā)送的消息。
在本步驟中,可以獲得通訊端間傳輸?shù)耐暾南?如完整的一條或兩條 消息),也可以獲得通訊端間傳輸?shù)牟糠窒?,如一條消息的部分字節(jié)(如前100 字節(jié)),這樣可以降低系統(tǒng)負擔(dān)。
步驟102,查找與該消息相匹配的消息識別模板。
本發(fā)明實施例中所稱的消息識別模板用于表達協(xié)議消息(如會話發(fā)起協(xié)議 SIP消息、與承載無關(guān)的呼叫控制協(xié)議BICC消息、簡單郵件傳送協(xié)議SMTP消 息等)包含的特征字符以及特征字符的格式,其中,特征字符為協(xié)議消息所特 有的關(guān)鍵字符,特征字符的格式包括特征字符在協(xié)議消息中的位置(例如在協(xié) 議消息的開頭或結(jié)尾)、特征字符的數(shù)量、以及不同特征字符之間的前后順序。 本實施例中所稱的與該消息相匹配,是指該消息滿足消息識別模板表達的特征 字符以及特征字符的格式。本實施例中,可以預(yù)先設(shè)置多個消息識別模板,一 種消息識別模板對應(yīng)一種協(xié)議類型(即一種消息識別模板關(guān)聯(lián)一種協(xié)議類型), 用于表達一種協(xié)議消息包含的特征字符以及特征字符的格式。本步驟中,可以 在預(yù)先設(shè)置的消息識別模板中(預(yù)先設(shè)置的消息識別模板可以為 一個或者多 個),查找與該消息相匹配的消息識別^t板,以確定與該消息相匹配的消息識別 模板。
本實施例中的消息識別模板可以用"正則表達式,,表示。正則表達式由普通字 符(例如字符a到z)以及特殊字符(稱為元字符)組成,描述在查找字符時 待匹配的一個或多個特征字符以及特征字符格式。特征字符的格式包括特征字 符在消息中的位置(例如在消息的開頭或結(jié)尾)、特征字符的數(shù)量、以及不同特 征字符之間的前后順序。例如,在正則表達式(alb"c中,"*"表示重復(fù)0次或多次,T表示或運算。正則表達式(aibfc表示的字符串為0個或多個字符a或字 符b,接著為l個字符c。滿足正則表達式(alb)&的字符串可以是ac、 bc、 abc、 aabc、 abbc、 c等。本實施例中的消息模板也可以采用其他的表示方法,也可以 采用自定義規(guī)則的表示,只要消息模板能夠包含特征字符以及特征字符的格式 即可。
進一步,本發(fā)明實施例中還可以在數(shù)據(jù)庫(如協(xié)議識別庫)中設(shè)置協(xié)議類 型識別規(guī)則,并將消息的識別模板,以及消息識別模板所對應(yīng)的協(xié)議類型記錄 在協(xié)議類型識別規(guī)則中。其中,識別失見則的沖各式可以為協(xié)議類型識別規(guī)則的編號消息識別模板。
其中,"協(xié)議類型識別規(guī)則的編號,,字段表示消息識別模板對應(yīng)的協(xié)議類型; "消息識別模板"字段包含消息的特征字符,以及特征字符的格式;",,號表示分隔符。
下面以SMTP為例,描述查找與SMTP消息相匹配的消息識別才莫^^的過程。 首先預(yù)先設(shè)置消息識別模板。以SMTP消息為例,可以根據(jù)SMTP在經(jīng)過 TCP (Transfer Control Protocol,傳輸控制協(xié)議)三次握手以后,服務(wù)器端返回的 第一個應(yīng)答,預(yù)先設(shè)置SMTP消息識別模板(以正則表達式表示消息識別模板 為例),并進一步形成如下協(xié)議類型識別規(guī)則SMTP :A220[\x09\x0b-\x0d - ]*("smtp'T'mail")。其中
SMTP為協(xié)議類型識別規(guī)則的編號,表示消息識別模板對應(yīng)的協(xié)議類型為 SMTP;
正則表達式A220Bx0Wx0bAx0d - ]*("311^"|"11^1")的元字符"",表示"匹配字 符串的開始位置,,,元字符"*,,表示"匹配前面的子表達式出現(xiàn)零次或多次", ,x09Xx0bAx0d—],,表示任意字符,該正則表達式表示的消息識別模板為以220開始,然后為0個或幾個任意字符,接下來的字符為smtp或mail。
接著將獲得的消息與消息識別模板相匹配。優(yōu)選的,本實施例可以通過具
有特定狀態(tài)和遷移條件的狀態(tài)機來實現(xiàn)模板匹配首先將消息識別模板進行編
譯,形成協(xié)議識別引擎,協(xié)議識別引擎相當于一個協(xié)議狀態(tài)機。下面具體描述
將獲得的消息與SMTP消息識別模板相匹配的方法。本實施例中預(yù)先設(shè)置的
SMTP協(xié)議類型識別規(guī)則為SMTP :A220[\x09\x0b-\x0d -~]*("smtpTmair),
可以才艮據(jù)該正則表達式建立圖3所示的確定性有窮自動機(DFA: Deterministic
Finite Automata)。圖3中,箭頭上面的字符表示輸入的字符,同心圓表示狀態(tài)
機的命中狀態(tài),即,若狀態(tài)機運行到該狀態(tài)則表示有一條輸入的字符特征命中。
協(xié)議狀態(tài)機的初始狀態(tài)為狀態(tài)0,在狀態(tài)0時遇到輸入字符為"W,時,則轉(zhuǎn)換到
狀態(tài)l;在狀態(tài)1時遇到輸入字符為"2"時,則轉(zhuǎn)換到狀態(tài)2;以此類推。在各狀
態(tài)下若遇到任何不在圖3中標出的能明確轉(zhuǎn)換到下一個狀態(tài)的輸入字符(如在
狀態(tài)3下遇到非"0"的輸入),則重新回到狀態(tài)0。例如,若獲得的消息為"220this
is smtp server",則在與SMTP消息識別模板匹配時,狀態(tài)機能從狀態(tài)O轉(zhuǎn)到狀
態(tài) 12 , 則表示與協(xié)議類型識另,J規(guī)貝'JSMTP:A220[\x09\x0b-\x0d
- ]*("smtpT'mair)中的用正則表達式表示的消息識別模板匹配成功,即查到
的與SMTP消息匹配的模板為A220。x09、x0b-bc0d-~]*("smtp"|"mair)。
步驟103,查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型。
本實施例中, 一種消息識別模板對應(yīng)一種協(xié)議類型(即一種消息識別模板
關(guān)聯(lián)一種協(xié)議類型),用于表達一種協(xié)議消息包含的特征字符以及特征字符的格
式。由此,在查找與該消息相匹配的消息識別才莫板后,進一步查找與該消息相
匹配的消息識別模板對應(yīng)的協(xié)議類型。例如,若在某個協(xié)議識別規(guī)則中查找與
該消息匹配的消息協(xié)議模板,則該協(xié)議識別規(guī)則的編號即為該消息識別模板對應(yīng)的協(xié)i義類型。
步驟104,確定該消息的協(xié)議類型為查找的與該消息相匹配的消息識別模斗反 對應(yīng)的協(xié)議類型。
在本步驟中,可以將與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型,確 定為通訊端間傳輸?shù)南⒌膮f(xié)議類型。例如,若在某個協(xié)議識別規(guī)則中查找與 該消息匹配的消息協(xié)議模板,則可以將該協(xié)議識別規(guī)則的編號(即消息識別模 板對應(yīng)的協(xié)議類型)確定為通訊端間傳輸?shù)南⒌膮f(xié)議類型。
步驟105,建立通訊端與確定的消息的協(xié)議類型的對應(yīng)關(guān)系。 本發(fā)明實施例中,在確定該消息的協(xié)議類型后,還可以進一步建立通訊端 與確定的消息的協(xié)-漢類型的對應(yīng)關(guān)系。如建立包含通訊端的標識(IP地址和/或 端口號)和消息的協(xié)議類型的固化表,對協(xié)議識別結(jié)果進行"固化,,,固化表的結(jié)
構(gòu)可以為〈IP地址,IP地址的端口,協(xié)議類型>。
本發(fā)明實施例識別消息協(xié)議類型的方法,通過查找與獲得的通訊端間傳輸 的消息相匹配的消息識別模板,并將進一步查找到的與該識別模板所對應(yīng)的協(xié) 議類型作為消息協(xié)議類型。作為識別標準的消息識別模板不僅包括協(xié)議中消息 的特征字符,而且包括消息的特征字符格式,提高了識別消息協(xié)議類型的正確 率。并進一步建立該通訊端與確定的消息的協(xié)議類型的對應(yīng)關(guān)系,這樣在識別 消息協(xié)議類型的過程中,可以通過分別提取消息中攜帶的通訊端的IP地址和端 口號,將消息通訊端的IP地址和端口號與記錄對應(yīng)關(guān)系相比較,以確認消息的 協(xié)議類型,即可通過查固化表實現(xiàn)對協(xié)議類型的識別,能夠提高識別消息協(xié)議 類型的效率。
在本發(fā)明實施例中,可以沒有步驟104,即默認查找到的與該消息相匹配的
消息識別模板對應(yīng)的協(xié)議類型即為消息的協(xié)議類型。在本發(fā)明實施例中,可以默認執(zhí)行步驟105 (建立該通訊端與確定的消息的 協(xié)議類型的對應(yīng)關(guān)系),也可以沒有步驟105,即不用建立通訊端間傳輸?shù)南?的協(xié)議類型的對應(yīng)關(guān)系,如一些協(xié)議(如BT協(xié)議),每次通信的端口都是隨機 的,建立對應(yīng)關(guān)系對后續(xù)別的消息的識別幫助不大,則沒有必要建立對應(yīng)關(guān)系。 也可以預(yù)先設(shè)置是否執(zhí)行步驟105,例如可以在協(xié)議類型識別規(guī)則中增加一個字 段,用于表示是否建立通訊端間傳輸?shù)南⒌膮f(xié)議類型的對應(yīng)關(guān)系,如協(xié)議 類型識別規(guī)則的編號消息識別模板是否固化識別結(jié)果,其中,"是否固化 識別結(jié)果"字段可以通過1或0標識,用于表示是否建立包含通訊端的標識(IP 地址和/或端口號)和消息的協(xié)議類型的固化表,對協(xié)議識別結(jié)果進行"固化"。
在本發(fā)明實施例中,在步驟103之后,步驟104以前,即查找與該消息相 匹配的消息識別模板對應(yīng)的協(xié)議類型以后,確定該消息的協(xié)議類型為查找的與 該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型之前,還可以默認對查找到的與 該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型進行驗證,如果驗證通過,再執(zhí) 行步驟104。也可以預(yù)先設(shè)置是否對查找的與該消息相匹配的消息識別模板對應(yīng) 的協(xié)議類型進行驗證,例如可以在協(xié)議類型識別規(guī)則中增加一個字段,用于表 示是否對獲得通訊端之間傳輸?shù)南⑦M行驗證,如協(xié)議類型識別規(guī)則的編號 消息識別模板是否驗證協(xié)議類型,其中,"是否驗證協(xié)議類型"字段可以通過 1或0標識,用于表示是否對查找的與該消息相匹配的消息識別模板對應(yīng)的協(xié)議 類型進行驗證。
如圖2所示,為本發(fā)明實施例消息協(xié)議類型的驗證方法流程圖,該方法包
括
步驟201,連續(xù)獲得通訊端之間傳輸?shù)闹辽賰蓷l消息;
其中,通訊端包括客戶端(Client)和月l務(wù)器端(Server),也可以包括兩個對等網(wǎng)絡(luò)的通訊端??蛻舳税ㄒ苿咏K端(如移動電話、個人電腦PC、個人數(shù)
字助理PDA)和固定終端(如固定電話)等。本實施例中,獲得消息的過程可
以包括主動從通訊端處獲取消息,以及為被動接收通訊端發(fā)送的消息。
在本步驟中,獲得的通訊端之間傳輸?shù)倪B續(xù)消息數(shù)至少為2條, 一般不超 過20條。
步驟202,判斷獲得的至少兩條消息與消息驗證模板是否匹配。如果匹配, 則表明消息的協(xié)議類型驗證成功,反之,則表明消息的協(xié)議類型驗證失敗。
本發(fā)明實施例中所稱的消息驗證模板順序包含至少兩條消息的特征字符 以及特征字符的格式,所稱的順序是指,包含的至少兩條消息的特征字符以及 特征字符的格式的順序,與通信過程中消息的交互順序一致。本實施例中所稱 的匹配,是指所述連續(xù)獲得的至少兩條消息順序,滿足消息驗證模板順序表達 的所述至少兩條消息的特征字符以及特征字符的格式。當然,當接收到的消息 只有兩條時,消息驗證模板也可以包含兩條以上的消息的特征字符以及特征字 符的格式,只要接收到的兩條消息順序滿足消息驗證模板順序表達的其中兩條 消息的特征字符以及特征字符的格式即可。
消息驗證模板中包含的消息的特征字符可以與消息識別模板中包含的該消 息的特征字符重合,消息驗證模板也可以只包含消息識別模板中已經(jīng)包含的該
消息的特征字符以外的特征字符。
消息驗證模板可以用正則表達式表示,用于驗證的消息驗證模板應(yīng)該是與 消息協(xié)議類型識別過程中識別出的消息協(xié)議類型所對應(yīng)的消息驗證模板。
本發(fā)明實施例中還可以在數(shù)據(jù)庫(如協(xié)議驗證庫)中設(shè)置協(xié)議類型驗證規(guī) 則,并將消息的驗證模板,以及消息驗證模板所對應(yīng)的協(xié)議類型記錄在協(xié)議類 型驗證規(guī)則中。在進行消息協(xié)議類型的驗證過程中,只需將消息與消息識別過程中識別出的該消息的協(xié)議類型所對應(yīng)的消息驗證模板匹配即可。驗證規(guī)則的
格式可以為
協(xié)議類型驗證規(guī)則的編號1:消息驗證模板1; 協(xié)議類型驗證規(guī)則的編號2:消息驗證模板2; ……。
其中,"協(xié)議類型識別規(guī)則的編號,,字段表示消息驗證模板對應(yīng)的協(xié)議類型; "消息驗證模板"字段包含消息的特征字符,以及特征字符的格式;""號表示分 隔符;";"表示兩條順序消息驗證模板之間的分隔符。
下面以SMTP為例,描述將SMTP消息與消息驗證模板相匹配的過程。在 本實施例中,以將接收到的6條連續(xù)消息與順序包含6條消息的特征字符以及 特征字符的格式的消息驗證模板相匹配為例。
首先預(yù)先設(shè)置消息驗證模板。以SMTP消息為例,可以根據(jù)SMTP消息在 通信過程消息的交互順序,預(yù)先設(shè)置SMTP消息驗證模板(以正則表達式表示 消息識別模板為例),并進一步形成如下協(xié)議類型驗證規(guī)則。
如圖4所示為SMTP消息的典型交互過程。交互過程如下
客戶端發(fā)送"mail from"請求;
服務(wù)器端接收客戶端的"mail from"請求后,發(fā)送"250,,應(yīng)答; 客戶端接收服務(wù)器端的"250"應(yīng)答后,發(fā)送"rcpt to"請求; 服務(wù)器端接收客戶端的"rcpt to"請求后,發(fā)送"250"應(yīng)答; 客戶端接收服務(wù)器端的"250"的應(yīng)答后,發(fā)送"data"請求; 服務(wù)器端接收客戶端的"data"請求后,發(fā)送"354"應(yīng)答。 根據(jù)上述SMTP消息的交互過程,可以設(shè)置如下協(xié)議驗證規(guī)則(以正則表 達式表示消息驗證模板為例)[SMTP—MAIL:"Amail from"(其中的正則表達式表示以"mail from"開始); SMTP—MAIL—REPLY:"A250,,(其中的正則表達式表示以"250"開始); SMTP—RCPT:"Arcpt to"(其中的正則表達式表示以"rcpt to "開始); SMTP—RCPT—REPLY:"A250,,(其中的正則表達式表示以"250"開始); SMTP—DATA:"data"(其中的正則表達式表示以"data"開始); SMTP—DATA—REPLY:"354"(其中的正則表達式表示以"354"開始)。 在上述的協(xié)議驗證規(guī)則中,SMTP—MAIL、 SMTP—MAIL—REPLY等代表協(xié) 議類型驗證規(guī)則的編號,協(xié)議類型驗證規(guī)則的編號也可以用序號1、 2、 3表示, 用于表示協(xié)議類型驗證規(guī)則之間的前后順序;正則表達式表示消息的特征字符 以及特征字符的格式。
接著將獲得的消息與消息識別模板相匹配。在本實施例中,將接收到的6 條SMTP消息與和SMTP消息所對應(yīng)的消息驗證模板相匹配。優(yōu)選的,本實施 例可以通過具有特定狀態(tài)和遷移條件的狀態(tài)機來實現(xiàn)模板匹配首先將消息驗 證模板進行編譯,形成協(xié)議驗證引擎,該協(xié)議驗證引擎相當于一個協(xié)議狀態(tài)機, 協(xié)議狀態(tài)機模擬協(xié)議典型的協(xié)議交互行為,協(xié)議驗證過程可以看作是通過典型 的協(xié)議狀態(tài)機。如果一個狀態(tài)滿足,則跳入下一個狀態(tài),如果通過協(xié)議狀態(tài)機 的所有狀態(tài),則匹配成功。下面具體描述將獲得的SMTP消息與SMTP消息對 應(yīng)的消息驗證模板相匹配的方法。本實施例中,識別出消息協(xié)議類型為SMTP 協(xié)議后,則將消息與在協(xié)議驗證庫中SMTP消息對應(yīng)的消息驗證模板進行匹酉己。 如圖5所示,SMTP消息的協(xié)議驗證過程如下 狀態(tài)1 ,等待來自客戶端的"mail from"請求; 狀態(tài)2,等待來自服務(wù)器端的"250"應(yīng)答; 狀態(tài)3,等待來自客戶端的"rcptto"請求;狀態(tài)4,等待來自服務(wù)器端的"250"應(yīng)答;
狀態(tài)5,等待來自客戶端的"data"請求;
狀態(tài)6,等待來自服務(wù)器端的"354"應(yīng)答。
若通過協(xié)議狀態(tài)^L的所有狀態(tài),則SMTP消息—瞼證通過。
本步驟中,用于進行驗證的消息數(shù)一般可以為不超過20條,對每個消息進 行驗證時只需要掃描每個消息的前幾百個字節(jié)(如前100字節(jié)),限定進行協(xié)議 驗證的所使用的消息數(shù)、以及對每個消息驗證時對每個消息掃描的最大字節(jié)數(shù), 可以減少協(xié)議-瞼證時的系統(tǒng)開銷。
本發(fā)明實施例消息協(xié)議的驗證方法是基于典型的消息交互過程,可以參考 RFC(Request For Comments ,請求注解),編寫協(xié)議'瞼證規(guī)則。
需要說明的是,協(xié)議驗證過程并不是必需的, 一些消息協(xié)議類型只需要根 據(jù)協(xié)議類型的識別規(guī)則,就能準確地確定消息協(xié)議類型,則不需要進行協(xié)議驗 證,增強了協(xié)議識別的高效性。例如,POP3 (Post Office Protocol,郵局協(xié)議3 )、 Telnet協(xié)議等。
本發(fā)明實施例中,還可以定期或不定期對協(xié)議識別庫和協(xié)-漢驗證庫進行升 級,從而升級消息識別才莫板和消息驗證模板,從而使協(xié)議識別庫和協(xié)議驗證庫 能夠?qū)崟r生效,有很好的協(xié)議模板庫擴展性。
在上述實施例中,是將連續(xù)獲得的通訊端之間傳輸?shù)闹辽賰蓷l消息與消息 識別模板相匹配,為了使驗證更加準確, 一般連續(xù)獲得的至少兩條消息包括客 戶端和服務(wù)器端典型交互過程中的所有消息,消息驗證模板順序包含的至少兩
中的所有消息的特征字符以及特征字符的格式,連續(xù)獲得的至少兩條消息也可 以包括對等網(wǎng)絡(luò)中通訊端典型交互過程中的消息。如圖4所示為SMTP消息的典型交互過程中的所有消息。
為了節(jié)約系統(tǒng)開銷,可以只獲得消息典型交互過程中一個通訊端(如客戶 端或服務(wù)器端,或者對等網(wǎng)絡(luò)中的任一通訊端)發(fā)送的消息,消息驗證模板也 只順序包含典型交互過程中 一個通訊端發(fā)送的消息的特征字符以及特征字符的 格式,這樣,將一個通訊端發(fā)送的消息與消息驗證模板相匹配,可以節(jié)省一半 的匹配處理時間,另外,在后續(xù)建立固化表的過程中,只記錄一個通訊端的IP 地址、端口號、協(xié)議類型,可以節(jié)省系統(tǒng)的存儲資源。在此種具體實現(xiàn)方式中, 可以協(xié)議識別規(guī)則中增加消息識別模板對應(yīng)的消息傳輸方向,用于記錄消息的 發(fā)送通訊端。當查找到與消息相匹配的消息識別模板后,可以根據(jù)協(xié)議類型識 別規(guī)則中預(yù)先定義的消息傳輸方向,來確定傳輸消息的通訊端分別為服務(wù)器端
還是客戶端。如協(xié)議類型識別規(guī)則格式可以為
協(xié)議類型識別規(guī)則的編號消息識別模板消息識別模板對應(yīng)的消息傳 輸方向。
其中,"消息識別模板對應(yīng)的消息傳輸方向"的字段可以"server"或"client"或 "Peer"表示,其中,"server"代表消息來自服務(wù)器端,"client"代表消息來自客 戶端,"Peer"代表消息來自對等通訊端。
后續(xù)對消息的協(xié)議類型進行驗證的過程中,只需接收該確定的通訊端發(fā)送 的消息,并進行驗證。消息驗證模板也只需順序包含一個通訊端發(fā)送的消息的 特征字符以及特征字符的格式,例如,協(xié)議類型驗證規(guī)則可以為SMTP—MAIL:"Amail from":client;
SMTP—RCPT:"Arcpt to":client;
SMTP—DATA: "data" :client。
其中,"client"代表消息來自客戶端。本實施例使用消息驗證模板對消息進行驗證,作為驗證標準的消息驗證模 板不僅包括協(xié)議中消息的特征字符,而且包括消息的特征字符格式,并且消息 驗證模板包含的至少兩條消息的特征字符以及特征字符的格式的順序,與通信 過程中消息的交互順序一致,模擬了消息的交互過程,每個協(xié)議的消息交互過 程是該協(xié)議特有的,所以就能確保通過協(xié)議驗證的協(xié)議類型的正確性。
本實施例中獲得的至少兩條消息可以是消息協(xié)議類型識別過程中獲得的消
息,也可以是在消息協(xié)議類型驗證過程中重新獲得的消息;若是前者,則本發(fā) 明實施例中可以沒有步驟201 。
如圖6所示,為本發(fā)明實施例識別消息協(xié)議類型的裝置示意圖,該裝置包 括第一獲得單元,第一查找單元和第二查找單元,其中,
第一獲得單元,用于獲得通訊端之間傳輸?shù)南?;其中,通訊端包括客?端(Client)和服務(wù)器端(Server),也可以包括兩個對等的通訊端,客戶端包括 移動終端(如移動電話、個人電腦PC、個人數(shù)字助理PDA)和固定終端(如固 定電話)等。本實施例中,獲得消息的過程可以包括主動從通訊端處獲取消息, 或者為被動接收通訊端發(fā)送的消息。本實施例中,可以獲得通訊端間傳輸?shù)耐?整的消息(如完整的一條或兩條消息),也可以獲得通訊端間傳輸?shù)牟糠窒ⅲ?如一條消息的部分字節(jié)(如前100字節(jié)),這樣可以降低系統(tǒng)負擔(dān)。
第一查找單元,用于查找與該消息相匹配的消息識別模板;其中,消息識 別模板用于表達協(xié)議消息包含的特征字符以及特征字符的格式,其中,特征字 符為協(xié)議消息所特有的關(guān)鍵字符,特征字符的格式包括特征字符在協(xié)議消息中 的位置(例如在協(xié)議消息的開頭或結(jié)尾)、特征字符的數(shù)量、以及不同特征字符 之間的前后順序。本實施例中所稱的與該消息相匹配,是指該消息滿足消息識 別模板表達的特征字符以及特征字符的格式。消息識別模板可以存儲在第一查找單元中,也可以存儲在該裝置中的其他模塊中。
第二查找單元,用于查找與該消息相匹配的消息識別才莫板對應(yīng)的協(xié)議類型。 可選的,本實施例中的識別消息協(xié)議類型的裝置還可以進一步包括
建立單元,用于建立通訊端與確定的消息的協(xié)議類型的對應(yīng)關(guān)系;建立單 元可以建立包含通訊端的標識(IP地址和/或端口號)和消息的協(xié)議類型的固化 表,對協(xié)議識別結(jié)果進行"固化",固化表的結(jié)構(gòu)可以為< IP地址,IP地址的端 口,協(xié)議類型>。
如圖7所示,為本發(fā)明實施例驗證消息協(xié)議類型的裝置示意圖,該裝置包 括第二獲得單元和判斷單元,其中
第二獲得單元,用于連續(xù)獲得通訊端之間傳輸?shù)闹辽賰蓷l消息;第二獲得
判斷單元,用于判斷獲得的至少兩條消息與消息驗證模板是否匹配;其中, 消息驗證模板順序包含至少兩條消息的特征字符以及特征字符的格式,順序是 指包含的至少兩條消息的特征字符以及特征字符的格式的順序與通信過程中消 息的交互順序一致。本實施例中所稱的匹配,是指所述連續(xù)獲得的至少兩條消 息順序滿足消息驗證模板順序表達的所述至少兩條消息的特征字符以及特征字 符的格式。當然,當接收到的消息只有兩條時,消息驗證模板也可以包含兩條 以上的消息的特征字符以及特征字符的格式,只要接收到的兩條消息順序滿足 消息驗證模板順序表達的其中兩條消息的特征字符以及特征字符的格式即可。 消息驗證模板可以存儲在匹配單元中,也可以存儲在該裝置中的其他模塊中。
本發(fā)明實施例中能夠識別的協(xié)議類型可以為文本協(xié)議,例如FTP (File Transfer Protocol,文件傳輸協(xié)議)、HTTP (Hypertext Transfer Protocol,超文本傳輸 協(xié)議)、SMTP ( Simple Message Transfer Protocol,簡單郵件傳輸協(xié)議)、BT ( BitTorrent,比特流),也可以為二進制協(xié)議,例如TELNET (遠程登錄協(xié)議)、TFTP (Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)、DNS (Domain Name Server,
域名解析系統(tǒng))等。
本發(fā)明實施例可用于網(wǎng)絡(luò)技術(shù)的入侵檢測系統(tǒng)和入侵防御系統(tǒng)中,對傳輸 層以上各層網(wǎng)絡(luò)協(xié)議類型的識別。本領(lǐng)域技術(shù)人員可以理解,本發(fā)明實施例還 可以用于其它應(yīng)用,例如對其它標準協(xié)議或者私有協(xié)議的識別應(yīng)用中。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明 可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但4艮 多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上 或者說對背景技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機 軟件產(chǎn)品可以存儲在可讀取的存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包 括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò) 設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明 的保護范圍之內(nèi)。
權(quán)利要求
1. 一種識別消息協(xié)議類型的方法,其特征在于,包括獲得通訊端之間傳輸?shù)南?;查找與所述消息相匹配的消息識別模板,所述消息識別模板包含消息的特征字符和特征字符的格式;查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型。
2、 根據(jù)權(quán)利要求1所述的識別消息協(xié)議類型的方法,其特征在于,還包括 建立通訊端與查找到的消息的協(xié)議類型的對應(yīng)關(guān)系。
3、 根據(jù)權(quán)利要求2所述的識別消息協(xié)議類型的方法,其特征在于,所述對 應(yīng)關(guān)系為通訊端的IP地址和/或端口號,與消息的協(xié)-漢類型的對應(yīng)關(guān)系。
4、 根據(jù)權(quán)利要求1所述的識別消息協(xié)議類型的方法,其特征在于,所述消 息識別模板由正則表達式表示。
5、 一種驗證消息協(xié)議類型的方法,其特征在于,包括 連續(xù)獲得通訊端之間傳輸?shù)闹辽賰蓷l消息;判斷獲得的至少兩條消息與消息驗證模板是否匹配,所述消息驗證模板順 序包含至少兩條消息的特征字符以及特征字符的格式。
6、 根據(jù)權(quán)利要求5所述的驗證消息協(xié)議類型的方法,其特征在于,所述消 息驗證模板由正則表達式表示。
7、 一種識別消息協(xié)議類型的方法,其特征在于,包括 獲得通訊端之間傳輸?shù)南?;查找與所述消息相匹配的消息識別才莫板,所述消息識別才莫板包含消息的特 征字符和特征字符的格式;查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型;判斷獲得的消息與消息驗證模板是否匹配,所述消息驗證模板順序包含至少兩條消息的特征字符以及特征字符的格式;如果匹配,則確定所述消息的協(xié)議類型為查找到的與該消息相匹配的消息 識別模板對應(yīng)的協(xié)i義類型。
8、 根據(jù)權(quán)利要求7所述的識別消息協(xié)議類型的方法,其特征在于,還包括 建立通訊端與確定的消息的協(xié)議類型的對應(yīng)關(guān)系。
9、 根據(jù)權(quán)利要求8所述的識別消息協(xié)議類型的方法,其特征在于,所述對 應(yīng)關(guān)系為通訊端的IP地址和/或端口號,與消息的協(xié)-漢類型的對應(yīng)關(guān)系。
10、 根據(jù)權(quán)利要求7所述的識別消息協(xié)議類型的方法,其特征在于,所述 消息識別模板和消息驗證模板由正則表達式表示。
11、 一種識別消息協(xié)議類型的裝置,其特征在于,包括 第一獲得單元,用于獲得通訊端之間傳輸?shù)南?;第一查找單元,用于查找與該消息相匹配的消息識別4莫板,所述消息識別 模板包含消息的特征字符和特征字符的格式;第二查找單元,用于查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型。
12、 根據(jù)權(quán)利要求11所述的識別消息協(xié)議類型的裝置,其特征在于,還包 括建立單元,用于建立通訊端與確定的消息的協(xié)議類型的對應(yīng)關(guān)系。
13、 根據(jù)權(quán)利要求12所述的識別消息協(xié)議類型的裝置,其特征在于,所述 對應(yīng)關(guān)系為通訊端的IP地址和/或端口號,與消息的協(xié)議類型的對應(yīng)關(guān)系。
14、 一種驗證消息協(xié)議類型的裝置,其特征在于,包括第二獲得單元,用于連續(xù)獲得通訊端之間傳輸?shù)闹辽賰蓷l消息; 判斷單元,用于判斷獲得的至少兩條消息與消息驗證模板是否匹配,所述 消息驗證模板順序包含至少兩條消息的特征字符以及特征字符的格式。
15、 根據(jù)權(quán)利要求14所述的驗證消息協(xié)議類型的裝置,其特征在于,所述1消息驗證模板由正則表達式表示。
全文摘要
本發(fā)明實施例公開了一種識別消息協(xié)議類型的方法和裝置,能夠識別消息所屬的協(xié)議類型,識別的正確率比較高。所述方法包括獲得通訊端之間傳輸?shù)南?;查找與所述消息相匹配的消息識別模板,所述消息識別模板包含消息的特征字符和特征字符的格式;查找與該消息相匹配的消息識別模板對應(yīng)的協(xié)議類型。本發(fā)明實施例還公開了一種驗證消息協(xié)議類型的方法和裝置。本發(fā)明實施例用于協(xié)議的識別和驗證。
文檔編號H04L1/16GK101287010SQ20081011083
公開日2008年10月15日 申請日期2008年6月12日 優(yōu)先權(quán)日2008年6月12日
發(fā)明者朱曉明 申請人:華為技術(shù)有限公司