亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備的制作方法

文檔序號(hào):7781010閱讀:230來(lái)源:國(guó)知局
報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備。匹配方法包括:根據(jù)狀態(tài)機(jī)對(duì)接收到的報(bào)文中各個(gè)協(xié)議字段進(jìn)行匹配,輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè);狀態(tài)機(jī)包括關(guān)鍵字子狀態(tài)機(jī)、位置子狀態(tài)機(jī)和域值子狀態(tài)機(jī);位置子狀態(tài)機(jī)用于對(duì)位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè);關(guān)鍵字子狀態(tài)機(jī)用于對(duì)關(guān)鍵字敏感字段進(jìn)行匹配,并在確認(rèn)有特定的關(guān)鍵字時(shí),跳轉(zhuǎn)到對(duì)應(yīng)的域值子狀態(tài)機(jī);域值子狀態(tài)機(jī)用于查找特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)。本發(fā)明技術(shù)方案能夠通過(guò)同一引擎實(shí)現(xiàn)對(duì)報(bào)文的字段解析與識(shí)別,減少邏輯資源的占用,提高集成化的靈活性。
【專利說(shuō)明】報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)中報(bào)文的格式日益復(fù)雜,越來(lái)越多的協(xié)議承載于超文本傳輸協(xié)議(HypertextTransfer Proto col,簡(jiǎn)稱為HTTP)之上,針對(duì)傳統(tǒng)HTTP報(bào)文的字段識(shí)別已經(jīng)無(wú)法滿足產(chǎn)品的需求,并且字段解析也越來(lái)越重要。
[0003]針對(duì)傳統(tǒng)HTTP報(bào)文的匹配過(guò)程包括字段解析和字段識(shí)別兩個(gè)獨(dú)立的過(guò)程。具體的,對(duì)字段解析規(guī)則進(jìn)行編譯,獲得用于字段解析過(guò)程的狀態(tài)機(jī),并對(duì)字段識(shí)別規(guī)則進(jìn)行編譯,獲得用于字段識(shí)別過(guò)程的狀態(tài)機(jī),然后將這兩個(gè)狀態(tài)機(jī)加載到硬件的存儲(chǔ)器(Memory)中,字段解析引擎接收到報(bào)文后,按照用于字段解析過(guò)程的狀態(tài)機(jī),對(duì)報(bào)文進(jìn)行字段解析并向字段識(shí)別引擎輸出字段解析結(jié)果;字段識(shí)別引擎接收字段解析引擎輸出的字段解析結(jié)果,按照用于字段識(shí)別過(guò)程的狀態(tài)機(jī),對(duì)報(bào)文進(jìn)行字段識(shí)別并最終輸出字段識(shí)別結(jié)果。在現(xiàn)有技術(shù)中,字段解析引擎和字段識(shí)別引擎不能復(fù)用,占用的邏輯資源較多,尤其是集成化時(shí)靈活性較差。

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

[0004]本發(fā)明實(shí)施例提供一種報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備,用以通過(guò)同一引擎實(shí)現(xiàn)對(duì)報(bào)文的字段解析與識(shí)別,減少邏輯資源的占用,提高集成化的靈活性。
[0005]第一方面提供一種報(bào)文匹配方法,應(yīng)用于報(bào)文匹配設(shè)備,所述方法包括:
[0006]接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段;
[0007]根據(jù)狀態(tài)機(jī)對(duì)所述報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果;
[0008]其中,所述狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)域值子狀態(tài)機(jī);
[0009]所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段--對(duì)應(yīng),所述至少一
個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0010]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;[0011]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0012]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0013]或者,
[0014]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0015]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0016]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式或第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0017]第二方面提供一種狀態(tài)機(jī)編譯方法,包括:
[0018]接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則;
[0019]獲取所述規(guī)則文件中的各個(gè)匹配規(guī)則;
[0020]將各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系;
[0021]從所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合;
[0022]將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),并連接各個(gè)位置子狀態(tài)機(jī);
[0023]將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī);
[0024]將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī);
[0025]其中,所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0026]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0027]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0028]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0029]或者,
[0030]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0031]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0032]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式或第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
`[0033]第三方面提供一種報(bào)文匹配設(shè)備,包括:
[0034]接收模塊,用于接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段;
[0035]匹配模塊,用于根據(jù)狀態(tài)機(jī)對(duì)所述接收模塊接收的所述報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果;
[0036]其中,所述狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)域值子狀態(tài)機(jī);
[0037]所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段--對(duì)應(yīng),所述至少一
個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0038]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;[0039]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0040]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0041]或者,
[0042]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0043]結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0044]結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式或第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式中,所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0045]第四方面提供一種狀態(tài)機(jī)編譯設(shè)備,包括:
[0046]接收模塊,用于接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則;
[0047]獲取模塊,用于獲取所述接收模塊接收的所述規(guī)則文件中的各個(gè)匹配規(guī)則;
[0048]劃分模塊,用于將所述獲取模塊獲取的各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系;
[0049]所述獲取模塊還用于,從所述劃分模塊分出的所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合;
[0050]編譯模塊,用于將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),連接各個(gè)位置子狀態(tài)機(jī),將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī),并將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī);
[0051]其中,所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0052]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0053]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0054]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0055]或者,
[0056]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0057]結(jié)合第四方面或第四方面的第一種可能的實(shí)現(xiàn)方式,在第四方面的第二種可能的實(shí)現(xiàn)方式中,所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0058]結(jié)合第四方面或第四方面的第一種可能的實(shí)現(xiàn)方式或第四方面的第二種可能的實(shí)現(xiàn)方式,在第四方面的第三種可能的實(shí)現(xiàn)方式中,所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0059]本發(fā)明實(shí)施例提供的報(bào)文匹配方法、狀態(tài)機(jī)編譯方法及設(shè)備,在接收到報(bào)文后,根據(jù)狀態(tài)機(jī)對(duì)報(bào)文中的各協(xié)議字段進(jìn)行匹配,輸出與協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果,其中,所使用的狀態(tài)機(jī)包括關(guān)鍵字段子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)閾值子狀態(tài)機(jī)和;基于位置子狀態(tài)機(jī)對(duì)協(xié)議字段中的位置敏感字段進(jìn)行字段解析與識(shí)別,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果,而基于關(guān)鍵字段子狀態(tài)機(jī)對(duì)協(xié)議字段中的關(guān)鍵字敏感字段進(jìn)行字段解析與識(shí)別,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果,再基于域值子狀態(tài)機(jī)查找特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。由上述分析可見(jiàn),本發(fā)明實(shí)施例中的狀態(tài)機(jī)通過(guò)將字段解析與識(shí)別過(guò)程融合在一起,允許由報(bào)文匹配設(shè)備根據(jù)該狀態(tài)機(jī)同時(shí)完成對(duì)報(bào)文的解析和識(shí)別,提高了報(bào)文匹配設(shè)備的復(fù)用度,減少了所占用的邏輯資源,有利于集成化。
【專利附圖】

【附圖說(shuō)明】
[0060]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0061]圖1為本發(fā)明實(shí)施例提供的一種報(bào)文匹配方法的流程圖;
[0062]圖2a為本發(fā)明實(shí)施例提供的一種位置子狀態(tài)機(jī)的結(jié)構(gòu)示意圖;
[0063]圖2b為本發(fā)明實(shí)施例提供的另一種位置子狀態(tài)機(jī)的結(jié)構(gòu)示意圖;
[0064]圖3為本發(fā)明實(shí)施例提供的一種用ID來(lái)標(biāo)識(shí)關(guān)鍵字與域值在報(bào)文中的位置的方式示意圖;
[0065]圖4為本發(fā)明實(shí)施例提供的關(guān)鍵字子狀態(tài)機(jī)的一種結(jié)構(gòu)示意圖;
[0066]圖5a為本發(fā)明實(shí)施例提供的一種狀態(tài)機(jī)編譯方法的流程圖;
[0067]圖5b為本發(fā)明實(shí)施例提供的HTTP請(qǐng)求報(bào)文的結(jié)構(gòu)示意圖;
[0068]圖6為本發(fā)明實(shí)施例提供的關(guān)鍵字子狀態(tài)機(jī)與域值子狀態(tài)機(jī)互聯(lián)的一種結(jié)構(gòu)示意圖;
[0069]圖7為本發(fā)明實(shí)施例提供的一種報(bào)文匹配設(shè)備的結(jié)構(gòu)示意圖;
[0070]圖8為本發(fā)明實(shí)施例提供的另一種報(bào)文匹配設(shè)備的結(jié)構(gòu)示意圖;
[0071]圖9為本發(fā)明實(shí)施例提供的一種狀態(tài)機(jī)編譯設(shè)備的結(jié)構(gòu)示意圖;
[0072]圖10為本發(fā)明實(shí)施例提供的另一種狀態(tài)機(jī)編譯設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0073]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0074]圖1為本發(fā)明實(shí)施例提供的一種報(bào)文匹配方法的流程圖。本實(shí)施例提供的方法可由報(bào)文匹配設(shè)備執(zhí)行,但不限于此。如圖1所示,本實(shí)施例的方法包括:
[0075]步驟101、接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段。
[0076]本實(shí)施例的報(bào)文可以是各種可以采用位置和關(guān)鍵字區(qū)分字段的協(xié)議下的報(bào)文,例如可以是HTTP報(bào)文、實(shí)時(shí)流傳輸協(xié)議(Real Time Streaming Protocol,簡(jiǎn)稱為RTSP)報(bào)文等。這些報(bào)文包括多個(gè)協(xié)議字段(協(xié)議定義的相關(guān)字段)。以HTTP報(bào)文為例,所包括的協(xié)議字段有方法(Method)字段、統(tǒng)一資源定位符(Universal Resource Locator,簡(jiǎn)稱為URL)、版本號(hào)(version)字段和主機(jī)(Host)字段等等。
[0077]所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段。所述位置敏感字段也就是對(duì)位置敏感的協(xié)議字段,例如HTTP首行中的方法字段、URL字段和版本號(hào)字段都屬于位置敏感字段。協(xié)議中預(yù)先規(guī)定了這些位置敏感字段之間的位置關(guān)系,通過(guò)位置可以確定報(bào)文中的位置敏感字段。所謂關(guān)鍵字敏感字段是指以關(guān)鍵字進(jìn)行區(qū)分的協(xié)議字段,這類協(xié)議字段在位置敏感字段后出現(xiàn),且沒(méi)有固定的順序,但都包括固定的關(guān)鍵字。通常,關(guān)鍵字敏感字段是由關(guān)鍵字+界定符+取值構(gòu)成,所述界定符可以是冒號(hào)“:”。舉例說(shuō)明,HTTP報(bào)文中的主機(jī)字段、用戶代理(User-agent)字段等都屬于關(guān)鍵字敏感字段。其中,主機(jī)字段、用戶代理字段等是不同的關(guān)鍵字敏感字段。
[0078]步驟102、根據(jù)狀態(tài)機(jī)對(duì)所述報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。
[0079]所述狀態(tài)機(jī)為一些狀態(tài)信息的集合,包括多個(gè)狀態(tài)節(jié)點(diǎn)(以下簡(jiǎn)稱為節(jié)點(diǎn))以及在各節(jié)點(diǎn)間跳轉(zhuǎn)所需的跳轉(zhuǎn)條件等狀態(tài)信息。狀態(tài)機(jī)是一種邏輯概念,其具體實(shí)現(xiàn)形式(即狀態(tài)機(jī)文件的形式)為本領(lǐng)域技術(shù)人員所公知的技術(shù),這里并不詳細(xì)說(shuō)明,本實(shí)施例及以下各實(shí)施例中,主要側(cè)重于狀態(tài)機(jī)邏輯結(jié)構(gòu)的介紹說(shuō)明。
[0080]在本發(fā)明實(shí)施例中,狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)閾值子狀態(tài)機(jī)。
[0081]其中,至少一個(gè)位置子狀態(tài)機(jī)與報(bào)文的協(xié)議字段中的至少一個(gè)位置敏感字段一一對(duì)應(yīng),至少一個(gè)位置子狀態(tài)機(jī)之間按照至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)位置子狀態(tài)機(jī)跳轉(zhuǎn)到關(guān)鍵字子狀態(tài)機(jī)。換句話說(shuō),至少一個(gè)位置子狀態(tài)機(jī)之間按照所對(duì)應(yīng)的的位置敏感字段之間的位置順序依次連接,而最后一個(gè)位置子狀態(tài)機(jī)連接于關(guān)鍵字子狀態(tài)機(jī)。例如,HTTP首行中的位置敏感字段依次是方法字段、URL字段和版本號(hào)字段,方法字段、URL字段和版本號(hào)字段是不同的位置敏感字段,則三個(gè)位置敏感字段對(duì)應(yīng)的位置子狀態(tài)機(jī)依次是方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī)、連接于方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī)之后的URL字段對(duì)應(yīng)的位置子狀態(tài)機(jī)和連接于URL字段對(duì)應(yīng)的位置子狀態(tài)機(jī)之后的版本號(hào)字段對(duì)應(yīng)的位置子狀態(tài)機(jī)。
[0082]其中,每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī)。
[0083]在本實(shí)施例中,報(bào)文匹配設(shè)備通過(guò)位置子狀態(tài)機(jī)可以同時(shí)完成對(duì)該位置子狀態(tài)機(jī)所對(duì)應(yīng)的位置敏感字段的字段解析和字段識(shí)別,對(duì)應(yīng)字段解析過(guò)程和字段識(shí)別過(guò)程都會(huì)產(chǎn)生一個(gè)結(jié)果,根據(jù)實(shí)際應(yīng)用需求可以定義只輸出字段解析結(jié)果,也可以只輸出字段識(shí)別結(jié)果,或者也可以同時(shí)輸出字段解析結(jié)果和字段識(shí)別結(jié)果。或者,報(bào)文匹配設(shè)備也可以在協(xié)議規(guī)定不需要對(duì)該位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行匹配的情況下,直接跳過(guò)該位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī)。
[0084]對(duì)于位置敏感字段來(lái)說(shuō),字段解析過(guò)程主要是找到該位置敏感字段,具體是指確定該位置敏感字段是從哪開始,從哪結(jié)束的,即確定該位置敏感字段在報(bào)文中的位置,相應(yīng)的,字段解析結(jié)果包括位置敏感字段的起始偏移量和結(jié)束偏移量,以及由起始偏移量和結(jié)束偏移量確定的該位置敏感字段的域值,即位置敏感字段的取值。舉例說(shuō)明,HTTP報(bào)文中的方法字段、URL字段、版本號(hào)字段等都有一個(gè)具體的取值(即域值),例如,方法字段對(duì)應(yīng)的域值可能是“get” ;URL字段對(duì)應(yīng)的域值可能是“www.sohu.com”、“www.yahoo, com.cn”等;版本號(hào)字段對(duì)應(yīng)的域值可能是“httpl.1”。
[0085]而對(duì)于位置敏感字段來(lái)說(shuō),字段識(shí)別過(guò)程主要是判斷位置敏感字段對(duì)應(yīng)的域值是否滿足字段識(shí)別規(guī)則,字段識(shí)別規(guī)則通常用正則表達(dá)式來(lái)表示,例如,可能是判斷方法字段對(duì)應(yīng)的域值是否為“get”,可能是判斷URL字段對(duì)應(yīng)的域值是否包含字符串“sohu”,可能是判斷版本號(hào)字段對(duì)應(yīng)的域值是否包含字符串“1.1”等,并輸出一個(gè)字段識(shí)別結(jié)果。其中,如果判斷結(jié)果為滿足,則輸出滿足規(guī)則的字段識(shí)別結(jié)果。
[0086]基于上述,在協(xié)議規(guī)定需要對(duì)位置敏感字段進(jìn)行匹配的情況下,本實(shí)施例中的一個(gè)或多個(gè)位置子狀態(tài)機(jī)可以包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn)。所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到第一解析結(jié)果輸出節(jié)點(diǎn)以及第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。在此說(shuō)明,上述條件中的“特定位置”相當(dāng)于上面提到的位置敏感字段在報(bào)文中的位置,而上述條件中的“第一特定字符串”相當(dāng)于上面提到的字段識(shí)別規(guī)則。第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)分別對(duì)應(yīng)于上面提到的字段解析結(jié)果和字段識(shí)別結(jié)果。
[0087]或者,在協(xié)議規(guī)定不需要對(duì)位置敏感字段進(jìn)行匹配的情況下,本實(shí)施例中的一個(gè)或多個(gè)位置子狀態(tài)機(jī)也可以不包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),報(bào)文匹配設(shè)備可以直接跳過(guò)本位置子狀態(tài)機(jī)。
[0088]可選的,在位置子狀態(tài)機(jī)中,可以以身份標(biāo)識(shí)(Identity,簡(jiǎn)稱為ID)的方式來(lái)表示位置敏感字段的字段解析結(jié)果。為便于區(qū)分,本實(shí)施例將表示位置敏感字段的字段解析結(jié)果的ID記為第一 ID。其中,表征不同位置敏感字段的字段解析結(jié)果的第一 ID不相同。在該實(shí)施方式中,位置子狀態(tài)機(jī)中同時(shí)定義了各位置敏感字段的字段解析結(jié)果對(duì)應(yīng)的第一ID,如果需要輸出位置敏感字段的字段解析結(jié)果,則報(bào)文匹配設(shè)備實(shí)際可以輸出該字段解析結(jié)果對(duì)應(yīng)的第一 ID即可。
[0089]同理,在位置子狀態(tài)機(jī)中,可以以ID的方式來(lái)表示位置敏感字段的字段識(shí)別結(jié)果。為便于區(qū)分,本實(shí)施例將表示位置敏感字段的字段識(shí)別結(jié)果的ID記為第二 ID。其中,表示不同位置敏感字段的字段識(shí)別結(jié)果的第二 ID不相同。在該實(shí)施方式中,位置子狀態(tài)機(jī)中同時(shí)定義了各位置敏感字段的字段識(shí)別結(jié)果對(duì)應(yīng)的第二 ID,如果需要輸出位置敏感字段的字段識(shí)別結(jié)果,則報(bào)文匹配設(shè)備實(shí)際可以輸出該字段識(shí)別結(jié)果對(duì)應(yīng)的第二 ID即可。
[0090]可選的,如果在位置子狀態(tài)機(jī)中,需要同時(shí)輸出位置敏感字段的字段解析結(jié)果和字段識(shí)別結(jié)果,則報(bào)文匹配設(shè)備可以只需將字段解析結(jié)果對(duì)應(yīng)的第一 ID附在字段識(shí)別結(jié)果對(duì)應(yīng)的第二 ID后面輸出即可。
[0091]圖2a為本發(fā)明實(shí)施例提供的一種位置子狀態(tài)機(jī)的結(jié)構(gòu)示意圖。圖2a所示為方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī),圖2a所示的方法字段包括“get”和“post”兩種規(guī)則。如圖2a所示,該方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī)包括多個(gè)節(jié)點(diǎn),例如“根節(jié)點(diǎn)”以及圖2a中帶箭頭的線條所指向的節(jié)點(diǎn)等。一個(gè)節(jié)點(diǎn)標(biāo)識(shí)該子狀態(tài)機(jī)下的一個(gè)狀態(tài),同一子狀態(tài)機(jī)下的節(jié)點(diǎn)之間以及不同子狀態(tài)機(jī)下的節(jié)點(diǎn)之間使用有向連線(如圖2a中帶箭頭的線條)連接。節(jié)點(diǎn)之間可以發(fā)生跳轉(zhuǎn),例如假設(shè)某個(gè)子狀態(tài)機(jī)當(dāng)前處于某一節(jié)點(diǎn)所標(biāo)識(shí)的狀態(tài),在滿足某個(gè)條件時(shí),子狀態(tài)機(jī)或子狀態(tài)機(jī)之間會(huì)發(fā)生狀態(tài)遷移,遷移的目的節(jié)點(diǎn)為與該當(dāng)前節(jié)點(diǎn)具有連接關(guān)系的若干節(jié)點(diǎn)中的一個(gè)。圖2a中的“根節(jié)點(diǎn)”是指方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī)的開始節(jié)點(diǎn),該開始節(jié)點(diǎn)可能是空節(jié)點(diǎn),也可能是方法字段的前一個(gè)字段對(duì)應(yīng)的位置子狀態(tài)機(jī)中的一個(gè)節(jié)點(diǎn)(可簡(jiǎn)稱為次態(tài)),該節(jié)點(diǎn)用于表示即將開始下一個(gè)位置敏感字段的識(shí)別與解析。如圖2a所示,“get”下方的橢圓中是“get方法對(duì)應(yīng)的第二 ID”,該橢圓是一個(gè)第一解析結(jié)果輸出節(jié)點(diǎn);“post”下方的橢圓中是“post字段對(duì)應(yīng)的第二 ID”,該橢圓也是一個(gè)第一解析結(jié)果輸出節(jié)點(diǎn);例如,在HTTP請(qǐng)求報(bào)文首行中各字段使用空格符或者制表符進(jìn)行分隔,以此形成了三個(gè)位置敏感的字段,從HTTP報(bào)文的第一個(gè)非空格符且非制表符開始,到遇到第一個(gè)空格符或者制表符之間的字符串,視作HTTP報(bào)文的方法字段,因此當(dāng)匹配到“\x20\x09”時(shí),意味著該方法字段結(jié)束,則可以輸出該方法字段對(duì)應(yīng)的第一 ID,即圖2a中最后一個(gè)橢圓是一個(gè)第一識(shí)別結(jié)果輸出節(jié)點(diǎn)。圖2a中的\x20\x09是以十六進(jìn)制表示的空格符制表符,相應(yīng)的,圖2a中的“ !\x20\x09”表示非空格符制表符。在此說(shuō)明,在根節(jié)點(diǎn)和第一解析結(jié)果輸出節(jié)點(diǎn)之間存在多個(gè)匹配節(jié)點(diǎn),圖2a中未示出。
[0092]由圖2a可見(jiàn),當(dāng)報(bào)文匹配設(shè)備根據(jù)該位置子狀態(tài)機(jī)對(duì)報(bào)文中的位置敏感字段進(jìn)行匹配時(shí),走完該位置子狀態(tài)機(jī)即可輸出兩個(gè)結(jié)果(即字段解析結(jié)果和字段識(shí)別結(jié)果),不需要像現(xiàn)有技術(shù)那樣需要走兩個(gè)狀態(tài)機(jī),且不需要兩個(gè)引擎。
[0093]圖2a所示僅為方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī),進(jìn)一步,如圖2b所示,按照各個(gè)位置敏感字段之間的位置關(guān)系,連接于方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī)之后的是URL字段對(duì)應(yīng)的位置子狀態(tài)機(jī)。圖2b中上面虛線框表示方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī),下面虛線框表示連接于方法字段對(duì)應(yīng)的位置子狀態(tài)機(jī)之后的URL字段對(duì)應(yīng)的位置子狀態(tài)機(jī)。關(guān)于URL字段對(duì)應(yīng)的位置子狀態(tài)機(jī)不再詳細(xì)說(shuō)明。
[0094]對(duì)于關(guān)鍵字敏感字段,由于其在位置敏感字段后出現(xiàn),且出現(xiàn)順序不固定,因此,在本實(shí)施例中將所有關(guān)鍵字連接起來(lái),采取將關(guān)鍵字與關(guān)鍵字對(duì)應(yīng)的域值(或取值)分開編譯的方式,對(duì)對(duì)應(yīng)的規(guī)則進(jìn)行編碼分別生成關(guān)鍵字子狀態(tài)機(jī)和至少一個(gè)域值子狀態(tài)機(jī)。
[0095]在本實(shí)施例中,關(guān)鍵字子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為匹配結(jié)果。域值子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為匹配結(jié)果。在本實(shí)施例中,報(bào)文匹配設(shè)備通過(guò)關(guān)鍵字子狀態(tài)機(jī)和域值子狀態(tài)機(jī)可以同時(shí)完成對(duì)關(guān)鍵字敏感字段的字段解析和字段識(shí)別,對(duì)應(yīng)字段解析過(guò)程和字段識(shí)別過(guò)程都會(huì)有一個(gè)結(jié)果,根據(jù)實(shí)際應(yīng)用需求可以定義只輸出字段解析結(jié)果,也可以定義只輸出字段識(shí)別結(jié)果,或者也可以同時(shí)輸出字段解析結(jié)果和字段識(shí)別結(jié)果。
[0096]對(duì)于關(guān)鍵字敏感字段來(lái)說(shuō),字段解析過(guò)程主要是找到關(guān)鍵字敏感字段,具體是指確定該關(guān)鍵字敏感字段是從哪開始,從哪結(jié)束的,即確認(rèn)報(bào)文中是否有該關(guān)鍵字。該過(guò)程可主要基于關(guān)鍵字子狀態(tài)機(jī)來(lái)完成??蛇x的,關(guān)鍵字子狀態(tài)機(jī)的一種邏輯結(jié)構(gòu)可以包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)。所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)?;诖?,報(bào)文匹配設(shè)備對(duì)關(guān)鍵字敏感字段進(jìn)行匹配,具體是指通過(guò)關(guān)鍵字子狀態(tài)機(jī)中的一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)匹配關(guān)鍵字敏感字段是否包含特定的關(guān)鍵字,并當(dāng)匹配到特定關(guān)鍵字時(shí)跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。第二識(shí)別結(jié)果輸出節(jié)點(diǎn)主要用于指向該特定關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī)。
[0097]而對(duì)關(guān)鍵字敏感字段來(lái)說(shuō),字段識(shí)別過(guò)程主要是判斷關(guān)鍵字敏感字段中的域值(即關(guān)鍵字的域值)是否滿足字段識(shí)別規(guī)則,字段識(shí)別規(guī)則通常用正則表達(dá)式來(lái)表示,即主要是判斷關(guān)鍵字的域值是否包含規(guī)則所定義的特定字符串。該字段識(shí)別過(guò)程主要可基于域值子狀態(tài)機(jī)來(lái)完成??蛇x的,域值子狀態(tài)機(jī)的一種邏輯結(jié)構(gòu)可以包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)。所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配由關(guān)鍵字子狀態(tài)機(jī)確認(rèn)出的特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。在此說(shuō)明,第二特定字符串主要是指上層應(yīng)用需要用到的字符串,例如可以是youtube, com之類的?;诖耍瑘?bào)文匹配設(shè)備可以通過(guò)域值子狀態(tài)機(jī)中的一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)對(duì)由關(guān)鍵字子狀態(tài)機(jī)確認(rèn)的關(guān)鍵字的域值進(jìn)行判斷,確認(rèn)該域值中是否有第二特定字符串,并在確定該域值中有第二特定字符串時(shí),跳轉(zhuǎn)到第三解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以輸出對(duì)該關(guān)鍵字敏感字段的字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。
[0098]可選的,可以以ID方式來(lái)表示關(guān)鍵字敏感字段的字段解析結(jié)果和字段識(shí)別結(jié)果。為便于區(qū)分,將用于表示對(duì)關(guān)鍵字敏感字段的字段解析結(jié)果的ID記為第三ID ;將用于表示對(duì)關(guān)鍵字敏感字段的字段識(shí)別結(jié)果的ID記為第四ID。例如,在關(guān)鍵字子狀態(tài)機(jī)中,可以用解析結(jié)束ID表示字段解析結(jié)果,即表示關(guān)鍵字在報(bào)文中的結(jié)束位置,記為pidO,則第三ID可以包括PidO ;在域值子狀態(tài)機(jī)中,可以用域值起始ID表示關(guān)鍵字的域值在報(bào)文中的起始位置,記為Pidl ;用域值結(jié)束ID表示關(guān)鍵字的域值在報(bào)文中的結(jié)束位置,記為pid2,則第四ID可以包括pidl和pid2。
[0099]以上述為例,一種用ID來(lái)標(biāo)識(shí)關(guān)鍵字與其域值在報(bào)文中的位置的方式如圖3所示,圖3所示的關(guān)鍵字敏感字段為主機(jī)字段,該字段的域值為“sina.com”?;诖耍瑘D4所示為關(guān)鍵字子狀態(tài)機(jī)的一種結(jié)構(gòu),該關(guān)鍵字子狀態(tài)機(jī)包括一個(gè)根節(jié)點(diǎn)、主機(jī)字段對(duì)應(yīng)的第二解析結(jié)果輸出節(jié)點(diǎn)、用戶代理字段對(duì)應(yīng)的第二解析結(jié)果輸出節(jié)點(diǎn),以及主機(jī)字段和用戶代理字段對(duì)應(yīng)的第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。圖4中的根節(jié)點(diǎn)是最后一個(gè)位置子狀態(tài)機(jī)的一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)表示的狀態(tài)是當(dāng)前已經(jīng)解析到最后一個(gè)位置敏感字段,即將開始關(guān)鍵字敏感字段的識(shí)別與解析。在圖4中,主機(jī)字段下面的橢圓中是主機(jī)字段對(duì)應(yīng)的pidO,該橢圓是一個(gè)第二解析結(jié)果輸出節(jié)點(diǎn);用戶代理字段下面的橢圓中是用戶代理字段對(duì)應(yīng)的PidO,該橢圓也是一個(gè)第二解析結(jié)果輸出節(jié)點(diǎn);圖4中虛線箭頭指向的橢圓是第二識(shí)別結(jié)果輸出節(jié)點(diǎn),該節(jié)點(diǎn)主要用于指向所對(duì)應(yīng)的域值子狀態(tài)機(jī),以便完成對(duì)該關(guān)鍵字敏感字段的識(shí)別;其中,使用虛線表示從當(dāng)前狀態(tài)跳轉(zhuǎn)到下一個(gè)狀態(tài)并不消耗字符,字符的消耗在下一個(gè)狀態(tài)中進(jìn)行。
[0100]由上述可見(jiàn),在本實(shí)施例提供的方法中,由于使用的狀態(tài)機(jī)將字段解析與識(shí)別過(guò)程融合在一起,因此允許報(bào)文匹配設(shè)備根據(jù)該狀態(tài)機(jī)同時(shí)完成對(duì)報(bào)文的解析和識(shí)別,不需要多個(gè)報(bào)文匹配設(shè)備分別對(duì)報(bào)文進(jìn)行解析和識(shí)別,提高了報(bào)文匹配設(shè)備的復(fù)用度,減少了報(bào)文匹配設(shè)備所占用的邏輯資源,有利于集成化。進(jìn)一步,本實(shí)施例提供的方法將原來(lái)的兩次處理過(guò)程,改為一次處理過(guò)程,提高了處理速度,縮短了處理時(shí)間。
[0101]在本發(fā)明上述實(shí)施例中,在根據(jù)狀態(tài)機(jī)對(duì)報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)之前,需要預(yù)先生成所述狀態(tài)機(jī)。下面實(shí)施例將提供一種狀態(tài)機(jī)編譯方法,用于對(duì)生成狀態(tài)機(jī)的過(guò)程進(jìn)行說(shuō)明。
[0102]圖5a為本發(fā)明實(shí)施例提供的一種狀態(tài)機(jī)編譯方法的流程圖。如圖5a所示,該方法包括:
[0103]501、接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則。[0104]502、獲取所述規(guī)則文件中的各個(gè)匹配規(guī)則。
[0105]503、將各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系。
[0106]504、從所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特
定字符串集合。
[0107]505、將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),并連接各個(gè)位置子狀態(tài)機(jī)。
[0108]506、將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī)。
[0109]507、將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī)。
[0110]首先,狀態(tài)機(jī)編譯設(shè)備接收規(guī)則文件,從規(guī)則文件中獲取各個(gè)匹配規(guī)則,對(duì)各個(gè)匹配規(guī)則進(jìn)行分類,獲得至少一個(gè)位置敏感規(guī)則和至少一個(gè)關(guān)鍵字敏感規(guī)則。具體的,按照規(guī)則文件中各匹配規(guī)則的用途進(jìn)行分類,可以將匹配規(guī)則分成字段解析規(guī)則與字段識(shí)別規(guī)則;按照匹配規(guī)則所涉及的協(xié)議字段的類型分類,可以將匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則與至少一個(gè)關(guān)鍵字敏感規(guī)則。在本發(fā)明各實(shí)施例中,按照匹配規(guī)則所涉及的協(xié)議字段的類型進(jìn)行分類。其中,位置敏感規(guī)則包括所述多個(gè)協(xié)議字段中的位置敏感字段對(duì)應(yīng)的字段解析規(guī)則和字段識(shí)別規(guī)則;關(guān)鍵字敏感規(guī)則包括所述多個(gè)協(xié)議字段中的關(guān)鍵字敏感字段對(duì)應(yīng)的字段解析規(guī)則和字段識(shí)別規(guī)則。換句話說(shuō),多個(gè)協(xié)議字段中的位置敏感字段對(duì)應(yīng)的字段解析規(guī)則和字段識(shí)別規(guī)則構(gòu)成了所述位置敏感規(guī)則;多個(gè)協(xié)議字段中的關(guān)鍵字敏感字段對(duì)應(yīng)的字段解析規(guī)則和字段識(shí)別規(guī)則構(gòu)成了所述關(guān)鍵字敏感規(guī)則。
[0111]如圖5b所示,HTTP請(qǐng)求報(bào)文的首行包括方法字段、URL字段和HTTP版本號(hào)字段,各字段之間的空白格表示空格,HTTP版本號(hào)字段之后的CRLF表示回車符;首行之后的頭域字段包括頭部字段,每個(gè)頭部字段包括頭部字段名稱+:+空格+取值+CRLF ;頭域字段之后是實(shí)體主體(Message body),本發(fā)明實(shí)施例并不涉及實(shí)體主體部分,所以不做過(guò)多說(shuō)明。以HTTP請(qǐng)求報(bào)文為例,HTTP請(qǐng)求報(bào)文的首行所涉及的三個(gè)字段為位置敏感字段,依次為方法字段、URL字段還是HTTP版本號(hào)字段。跟這些位置敏感字段有關(guān)的字段解析規(guī)則和字段識(shí)別規(guī)則稱為“位置敏感規(guī)則”。HTTP請(qǐng)求報(bào)文的頭部字段均包含頭部字段名稱,這些頭部字段并無(wú)固定順序,但是有固定關(guān)鍵字。與這些關(guān)鍵字敏感字段有關(guān)的字段解析規(guī)則和字段識(shí)別規(guī)則,稱為“關(guān)鍵字敏感規(guī)則”。
[0112]可選的,一種對(duì)規(guī)則文件中各匹配規(guī)則進(jìn)行分類的方式包括:先對(duì)匹配規(guī)則進(jìn)行第一次分類,將位置敏感規(guī)則與關(guān)鍵字敏感規(guī)則區(qū)分開,例如在HTTP中,第一次分類主要是指將HTTP報(bào)文中的首行與頭域字段分開。接著,進(jìn)行第二次分類,第二次分類主要是指對(duì)第一次分類的結(jié)果進(jìn)一步細(xì)分。對(duì)于位置敏感規(guī)則,按照具體字段的位置繼續(xù)細(xì)分出不同位置敏感字段對(duì)應(yīng)的位置敏感規(guī)則;對(duì)于關(guān)鍵字敏感規(guī)則,進(jìn)一步區(qū)分出頭域字段中每個(gè)頭部字段的位置敏感規(guī)則。例如,對(duì)于HTTP來(lái)說(shuō),第二次分類具體是指在HTTP首行中,區(qū)分開方法字段、URL字段和HTTP版本號(hào)分別對(duì)應(yīng)的規(guī)則,在HTTP頭域字段中,區(qū)分開主機(jī)字段,內(nèi)容類型(content-type)字段等的規(guī)則。
[0113]在本實(shí)施例中,關(guān)鍵字敏感規(guī)則包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系。例如,域值特定字符串集合可以是包括huawe1.com, youtube, com, www.sohu.com, www.yahoo, com.cn等字符串的集合,實(shí)際上是一個(gè)由各關(guān)鍵字的域值構(gòu)成的字符串集合?;诖耍讷@得至少一個(gè)關(guān)鍵字敏感規(guī)則之后,還需要從至少一個(gè)關(guān)鍵字敏感規(guī)則中獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合。
[0114]之后,對(duì)每個(gè)位置敏感規(guī)則進(jìn)行編譯,生成一個(gè)位置子狀態(tài)機(jī),并根據(jù)位置敏感規(guī)則中各位置敏感字段的位置關(guān)系確定至少一個(gè)位置子狀態(tài)機(jī)之間的連接關(guān)系,連接各位置子狀態(tài)機(jī)。采用將至少一個(gè)關(guān)鍵字敏感規(guī)則和至少一個(gè)特定字符串集合分別編譯的方式,對(duì)至少一個(gè)關(guān)鍵字敏感規(guī)則進(jìn)行編譯,生成一個(gè)關(guān)鍵字子狀態(tài)機(jī),并對(duì)至少一個(gè)特定字符串集合分別進(jìn)行編譯,生成至少一個(gè)域值子狀態(tài)機(jī)。
[0115]其中,至少一個(gè)位置子狀態(tài)機(jī)與至少一個(gè)位置敏感字段--對(duì)應(yīng),至少一個(gè)位置
子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0116]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0117]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0118]具體的,對(duì)于位置敏感字段,按照協(xié)議規(guī)定可獲得其字段解析規(guī)則的正則表達(dá)式,并且能夠獲取其字段識(shí)別規(guī)則,這些規(guī)則構(gòu)成該位置敏感字段對(duì)應(yīng)的位置敏感規(guī)則,然后對(duì)該位置敏感規(guī)則進(jìn)行編譯,進(jìn)而獲得該位置敏感字段對(duì)應(yīng)的位置子狀態(tài)機(jī)。可選的,在對(duì)位置敏感規(guī)則進(jìn)行編譯的過(guò)程中,可以按照對(duì)同一位置敏感字段的字段解析和字段識(shí)別由同一位置子狀態(tài)機(jī)完成的規(guī)則,對(duì)所述位置敏感規(guī)則進(jìn)行編譯,生成所述位置子狀態(tài)機(jī)。其中,同一位置敏感字段的字段解析和字段識(shí)別由同一位置子狀態(tài)機(jī)完成的規(guī)則,具體可以通過(guò)對(duì)同一位置敏感字段的字段解析規(guī)則和字段識(shí)別規(guī)則進(jìn)行合并來(lái)實(shí)現(xiàn)。例如,在HTTP中規(guī)定,HTTP請(qǐng)求報(bào)文的第一個(gè)非空字符串為方法字段,當(dāng)需要解析并識(shí)別某一方法(例如get)時(shí),在生成的位置子狀態(tài)機(jī)中在完成字段識(shí)別過(guò)程的識(shí)別節(jié)點(diǎn)之后增加一個(gè)完成字段解析的匹配(match)節(jié)點(diǎn),從而將對(duì)該方法字段的識(shí)別與解析在同一個(gè)位置子狀態(tài)機(jī)中完成?;诖?,在協(xié)議規(guī)定需要對(duì)位置敏感字段進(jìn)行匹配的情況下,本實(shí)施例中一個(gè)或多個(gè)位置子狀態(tài)機(jī)的邏輯結(jié)構(gòu)可以包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)?;蛘?,在協(xié)議規(guī)定不需要對(duì)位置敏感字段進(jìn)行匹配的情況下,一個(gè)或多個(gè)位置子狀態(tài)機(jī)可以不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0119]對(duì)于關(guān)鍵字敏感字段,由于其在位置敏感字段之后出現(xiàn),且出現(xiàn)順序不固定,本實(shí)施例具體是將所有頭部字段連接起來(lái),并采取關(guān)鍵字與域值分開編譯生成關(guān)鍵字子狀態(tài)機(jī)和域值子狀態(tài)機(jī)的方式。具體 的,將所有的關(guān)鍵字敏感字段的關(guān)鍵字規(guī)則收集起來(lái),生成一個(gè)關(guān)鍵字子狀態(tài)機(jī),并對(duì)其中每個(gè)關(guān)鍵字的域值對(duì)應(yīng)的識(shí)別規(guī)則進(jìn)行編譯,生成每個(gè)關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī)。可選的,關(guān)鍵字子狀態(tài)機(jī)的一種邏輯結(jié)構(gòu)可以包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。相應(yīng)的,域值子狀態(tài)機(jī)的邏輯結(jié)構(gòu)可以包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。在此說(shuō)明,第二特定字符串主要是指上層應(yīng)用需要用到的字符串,例如可以是youtube, com之類的。
[0120]可選的,可以以ID方式來(lái)表示關(guān)鍵字敏感字段的字段解析結(jié)果和字段識(shí)別結(jié)果。為便于區(qū)分,將用于表示對(duì)關(guān)鍵字敏感字段的字段解析結(jié)果的ID記為第三ID ;將用于表示對(duì)關(guān)鍵字敏感字段的字段識(shí)別結(jié)果的ID記為第四ID。例如,在關(guān)鍵字子狀態(tài)機(jī)中,可以用解析結(jié)束ID表示字段解析結(jié)果,即表示關(guān)鍵字在報(bào)文中的結(jié)束位置,記為pidO,則第三ID可以包括PidO;在域值子狀態(tài)機(jī)中,可以用域值起始ID表示關(guān)鍵字的域值在報(bào)文中的起始位置,記為Pidl ;用域值結(jié)束ID表示關(guān)鍵字的域值在報(bào)文中的結(jié)束位置,記為pid2,則第四ID可以包括pidl和pid2。一種關(guān)鍵字子狀態(tài)機(jī)與域值子狀態(tài)機(jī)的構(gòu)成結(jié)構(gòu)如圖6所示。圖6所示內(nèi)容主要是關(guān)鍵字敏感字段對(duì)應(yīng)的關(guān)鍵字子狀態(tài)機(jī)與關(guān)鍵字敏感字段中的主機(jī)字段所對(duì)應(yīng)的域值子狀態(tài)機(jī)的互聯(lián)結(jié)果,圖6中虛線框所示為關(guān)鍵字子狀態(tài)機(jī),實(shí)線框所示為關(guān)鍵字敏感字段中的主機(jī)字段對(duì)應(yīng)的域值子狀態(tài)機(jī),關(guān)鍵字敏感字段中的用戶代理對(duì)應(yīng)的域值子狀態(tài)機(jī)未示出。圖6中的關(guān)鍵字子狀態(tài)機(jī)涉及兩個(gè)關(guān)鍵字,即主機(jī)和用戶代理,當(dāng)解析到任何一個(gè)關(guān)鍵字時(shí),需要上報(bào)其解析結(jié)束ID,即pidO ;當(dāng)解析到該關(guān)鍵字的域值開始的字符(即圖6中的非分隔符,由[~\s]表示)時(shí),需要上報(bào)域值開始ID,記為pidl ;當(dāng)解析到關(guān)鍵字的域值結(jié)束的字符(即圖6中的\r\n后遇到非分割符)時(shí),需要上報(bào)域值結(jié)束ID,記為pid2,并在識(shí)別到y(tǒng)outube, com時(shí)上報(bào)與該字符串對(duì)應(yīng)的ID。在圖6中,第三ID實(shí)際上包括pidl、pid2和字符串“youtube, com”對(duì)應(yīng)的ID。如圖6所示,主機(jī)字段對(duì)應(yīng)的域值子狀態(tài)機(jī)結(jié)束后需跳轉(zhuǎn)回關(guān)鍵字子狀態(tài)機(jī),以便于報(bào)文匹配設(shè)備根據(jù)該關(guān)鍵字子狀態(tài)機(jī)確認(rèn)報(bào)文中是否包含下一個(gè)特定的關(guān)鍵字。在圖6中,“\s”或者“space”:表示空白符,即空格符或者制表符;“ [~\s] ”或者“non-space”:表示非空白符;“\r\n”:表示回車符與換行符。在HTTP報(bào)文中的關(guān)鍵字敏感的協(xié)議字段由“\r\n”非空白符作為結(jié)束標(biāo)記。圖6中用虛線表示跳出該狀態(tài)并不消耗字符。
[0121]由上述可見(jiàn),本實(shí)施例提供的方法,對(duì)規(guī)則報(bào)文中的匹配規(guī)則按照位置和關(guān)鍵字的不同進(jìn)行了分組,分組之后的規(guī)則是一個(gè)更小的規(guī)則集合,與大的規(guī)則集合相比,小的規(guī)則集合按照經(jīng)典的編譯算法進(jìn)行編譯,可以避免狀態(tài)數(shù)呈幾何級(jí)數(shù)的增長(zhǎng),減少了對(duì)大存儲(chǔ)器的需求,即在避免狀態(tài)爆炸的同時(shí)減少了對(duì)大存儲(chǔ)器的需求。再者,本實(shí)施例提供的方法同時(shí)進(jìn)行字段解析與字段識(shí)別,增加了基于字段解析與識(shí)別的深度包檢測(cè)(DPI)系統(tǒng)的吞吐量。
[0122]圖7為本發(fā)明實(shí)施例提供的一種報(bào)文匹配設(shè)備的結(jié)構(gòu)示意圖。如圖7所示,本實(shí)施例的報(bào)文匹配設(shè)備包括:接收模塊71和匹配模塊72。[0123]接收模塊71,用于接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段。
[0124]匹配模塊72,與接收模塊71連接,用于根據(jù)狀態(tài)機(jī)對(duì)接收模塊71所接收的報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。
[0125]其中,所述狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)域值子狀態(tài)機(jī);
[0126]所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段--對(duì)應(yīng),所述至少一
個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0127]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0128]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0129]在一可選實(shí)施方式中,一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0130]或者,
[0131]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0132]在一可選實(shí)施方式中,關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0133]在一可選實(shí)施方式中,域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0134]本實(shí)施例提供的報(bào)文匹配設(shè)備的各功能模塊可用于執(zhí)行圖1所示方法實(shí)施例中的相應(yīng)流程,其具體工作原理不再贅述,詳見(jiàn)方法實(shí)施例的描述。
[0135]本實(shí)施例提供的報(bào)文匹配設(shè)備,在接收到報(bào)文后,根據(jù)狀態(tài)機(jī)對(duì)報(bào)文中的各協(xié)議字段進(jìn)行匹配,輸出與協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果,其中,所使用的狀態(tài)機(jī)包括關(guān)鍵字段子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)閾值子狀態(tài)機(jī)和;基于位置子狀態(tài)機(jī)對(duì)協(xié)議字段中的位置敏感字段進(jìn)行字段解析與識(shí)別,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果,而基于關(guān)鍵字段子狀態(tài)機(jī)對(duì)協(xié)議字段中的關(guān)鍵字敏感字段進(jìn)行字段解析與識(shí)別,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果,再基于域值子狀態(tài)機(jī)查找特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。由于本實(shí)施例的報(bào)文匹配設(shè)備采用的狀態(tài)機(jī)可以將字段解析與識(shí)別過(guò)程融合在一起,因此報(bào)文匹配設(shè)備根據(jù)該狀態(tài)機(jī)可以同時(shí)完成對(duì)報(bào)文的解析和識(shí)別,提高了其復(fù)用度,減少了所占用的邏輯資源,有利于集成化。
[0136]圖8為本發(fā)明實(shí)施例提供的另一種報(bào)文匹配設(shè)備的結(jié)構(gòu)示意圖。如圖8所示,本實(shí)施例的報(bào)文匹配設(shè)備包括:通信接口 81和邏輯器件82。
[0137]通信接口 81,用于接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段。
[0138]邏輯器件82,用于根據(jù)狀態(tài)機(jī)對(duì)通信接口 81所接收的報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。
[0139]可選的,邏輯器件82可以是FPGA、特定集成電路(Application SpecificIntegrated Circuit,簡(jiǎn)稱為ASIC)、或者是實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。
[0140]其中,所述狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)域值子狀態(tài)機(jī);
[0141]所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段--對(duì)應(yīng),所述至少一
個(gè)位置子狀態(tài)機(jī)之間按照所述至少·一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0142]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0143]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0144]在一可選實(shí)施方式中,一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0145]或者,
[0146]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。[0147]在一可選實(shí)施方式中,關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0148]在一可選實(shí)施方式中,域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0149]進(jìn)一步,如圖8所示,本實(shí)施例的報(bào)文匹配設(shè)備還包括:處理器83、存儲(chǔ)器84以及多個(gè)外部設(shè)備(簡(jiǎn)稱為外設(shè))85。
[0150]存儲(chǔ)器84,用于存儲(chǔ)程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器84可以包含內(nèi)存和非易失性存儲(chǔ)器(non-volatile memory),例如硬盤。
[0151]處理器83,用于執(zhí)行存儲(chǔ)器84存儲(chǔ)的程序,以實(shí)現(xiàn)對(duì)報(bào)文匹配設(shè)備的控制邏輯。例如,處理器83可以是一個(gè)中央處理器(Central Processing Unit,簡(jiǎn)稱為CPU)。
[0152]外設(shè)85可以包括顯示設(shè)備、輸入輸出設(shè)備和音視頻設(shè)備等。
[0153]進(jìn)一步,邏輯器件82獲得匹配結(jié)果后可以將匹配結(jié)果上報(bào)給處理器83,以便于處理器83做進(jìn)一步處理。
[0154]可選的,在具體實(shí)現(xiàn)上,如果通信接口 81、邏輯器件82、處理器83、存儲(chǔ)器84和外部85獨(dú)立實(shí)現(xiàn),則通信接口 81、邏輯器件82、處理器83、存儲(chǔ)器84和外部85可以通過(guò)總線相互連接并完成相互間的通信。所述總線可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry StandardArchitecture,簡(jiǎn)稱為ISA)總線、外部設(shè)備互連(Peripheral Component,簡(jiǎn)稱為PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry Standard Architecture,簡(jiǎn)稱為EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖8中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0155]可選的,在具體實(shí)現(xiàn)上,如果通信接口 81、邏輯器件82、處理器83、存儲(chǔ)器84和外部85集成在一塊芯片上實(shí)現(xiàn),則通信接口 81、邏輯器件82、處理器83、存儲(chǔ)器84和外部85可以通過(guò)內(nèi)部接口完成相同間的通信。
[0156]本實(shí)施例提供的報(bào)文匹配設(shè)備可用于執(zhí)行圖1所示方法實(shí)施例中的相應(yīng)流程,其具體工作原理不再贅述,詳見(jiàn)方法實(shí)施例的描述。
[0157]本實(shí)施例提供的報(bào)文匹配設(shè)備,在接收到報(bào)文后,根據(jù)狀態(tài)機(jī)對(duì)報(bào)文中的各協(xié)議字段進(jìn)行匹配,輸出與協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果,其中,所使用的狀態(tài)機(jī)包括關(guān)鍵字段子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)閾值子狀態(tài)機(jī)和;基于位置子狀態(tài)機(jī)對(duì)協(xié)議字段中的位置敏感字段進(jìn)行字段解析與識(shí)別,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果,而基于關(guān)鍵字段子狀態(tài)機(jī)對(duì)協(xié)議字段中的關(guān)鍵字敏感字段進(jìn)行字段解析與識(shí)別,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果,再基于域值子狀態(tài)機(jī)查找特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,并輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果。由于本實(shí)施例的報(bào)文匹配設(shè)備采用的狀態(tài)機(jī)可以將字段解析與識(shí)別過(guò)程融合在一起,因此報(bào)文匹配設(shè)備根據(jù)該狀態(tài)機(jī)可以同時(shí)完成對(duì)報(bào)文的解析和識(shí)別,提高了其復(fù)用度,減少了所占用的邏輯資源,有利于集成化。
[0158]圖9為本發(fā)明實(shí)施例提供的一種狀態(tài)機(jī)編譯設(shè)備的結(jié)構(gòu)示意圖。如圖9所示,該設(shè)備包括:接收模塊91、獲取模塊92、劃分模塊93和編譯模塊94。
[0159]接收模塊91,用于接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則。
[0160]獲取模塊92,用于獲取接收模塊91接收的所述規(guī)則文件中的各個(gè)匹配規(guī)則。
[0161]劃分模塊93,用于將獲取模塊92獲取的各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系。
[0162]獲取模塊92還用于,從劃分模塊93分出的所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合。
[0163]編譯模塊94,用于將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),連接各個(gè)位置子狀態(tài)機(jī),將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī),并將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī)。
[0164]其中,所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0165]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0166]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0167]在一可選實(shí)施方式中,一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0168]或者,
[0169]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0170]在一可選實(shí)施方式中,關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0171]在一可選實(shí)施方式中,域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0172]本實(shí)施例提供的狀態(tài)機(jī)編譯設(shè)備可用于執(zhí)行圖5a所示方法實(shí)施例中的相應(yīng)流程,其具體工作原理不再贅述,詳見(jiàn)方法實(shí)施例的描述。
[0173]本實(shí)施例提供的狀態(tài)機(jī)編譯設(shè)備,對(duì)規(guī)則報(bào)文中的匹配規(guī)則按照位置和關(guān)鍵字的不同進(jìn)行了分組,分組之后的規(guī)則是一個(gè)更小的規(guī)則集合,與大的規(guī)則集合相比,小的規(guī)則集合按照經(jīng)典的編譯算法進(jìn)行編譯,可以避免狀態(tài)數(shù)呈幾何級(jí)數(shù)的增長(zhǎng),減少了對(duì)大存儲(chǔ)器的需求,即在避免狀態(tài)爆炸的同時(shí)減少了對(duì)大存儲(chǔ)器的需求。再者,本實(shí)施例提供的狀態(tài)機(jī)編譯設(shè)備同時(shí)進(jìn)行字段解析與字段識(shí)別,增加了基于字段解析與識(shí)別的DPI系統(tǒng)的吞吐量。
[0174]圖10為本發(fā)明實(shí)施例提供的另一種狀態(tài)機(jī)編譯設(shè)備的結(jié)構(gòu)示意圖。如圖10所示,該設(shè)備包括:通信接口 1001、處理器1002和編譯器1003。
[0175]通信接口 1001,用于接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則。
[0176]處理器1002,用于獲取通信接口 1001接收的所述規(guī)則文件中的各個(gè)匹配規(guī)則,將各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,并從所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合;所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系。
[0177]編譯器1003,用于將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),連接各個(gè)位置子狀態(tài)機(jī),將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī),并將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī)。
[0178]其中,所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī);
[0179]所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果;
[0180]所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
[0181]在一可選實(shí)施方式中,一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);
[0182]或者,
[0183]其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
[0184]在一可選實(shí)施方式中,關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
[0185]在一可選實(shí)施方式中,域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
[0186]進(jìn)一步,如圖10所示,本實(shí)施例的狀態(tài)機(jī)編譯設(shè)備還包括:存儲(chǔ)器1004和多個(gè)外設(shè) 1005。
[0187]存儲(chǔ)器1004,用于存儲(chǔ)程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器1004可以包含內(nèi)存和非易失性存儲(chǔ)器(non-volatile memory),例如硬盤。
[0188]可選的,處理器1002可以是CPU,用于執(zhí)行存儲(chǔ)器1004存儲(chǔ)的程序,以實(shí)現(xiàn)上述功倉(cāng)泛。
[0189]外設(shè)1005可以包括顯示設(shè)備、輸入輸出設(shè)備和音視頻設(shè)備等。
[0190]可選的,在具體實(shí)現(xiàn)上,如果通信接口 1001、處理器1002、編譯器1003、存儲(chǔ)器1004和外部1005獨(dú)立實(shí)現(xiàn),則通信接口 1001、處理器1002、編譯器1003、存儲(chǔ)器1004和外部1005可以通過(guò)總線相互連接并完成相互間的通信。所述總線可以是ISA總線、PCI總線或EISA總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖10中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0191]可選的,在具體實(shí)現(xiàn)上,如果通信接口 1001、處理器1002、編譯器1003、存儲(chǔ)器1004和外部1005集成在一塊芯片上實(shí)現(xiàn),則通信接口 1001、處理器1002、編譯器1003、存儲(chǔ)器1004和外部1005可以通過(guò)內(nèi)部接口完成相同間的通信。
[0192]本實(shí)施例提供的狀態(tài)機(jī)編譯設(shè)備可用于執(zhí)行圖5a所示方法實(shí)施例中的相應(yīng)流程,其具體工作原理不再贅述,詳見(jiàn)方法實(shí)施例的描述。
[0193]本實(shí)施例提供的狀態(tài)機(jī)編譯設(shè)備,對(duì)規(guī)則報(bào)文中的匹配規(guī)則按照位置和關(guān)鍵字的不同進(jìn)行了分組,分組之后的規(guī)則是一個(gè)更小的規(guī)則集合,與大的規(guī)則集合相比,小的規(guī)則集合按照經(jīng)典的編譯算法進(jìn)行編譯,可以避免狀態(tài)數(shù)呈幾何級(jí)數(shù)的增長(zhǎng),減少了對(duì)大存儲(chǔ)器的需求,即在避免狀態(tài)爆炸的同時(shí)減少了對(duì)大存儲(chǔ)器的需求。再者,本實(shí)施例提供的狀態(tài)機(jī)編譯設(shè)備同時(shí)進(jìn)行字段解析與字段識(shí)別,增加了基于字段解析與識(shí)別的DPI系統(tǒng)的吞吐量。
[0194]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0195]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種報(bào)文匹配方法,其特征在于,應(yīng)用于報(bào)文匹配設(shè)備,所述方法包括: 接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段; 根據(jù)狀態(tài)機(jī)對(duì)所述報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果; 其中,所述狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)域值子狀態(tài)機(jī); 所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī); 所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果; 所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于: 其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè); 或者, 其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
3.如權(quán)利要求1-2任一所述的方法,其特征在于: 所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
4.如權(quán)利要求1-3任一所述的方法,其特征在于: 所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
5.一種狀態(tài)機(jī)編譯方法,其特征在于,包括: 接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則;獲取所述規(guī)則文件中的各個(gè)匹配規(guī)則; 將各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系; 從所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合; 將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),并連接各個(gè)位置子狀態(tài)機(jī); 將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī); 將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī); 其中,所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī); 所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果; 所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。`
6.如權(quán)利要求5所述的方法,其特征在于:其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè);或者, 其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
7.如權(quán)利要求5-6任一所述的方法,其特征在于: 所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
8.如權(quán)利要求5-7任一所述的方法,其特征在于: 所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
9.一種報(bào)文匹配設(shè)備,其特征在于,包括:接收模塊,用于接收?qǐng)?bào)文,所述報(bào)文包括多個(gè)協(xié)議字段,所述多個(gè)協(xié)議字段包括至少一個(gè)位置敏感字段和至少一個(gè)關(guān)鍵字敏感字段; 匹配模塊,用于根據(jù)狀態(tài)機(jī)對(duì)所述接收模塊接收的所述報(bào)文的各個(gè)協(xié)議字段進(jìn)行匹配,輸出與所述協(xié)議字段對(duì)應(yīng)的字段解析結(jié)果和與所述協(xié)議字段對(duì)應(yīng)的字段識(shí)別結(jié)果中的至少一個(gè)匹配結(jié)果; 其中,所述狀態(tài)機(jī)包括:關(guān)鍵字子狀態(tài)機(jī)、至少一個(gè)位置子狀態(tài)機(jī)、以及至少一個(gè)域值子狀態(tài)機(jī); 所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī); 所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果; 所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
10.如權(quán)利要求9所述的設(shè)備,其特征在于: 其中一個(gè)或多個(gè)位置子狀 態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè); 或者, 其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
11.如權(quán)利要求9-10任一所述的設(shè)備,其特征在于: 所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到所述第二解析結(jié)果輸出節(jié)點(diǎn)和所述第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
12.如權(quán)利要求9-11任一所述的設(shè)備,其特征在于: 所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
13.一種狀態(tài)機(jī)編譯設(shè)備,其特征在于,包括: 接收模塊,用于接收規(guī)則文件,所述規(guī)則文件中記載有匹配規(guī)則;獲取模塊,用于獲取所述接收模塊接收的所述規(guī)則文件中的各個(gè)匹配規(guī)則; 劃分模塊,用于將所述獲取模塊獲取的各個(gè)匹配規(guī)則分成至少一個(gè)位置敏感規(guī)則以及至少一個(gè)關(guān)鍵字敏感規(guī)則,所述關(guān)鍵字敏感規(guī)則中包括關(guān)鍵字到域值特定字符串集合的映射關(guān)系; 所述獲取模塊還用于,從所述劃分模塊分出的所述至少一個(gè)關(guān)鍵字敏感規(guī)則獲取與各個(gè)關(guān)鍵字分別對(duì)應(yīng)的至少一個(gè)特定字符串集合; 編譯模塊,用于將每個(gè)位置敏感規(guī)則編譯成一個(gè)位置子狀態(tài)機(jī),連接各個(gè)位置子狀態(tài)機(jī),將所述至少一個(gè)關(guān)鍵字敏感規(guī)則編譯成一個(gè)關(guān)鍵字子狀態(tài)機(jī),并將所述至少一個(gè)特定字符串集合分別編譯至對(duì)應(yīng)的至少一個(gè)域值子狀態(tài)機(jī); 其中,所述至少一個(gè)位置子狀態(tài)機(jī)與所述至少一個(gè)位置敏感字段一一對(duì)應(yīng),所述至少一個(gè)位置子狀態(tài)機(jī)之間按照所述至少一個(gè)位置敏感字段相互之間的位置順序進(jìn)行跳轉(zhuǎn),且最后一個(gè)所述位置子狀態(tài)機(jī)跳轉(zhuǎn)到所述關(guān)鍵字子狀態(tài)機(jī);每個(gè)位置子狀態(tài)機(jī)用于供報(bào)文匹配設(shè)備對(duì)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段進(jìn)行字段解析和字段識(shí)別中的至少一個(gè),并對(duì)應(yīng)地輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果,或者跳過(guò)所述位置子狀態(tài)機(jī)對(duì)應(yīng)的位置敏感字段的匹配,進(jìn)入下一個(gè)位置子狀態(tài)機(jī); 所述關(guān)鍵字子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,則跳轉(zhuǎn)到與所述特定的關(guān)鍵字對(duì)應(yīng)的域值子狀態(tài)機(jī),并輸出字段解析結(jié)果和字段識(shí)別結(jié)果作為所述匹配結(jié)果; 所述域值子狀態(tài)機(jī)用于供所述報(bào)文匹配設(shè)備查找所述特定的關(guān)鍵字的域值是否有用戶感興趣的某種模式,如果有,則輸出字段解析結(jié)果和字段識(shí)別結(jié)果中的至少一個(gè)作為所述匹配結(jié)果。
14.如權(quán)利要求13所述的設(shè)備,其特征在于: 其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)包括第一解析結(jié)果輸出節(jié)點(diǎn)和第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)匹配節(jié)點(diǎn)用于判斷輸入的協(xié)議字段是否是滿足“在報(bào)文中的特定位置有第一特定字符串時(shí)”條件的協(xié)議字段,如果是,則跳轉(zhuǎn)到所述第一解析結(jié)果輸出節(jié)點(diǎn)以及所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè); 或者, 其中一個(gè)或多個(gè)位置子狀態(tài)機(jī)不包括所述第一解析結(jié)果輸出節(jié)點(diǎn)和所述第一識(shí)別結(jié)果輸出節(jié)點(diǎn),也不包括一個(gè)或多個(gè)第一匹配節(jié)點(diǎn),直接跳過(guò)本位置子狀態(tài)機(jī)。
15.如權(quán)利要求13-14任一所述的設(shè)備,其特征在于: 所述關(guān)鍵字子狀態(tài)機(jī)包括第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn),以及一個(gè)或多個(gè)第二匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第二匹配節(jié)點(diǎn)用于對(duì)所述關(guān)鍵字敏感字段進(jìn)行匹配,以確認(rèn)是否有特定的關(guān)鍵字,如果有,跳轉(zhuǎn)到第二解析結(jié)果輸出節(jié)點(diǎn)和第二識(shí)別結(jié)果輸出節(jié)點(diǎn)。
16.如權(quán)利要求13-15任一所述的設(shè)備,其特征在于: 所述域值子狀態(tài)機(jī)包括第三解析結(jié)果輸出節(jié)點(diǎn)和第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè),以及一個(gè)或多個(gè)第三匹配節(jié)點(diǎn),所述一個(gè)或多個(gè)第三匹配節(jié)點(diǎn)用于匹配所述特定的關(guān)鍵字的域值中是否有第二特定字符串,如果有,則跳轉(zhuǎn)至所述第三解析結(jié)果輸出節(jié)點(diǎn)和所述第三識(shí)別結(jié)果輸出節(jié)點(diǎn)中的至少一個(gè)。
【文檔編號(hào)】H04L29/06GK103685280SQ201310698114
【公開日】2014年3月26日 申請(qǐng)日期:2013年12月18日 優(yōu)先權(quán)日:2013年12月18日
【發(fā)明者】吳富強(qiáng), 周坤勝, 潘揚(yáng)梅 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1