欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

兼顧匹配策略的處理分段報(bào)文串模式匹配的方法及裝置的制作方法

文檔序號(hào):7647163閱讀:145來(lái)源:國(guó)知局
專利名稱:兼顧匹配策略的處理分段報(bào)文串模式匹配的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及兼顧匹配策略的處理分段報(bào)文串模式匹配的方法及裝置,屬于通信技術(shù)領(lǐng)域。
背景技術(shù)
如圖1和圖2所示的系統(tǒng)中,網(wǎng)關(guān)設(shè)備和旁路設(shè)備需要通過(guò)模式匹配(Pattern Matching,簡(jiǎn)稱PM)方法來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)安全、病毒防范(Anti-Virus,簡(jiǎn)稱AV)、帶寬管理、應(yīng)用識(shí)別、安全檢測(cè)以及廣域網(wǎng)加速等上層應(yīng)用,可以說(shuō),模式匹配方法是面向網(wǎng)絡(luò)設(shè)備構(gòu)建高性能的內(nèi)容檢測(cè)引擎的基礎(chǔ),只有通過(guò)模式匹配完成對(duì)網(wǎng)絡(luò)傳輸內(nèi)容的管理和檢測(cè),才能為網(wǎng)絡(luò)安全、AV、帶寬管理、應(yīng)用識(shí)別、安全檢測(cè)以及廣域網(wǎng)加速等上層應(yīng)用的實(shí)施提供技術(shù)支撐,因此,實(shí)現(xiàn)模式匹配是構(gòu)建可管理、可運(yùn)營(yíng)的安全智能網(wǎng)絡(luò)的技術(shù)基石。
同時(shí),實(shí)現(xiàn)模式匹配的精確程度也直接關(guān)系到網(wǎng)絡(luò)構(gòu)建的質(zhì)量。目前,模式匹配的方法是指串模式匹配(Patten Match,簡(jiǎn)稱PM)方法,所謂串模式(Patten),是指ASCII碼環(huán)境下,在傳輸流(Flow)的內(nèi)容(也稱為傳輸文本,Text)中需要查找的字符串的組合,或者,二進(jìn)制環(huán)境下,在Text中需要查找的二進(jìn)制位串的組合。這種串模式匹配方法主要分為單模式匹配和多模式匹配兩種單模式匹配算法是指一次只能在文本串中對(duì)一個(gè)模式串進(jìn)行匹配的算法,比如Boyer Moore(簡(jiǎn)稱BM)算法、Brute force(簡(jiǎn)稱BF)和Perl兼容的正規(guī)表達(dá)式(Perl Compatible Regular Expression,算法PCRE)算法;多模式匹配算法是指同時(shí)對(duì)多個(gè)模式串進(jìn)行匹配的算法,比如Aho-Corasick(簡(jiǎn)稱AC)算法。其中,AC算法等僅僅考慮串模式中的字符串,而不考慮進(jìn)行字符串匹配的策略問(wèn)題,因此其匹配精度較低;而對(duì)于BM、BF算法,則是精確的單模式匹配算法,能夠同時(shí)兼顧到上述字符匹配以及策略匹配,因此其匹配精確程度很高。
但是目前的串模式匹配方法都必須在傳輸流的內(nèi)容(Text)連續(xù)的情況下才能夠?qū)崿F(xiàn),而在實(shí)際應(yīng)用中,網(wǎng)絡(luò)每一個(gè)傳輸Text是通過(guò)分段為多個(gè)報(bào)文來(lái)實(shí)現(xiàn)傳輸,這就造成了在網(wǎng)絡(luò)中進(jìn)行串模式匹配的困難。目前通用的解決方法是對(duì)分段報(bào)文進(jìn)行流重組,比如對(duì)按照用戶數(shù)據(jù)報(bào)協(xié)議(User DatagramProtocol,簡(jiǎn)稱UDP)組織的分段報(bào)文、對(duì)按照網(wǎng)際控制報(bào)文協(xié)議(InternetControl Message Protocol,簡(jiǎn)稱ICMP)組織的分段報(bào)文以及對(duì)按照傳輸控制協(xié)議(Transfer Control Protocol,簡(jiǎn)稱TCP)組織的分段報(bào)文等,分別按照各自的協(xié)議格式作為偽流進(jìn)行流重組,進(jìn)行分段報(bào)文的保序和分段報(bào)文的恢復(fù);然后將重組后的連續(xù)的Text進(jìn)行串模式匹配。
但是這種流重組的方法存在自身無(wú)法克服的致命缺陷,以按照TCP組織的分段報(bào)文為例首先,進(jìn)行流重組必須修改網(wǎng)絡(luò)設(shè)備的TCP/IP(網(wǎng)際協(xié)議,InternetProtocol)協(xié)議棧,導(dǎo)致協(xié)議棧完整性的破壞,提高了網(wǎng)絡(luò)設(shè)備的故障幾率;其次,進(jìn)行流重組要求緩存每個(gè)傳輸Text的分段報(bào)文直到串模式匹配完成,這一方面占用了大量的系統(tǒng)內(nèi)存,不但降低了系統(tǒng)性能,同時(shí)增加了DoS/DDoS(拒絕服務(wù)攻擊/分布式拒絕服務(wù)攻擊)的可能性,另一方面,由于系統(tǒng)為每個(gè)Text都預(yù)留內(nèi)存,在內(nèi)存有限的客觀情況下,由于為每一個(gè)Text預(yù)留的內(nèi)存有限,因此不可避免會(huì)出現(xiàn)漏報(bào),再一方面,對(duì)分段報(bào)文進(jìn)行緩存將導(dǎo)致延遲增加,對(duì)于一些敏感于時(shí)間延遲的業(yè)務(wù),如IP網(wǎng)上傳輸話音(Voice over IP,簡(jiǎn)稱VoIP)業(yè)務(wù)、視頻業(yè)務(wù)等,帶來(lái)服務(wù)質(zhì)量下降的后果。
為了對(duì)上述內(nèi)存占用進(jìn)行控制,目前提出了將應(yīng)用協(xié)議劃分為行模式或者長(zhǎng)度模式,區(qū)分進(jìn)行流重組的技術(shù)方案。由于一些應(yīng)用協(xié)議報(bào)文是按照“行”為單位組織的,則緩存的報(bào)文最大為一行的長(zhǎng)度,所以內(nèi)存占用的大小基本可控;對(duì)于不是按照“行”為單位進(jìn)行組織的應(yīng)用協(xié)議,則按照指定報(bào)文大小進(jìn)行緩存,從而實(shí)現(xiàn)對(duì)內(nèi)存占用的控制。但這種技術(shù)方案只是提高了對(duì)內(nèi)存占用的控制,在一定程度上優(yōu)化系統(tǒng)性能,減少系統(tǒng)受到攻擊的可能,卻不是從根本上克服內(nèi)存占用高的缺陷,同時(shí)也無(wú)法克服修改TCP/IP協(xié)議棧所帶來(lái)的固有缺陷以及緩存所帶來(lái)的時(shí)延,無(wú)法避免漏報(bào)和誤報(bào)。特別是對(duì)像BM這種兼顧策略的串模式匹配算法,在實(shí)際處理過(guò)程中內(nèi)存的開(kāi)支將較于一般的AC算法等更為巨大。
綜上所述,現(xiàn)有技術(shù)中還沒(méi)有一種能夠不依賴于流重組的串模式匹配技術(shù)方案,即沒(méi)有這樣一種技術(shù)方案能夠不修改網(wǎng)絡(luò)設(shè)備本身TCP/IP協(xié)議棧,也無(wú)須緩存大量分段報(bào)文,避免了內(nèi)存大量占用和緩存延遲所帶來(lái)的一系列問(wèn)題,從而高效、準(zhǔn)確、智能地進(jìn)行基于分段報(bào)文而非流重組的串模式匹配。而這種技術(shù)方案對(duì)于串模式匹配,特別是兼顧策略的串模式匹配,都具有十分重要的意義。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供兼顧匹配策略的處理分段報(bào)文串模式匹配的方法及裝置,以克服現(xiàn)有技術(shù)中必須進(jìn)行流重組才能夠進(jìn)行串模式匹配,特別是兼顧匹配策略的串模式匹配,以及由此導(dǎo)致協(xié)議棧破壞、內(nèi)存大量占用所帶來(lái)的安全性問(wèn)題、漏報(bào)誤報(bào)、時(shí)間延遲和服務(wù)質(zhì)量下降等諸多缺陷。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述流狀態(tài)信息中預(yù)存的字符,然后對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。
其中,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟可以包括按照所述流狀態(tài)信息中記錄的每一匹配單元,對(duì)所述目標(biāo)分段報(bào)文分別執(zhí)行
步驟11、根據(jù)任一匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟12,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟13,如果匹配完全不成功則執(zhí)行步驟14;步驟12、判斷所述匹配單元是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟11;步驟13、在所述流狀態(tài)信息中預(yù)存該后綴字符,然后執(zhí)行步驟14;步驟14、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當(dāng)所述每一匹配單元匹配結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
其中,對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文可包括判斷所述流狀態(tài)信息中是否存在預(yù)存的字符,是則將所述字符作為前綴,與所述分段報(bào)文結(jié)合起來(lái)設(shè)置為目標(biāo)分段報(bào)文,否則將所述分段報(bào)文直接設(shè)置為目標(biāo)分段報(bào)文。
對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息包括記錄首個(gè)匹配單元作為當(dāng)前串模式的流狀態(tài)信息,并設(shè)置記錄預(yù)存字符的指定單元,所述匹配單元中至少包括進(jìn)行所述串模式首個(gè)規(guī)則匹配的匹配開(kāi)始位置信息和匹配結(jié)束位置信息。
為了保證不丟失任一匹配單元的匹配信息,較佳的技術(shù)方案是所述步驟13中,在所述流狀態(tài)信息中預(yù)存該后綴字符包括檢查所述流狀態(tài)信息中是否存在預(yù)存的字符,是則對(duì)所述后綴字符和所述預(yù)存字符進(jìn)行比較,對(duì)字符數(shù)目較多的字符進(jìn)行預(yù)存,并在當(dāng)前匹配單元中記錄所保存字符的相對(duì)位置;否則直接預(yù)存該后綴字符,并在當(dāng)前匹配單元中記錄所保存字符的相對(duì)位置。
為了進(jìn)一步減少系統(tǒng)資源占用,更佳的技術(shù)方案為預(yù)存該后綴字符包括將所述字符保存在預(yù)設(shè)的字節(jié)區(qū)內(nèi),在所述流狀態(tài)信息中保存到該字節(jié)區(qū)的指針,并在當(dāng)前匹配單元中記錄所保存字符的相對(duì)位置。
所述步驟14還包括對(duì)修改后的匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元。
為了節(jié)約系統(tǒng)資源,在當(dāng)前串模式匹配成功時(shí),或者傳輸流結(jié)束時(shí),或者,當(dāng)所述串模式的全部匹配單元的匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,還包括刪除所述串模式的流狀態(tài)信息的步驟。
本發(fā)明還提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則直接對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟包括按照所述流狀態(tài)信息中記錄的每一匹配單元,將所述分段報(bào)文分別與該匹配單元中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,清空所述流狀態(tài)信息中的預(yù)存字符,并執(zhí)行步驟21、根據(jù)任一匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟22,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟23,如果匹配完全不成功則執(zhí)行步驟24;步驟22、判斷所述匹配單元是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟21;步驟23、在所述匹配單元中預(yù)存該后綴字符,然后執(zhí)行步驟24;步驟24、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當(dāng)所述每一匹配單元匹配結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
本發(fā)明還提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的狀態(tài)樹(shù),是則對(duì)所述分段報(bào)文與所述狀態(tài)樹(shù)根節(jié)點(diǎn)中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述根節(jié)點(diǎn)中預(yù)存的字符,然后對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù),然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。
其中,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟可以包括對(duì)所述目標(biāo)分段報(bào)文進(jìn)行狀態(tài)樹(shù)的廣度遍歷,根據(jù)每一匹配單元節(jié)點(diǎn),對(duì)所述目標(biāo)分段報(bào)文分別執(zhí)行步驟31、對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟32,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元節(jié)點(diǎn)中字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟33,如果匹配完全不成功則執(zhí)行步驟34;步驟32、判斷所述匹配單元節(jié)點(diǎn)是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹(shù)中為所述匹配單元節(jié)點(diǎn)添加一子節(jié)點(diǎn),該子節(jié)點(diǎn)中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟31;步驟33、在所述根節(jié)點(diǎn)中預(yù)存該后綴字符,然后執(zhí)行步驟34;步驟34、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點(diǎn)遍歷結(jié)束;當(dāng)所述每一匹配單元節(jié)點(diǎn)廣度遍歷結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù)可包括設(shè)置根節(jié)點(diǎn)作為當(dāng)前串模式的流狀態(tài)信息并設(shè)置記錄預(yù)存字符的指定單元,所述根節(jié)點(diǎn)為首個(gè)匹配單元節(jié)點(diǎn),至少包括記錄進(jìn)行所述串模式首個(gè)規(guī)則匹配的匹配開(kāi)始位置信息和匹配結(jié)束位置信息。
較佳的技術(shù)方案為所述步驟33中,在所述根節(jié)點(diǎn)中預(yù)存該后綴字符包括檢查所述根節(jié)點(diǎn)中是否存在預(yù)存的字符,是則對(duì)所述后綴字符和所述預(yù)存字符進(jìn)行比較,對(duì)字符數(shù)目較多的字符進(jìn)行預(yù)存,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置;否則直接預(yù)存該后綴字符,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置。
為了進(jìn)一步減少系統(tǒng)資源占用,更佳的技術(shù)方案為預(yù)存該后綴字符包括將所述字符保存在預(yù)設(shè)的字節(jié)區(qū)內(nèi),在所述根節(jié)點(diǎn)中保存到該字節(jié)區(qū)的指針,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置。
所述步驟34還包括對(duì)修改后的匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則判斷所述匹配單元節(jié)點(diǎn)的子節(jié)點(diǎn)是否為空,是則刪除該匹配單元節(jié)點(diǎn),否則標(biāo)識(shí)該匹配單元節(jié)點(diǎn)不再進(jìn)行匹配或者刪除該匹配單元節(jié)點(diǎn)所記錄的內(nèi)容。
刪除匹配單元節(jié)點(diǎn)之后還包括判斷所述匹配單元節(jié)點(diǎn)的父節(jié)點(diǎn)狀態(tài),如果為不再進(jìn)行匹配或者所記錄的內(nèi)容為空,則刪除所述父節(jié)點(diǎn)。
為了節(jié)約系統(tǒng)資源,在當(dāng)前串模式匹配成功時(shí),或者傳輸流結(jié)束時(shí),或者,所述串模式的全部節(jié)點(diǎn)中匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍時(shí),還包括刪除所述串模式的狀態(tài)樹(shù)的步驟。
本發(fā)明還提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的狀態(tài)樹(shù),是則直接對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù),然后執(zhí)行串模式匹配的步驟;對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟包括按照所述狀態(tài)樹(shù)進(jìn)行廣度遍歷,對(duì)于狀態(tài)樹(shù)中任一匹配單元節(jié)點(diǎn),將所述分段報(bào)文分別與該節(jié)點(diǎn)中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,清空所述流狀態(tài)信息中的預(yù)存字符,并執(zhí)行步驟41、對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元節(jié)點(diǎn)中字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟43,如果匹配完全不成功則執(zhí)行步驟44;步驟42、判斷所述匹配單元節(jié)點(diǎn)是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹(shù)中為所述匹配單元節(jié)點(diǎn)添加一子節(jié)點(diǎn),該子節(jié)點(diǎn)中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟41;步驟43、在所述匹配單元節(jié)點(diǎn)中預(yù)存該后綴字符,然后執(zhí)行步驟44;步驟44、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點(diǎn)遍歷結(jié)束;當(dāng)所述每一匹配單元節(jié)點(diǎn)廣度遍歷結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
本發(fā)明還提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)報(bào)文,然后對(duì)所述目標(biāo)報(bào)文執(zhí)行串模式匹配的步驟;否則直接設(shè)置所述分段報(bào)文為目標(biāo)報(bào)文并執(zhí)行串模式匹配的步驟;對(duì)所述目標(biāo)報(bào)文執(zhí)行串模式匹配的步驟包括
步驟51、將第一匹配規(guī)則作為當(dāng)前匹配規(guī)則;步驟52、查詢所述目標(biāo)報(bào)文是否與串模式的當(dāng)前匹配規(guī)則匹配,是則執(zhí)行步驟53;否則執(zhí)行步驟54;步驟53、判斷所述當(dāng)前匹配規(guī)則是否為當(dāng)前模式的最后一個(gè)規(guī)則,是則當(dāng)前串模式匹配成功,釋放流狀態(tài)信息并結(jié)束,否則將下一匹配規(guī)則作為當(dāng)前匹配規(guī)則,重新執(zhí)行步驟52;步驟54、判斷在所述傳輸流是否傳輸完畢,是則釋放所述流狀態(tài)信息并結(jié)束,否則執(zhí)行步驟55;步驟55、在流狀態(tài)信息中更新保存所述目標(biāo)報(bào)文的字符進(jìn)行下一分段報(bào)文的接收。
本發(fā)明還提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的裝置,包括流狀態(tài)信息設(shè)置模塊,用于針對(duì)任一傳輸流,動(dòng)態(tài)記錄該傳輸流每一串模式的流狀態(tài)信息,所述流狀態(tài)信息至少包括相對(duì)不同的分段報(bào)文動(dòng)態(tài)變化的預(yù)存字符和匹配單元;分段報(bào)文處理模塊,用于接收分段報(bào)文,并從所述流狀態(tài)信息設(shè)置模塊獲取預(yù)存字符,將所述分段報(bào)文與所述預(yù)存字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文;匹配處理模塊,分別與所述流狀態(tài)信息設(shè)置模塊和所述分段報(bào)文處理模塊連接,用于根據(jù)所述流狀態(tài)信息設(shè)置模塊提供的匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配;對(duì)于完全匹配的情況,指令所述流狀態(tài)信息設(shè)置模塊記錄下一匹配單元,對(duì)于目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串的對(duì)應(yīng)數(shù)目的前綴字符匹配成功的情況,指令所述流狀態(tài)信息設(shè)置模塊將所述后綴字符作為預(yù)存字符進(jìn)行記錄。
其中,較佳的技術(shù)方案是所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個(gè)匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預(yù)存字符給分段報(bào)文處理模塊,添加、刪除匹配單元,以及動(dòng)態(tài)變更匹配單元中的匹配開(kāi)始位置信息和匹配結(jié)束位置信息;其中,首個(gè)匹配單元還用于記錄預(yù)存字符。
或者,所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個(gè)匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預(yù)存字符給分段報(bào)文處理模塊,添加、刪除匹配單元,以及動(dòng)態(tài)變更匹配單元中的匹配開(kāi)始位置信息和匹配結(jié)束位置信息;其中,任一匹配單元還用于記錄該匹配單元進(jìn)行匹配時(shí)的預(yù)存字符。
更佳的技術(shù)方案是所述匹配單元按照狀態(tài)樹(shù)的方式連接,一下級(jí)匹配單元節(jié)點(diǎn)被添加,用于記錄與其上級(jí)匹配單元節(jié)點(diǎn)的成功匹配,其中,初始化的首個(gè)匹配單元節(jié)點(diǎn)為根節(jié)點(diǎn)。
所述匹配處理模塊包括流狀態(tài)信息獲取單元、匹配執(zhí)行單元和指令發(fā)送單元;所述流狀態(tài)信息獲取單元用于獲取待匹配的匹配單元、預(yù)存字符和分段報(bào)文信息,由所述匹配執(zhí)行單元進(jìn)行匹配;所述匹配執(zhí)行單元將匹配結(jié)果發(fā)送給所述指令發(fā)送單元,由所述指令發(fā)送單元根據(jù)匹配情況和報(bào)文變化情況,向所述流狀態(tài)信息設(shè)置模塊發(fā)出添加、刪除或者變更匹配單元的指令,以及向分段報(bào)文處理模塊發(fā)送接收下一分段報(bào)文的指令。
由上述技術(shù)方案可知,本發(fā)明通過(guò)保留流狀態(tài)信息,采用預(yù)留部分字符與后面的分段報(bào)文結(jié)合的技術(shù)方案,具有以下有益效果1、無(wú)需破壞協(xié)議棧,提高了報(bào)文處理的安全性;2、與大量分段報(bào)文整體保存相比,僅對(duì)部分字符和待測(cè)匹配單元進(jìn)行保存,避免了內(nèi)存的大量占用;3、不必緩存分段報(bào)文,使報(bào)文能夠快速轉(zhuǎn)發(fā),克服了網(wǎng)絡(luò)延遲和服務(wù)質(zhì)量下降的問(wèn)題。
下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。


圖1為應(yīng)用串模式匹配的網(wǎng)關(guān)設(shè)備所在的系統(tǒng)示意圖;圖2為應(yīng)用串模式匹配的旁路設(shè)備所在的系統(tǒng)示意圖;圖3為本發(fā)明所舉例的傳輸流被分為五段報(bào)文的示意圖;圖4為本發(fā)明所提供的第一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法的一個(gè)實(shí)施例流程圖;圖5A為匹配單元的報(bào)文長(zhǎng)度不能滿足有效檢測(cè)范圍時(shí),計(jì)算匹配開(kāi)始位置信息和匹配結(jié)束位置信息的示意圖;圖5B為匹配單元的報(bào)文長(zhǎng)度能夠滿足有效檢測(cè)范圍時(shí),計(jì)算匹配開(kāi)始位置信息和匹配結(jié)束位置信息的示意圖;圖6為本發(fā)明所提供的第二種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法的一個(gè)實(shí)施例流程圖;圖7為本發(fā)明所提供的第三種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法中狀態(tài)樹(shù)結(jié)構(gòu)示意圖;圖8A~圖8I為圖7所示方法的一個(gè)具體實(shí)施例的狀態(tài)樹(shù)變化圖;圖9為圖7所示方法的一個(gè)完整流程示意圖;圖10為本發(fā)明所提供的第四種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法中狀態(tài)樹(shù)的結(jié)構(gòu)示意圖;圖11為本發(fā)明所提供的第五種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法中狀態(tài)樹(shù)的結(jié)構(gòu)示意圖;圖12為本發(fā)明所提供的兼顧匹配策略的處理分段報(bào)文串模式匹配的裝置的系統(tǒng)框圖;圖13為圖12所提供裝置的一個(gè)具體實(shí)施例的系統(tǒng)框圖。
具體實(shí)施例方式
為了克服在現(xiàn)有技術(shù)中必須進(jìn)行流重組才能夠匹配串模式的問(wèn)題,本發(fā)明提供了五種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法以及一種兼顧匹配策略的處理分段報(bào)文串模式匹配的裝置,下面進(jìn)行一一說(shuō)明。
為了說(shuō)明方便起見(jiàn),首先設(shè)定一段傳輸流的內(nèi)容為“abdddddcabcokabcddrtdefabcdddefdfdkdefkadghkdef”,以及設(shè)定用于匹配的串模式為“規(guī)則A‘a(chǎn)bc’offset 3 depth 50,規(guī)則B‘def’distance 4 within 10,規(guī)則C‘ghk’distance 3 within 8”,簡(jiǎn)稱該串模式為串模式ABC。上述內(nèi)容所表述的是在內(nèi)容為“abdddddcabcokabcddrtdefabcdddefdfdkdedkadghkdef”的傳輸流中,搜索符合指定規(guī)則A、B和C的串模式在傳輸流中偏移3開(kāi)始,長(zhǎng)度為50的內(nèi)容中搜索“abc”,在匹配到A的位置偏移4開(kāi)始,長(zhǎng)度為10的內(nèi)容中搜索“def”,在匹配到B的位置偏移3開(kāi)始,長(zhǎng)度為8的內(nèi)容中搜索“ghk”。若最終匹配規(guī)則ABC成功,則說(shuō)明在傳輸流內(nèi)容中在同時(shí)考慮了字符串與匹配策略的情況下,實(shí)現(xiàn)了該串模式的匹配。同時(shí),在網(wǎng)絡(luò)傳輸中,上述傳輸流按照TCP協(xié)議會(huì)被分為5段報(bào)文,如圖3所示。
本發(fā)明對(duì)所提供的兼顧匹配策略的處理分段報(bào)文串模式匹配的方法及裝置實(shí)際匹配過(guò)程的描述,都通過(guò)各方法/裝置對(duì)上述5段分段報(bào)文進(jìn)行如上所述的串模式匹配進(jìn)行舉例說(shuō)明。但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,上述傳輸流內(nèi)容的設(shè)置和串模式的設(shè)置僅為說(shuō)明方便而非限定,本發(fā)明所提供的串模式匹配方法和串模式匹配裝置適用于實(shí)際應(yīng)用中出現(xiàn)的任何傳輸流內(nèi)容和串模式。
本發(fā)明所提供的第一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法包括以下步驟當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述流狀態(tài)信息中預(yù)存的字符,然后對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。
參見(jiàn)圖4,為本發(fā)明所提供的第一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法的一個(gè)實(shí)施例流程圖,包括以下步驟步驟101、當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則執(zhí)行步驟102,否則執(zhí)行步驟103;進(jìn)行本步驟的判斷是由于進(jìn)行串模式匹配是針對(duì)傳輸流進(jìn)行的,各分段報(bào)文僅能夠與本傳輸流中的其他分段報(bào)文結(jié)合,因此首先識(shí)別分段報(bào)文所在的傳輸流,這是現(xiàn)有技術(shù)能夠完成的。
識(shí)別分段報(bào)文所在的傳輸流后,進(jìn)一步識(shí)別針對(duì)當(dāng)前串模式,是否存在相應(yīng)的流狀態(tài)信息。由于在不同的業(yè)務(wù)應(yīng)用中,需要進(jìn)行的模式匹配要求不同,因此即使是對(duì)同一傳輸流,面向不同的業(yè)務(wù)應(yīng)用時(shí),需要匹配的串模式可能也不相同,因此需要根據(jù)需要設(shè)置和匹配。本發(fā)明針對(duì)任一傳輸流,采用記錄不同串模式的流狀態(tài)信息來(lái)取代緩存大量報(bào)文,從而實(shí)現(xiàn)不基于流重組的模式匹配。
步驟102、對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述流狀態(tài)信息中預(yù)存的字符,然后執(zhí)行步驟104;其中,對(duì)分段報(bào)文與流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文包括步驟1021、判斷流狀態(tài)信息的指定單元中是否存在預(yù)存的字符,是則執(zhí)行步驟1022,否則執(zhí)行步驟1023;步驟1022、將所述字符作為前綴,與所述分段報(bào)文結(jié)合起來(lái)設(shè)置為目標(biāo)分段報(bào)文;步驟1023、將所述分段報(bào)文直接設(shè)置為目標(biāo)分段報(bào)文。
一般來(lái)說(shuō),該指定單元可以是當(dāng)前匹配單元,即每一個(gè)指定單元中分別保存對(duì)應(yīng)的預(yù)存字符。
該指定單元也可以是固定的一個(gè)匹配單元,比如初始匹配單元,則對(duì)任何一個(gè)匹配單元進(jìn)行處理時(shí),都從該指定單元獲得字符信息。
進(jìn)一步的,為了減少流狀態(tài)信息的內(nèi)存占用,還可以單獨(dú)在存儲(chǔ)空間中開(kāi)辟一定的字節(jié)區(qū),專門用來(lái)存儲(chǔ)預(yù)存字符,該字節(jié)區(qū)的大小可以依據(jù)全部模式中規(guī)則所匹配內(nèi)容的最大長(zhǎng)度,如本發(fā)明作為例子的三個(gè)規(guī)則,所匹配的內(nèi)容都是三個(gè)字節(jié),那么開(kāi)辟3個(gè)字節(jié)的區(qū)域即可滿足要求;對(duì)于指定單元是固定的匹配單元的情況,包括在指定單元內(nèi)存儲(chǔ)預(yù)存字符以及在專門的字節(jié)區(qū)內(nèi)預(yù)存字符,都需要在當(dāng)前匹配單元中記錄相對(duì)位置。比如,當(dāng)匹配模式分別有規(guī)則為“abcd”“bcde”“cdf”時(shí),假設(shè)某段分段報(bào)文末尾結(jié)束字符為“xxabc”,則在該字節(jié)區(qū)內(nèi)存儲(chǔ)三個(gè)規(guī)則中所需保存的最長(zhǎng)字符“abc”,并分別建立各模式流狀態(tài)信息的指定單元到該字節(jié)區(qū)的連接,并在當(dāng)前匹配單元中記錄相對(duì)位置;對(duì)于規(guī)則“abcd”的流狀態(tài)信息,其相對(duì)位置為3,對(duì)于規(guī)則“bcde”,其相對(duì)位置為2,對(duì)于規(guī)則“cdf”,其相對(duì)位置為1。該相對(duì)位置就是從報(bào)文結(jié)束位置起的前向偏移量。特別是開(kāi)辟字節(jié)區(qū)的方案,尤其適用于多個(gè)匹配模式存在重復(fù)字符的情況,無(wú)需在每一個(gè)流狀態(tài)信息中進(jìn)行字符保存,能夠?qū)⑻幚韴?bào)文能力提高10個(gè)數(shù)量級(jí)。
在本技術(shù)方案中,該指定單元為首個(gè)匹配單元,保存且僅保存一預(yù)存字符,因此在進(jìn)行該分段報(bào)文匹配之前就需要進(jìn)行分段報(bào)文的結(jié)合工作。
步驟103、對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行步驟104;其中,對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息可以包括記錄首個(gè)匹配單元即初始化匹配單元作為當(dāng)前串模式的流狀態(tài)信息,并設(shè)置記錄預(yù)存字符的指定單元,所述匹配單元中至少包括進(jìn)行所述串模式首個(gè)規(guī)則匹配的匹配開(kāi)始位置信息和匹配結(jié)束位置信息。以圖3所示分段報(bào)文為例,當(dāng)接收到分段報(bào)文1時(shí),顯然需要進(jìn)行串模式ABC的初始化,包括記錄字符串“abc”和進(jìn)行該字符串匹配策略即偏移信息3和長(zhǎng)度50等規(guī)則信息,還要記錄報(bào)文匹配開(kāi)始的位置信息“1”和匹配結(jié)束位置信息“53”??梢钥闯?,對(duì)分段報(bào)文1進(jìn)行串模式匹配時(shí),就按照該匹配單元進(jìn)行匹配操作。
步驟104、對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟,包括1041、獲取流狀態(tài)信息中記錄的一個(gè)匹配單元,這種獲取可以是按照流狀態(tài)信息中匹配單元記錄的順序獲取,也可以是隨機(jī)獲??;假設(shè)是流狀態(tài)信息初始化完成后的第一次對(duì)目標(biāo)分段報(bào)文進(jìn)行處理,那么顯然流狀態(tài)信息中僅有一個(gè)匹配單元能夠被獲?。?042、對(duì)所述目標(biāo)分段報(bào)文與所述匹配單元進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟1043,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功,則執(zhí)行步驟1045,如果匹配完全不成功則執(zhí)行步驟1046;1043、判斷所述匹配單元是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟1044;在本步驟中,為了降低系統(tǒng)資源開(kāi)銷,當(dāng)前串模式匹配成功后還可以進(jìn)一步包括刪除當(dāng)前串模式的流狀態(tài)信息的步驟。
1044、根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟1042;舉例來(lái)說(shuō),當(dāng)對(duì)分段報(bào)文2執(zhí)行串模式匹配時(shí),同樣需要遍歷流狀態(tài)信息中的匹配單元;由于分段報(bào)文1未發(fā)生完全匹配情況,因此沒(méi)有新增加匹配單元,此時(shí)所存在的匹配單元仍為初始化后的首個(gè)匹配單元,即進(jìn)行規(guī)則A的匹配;分段報(bào)文2中存在字符串“abc”,完全匹配,則進(jìn)一步設(shè)置新的匹配單元,包括記錄字符串“def”和進(jìn)行該字符串匹配的偏移信息4和長(zhǎng)度10等規(guī)則信息,還要記錄進(jìn)行該字符串“def”匹配的開(kāi)始位置信息“13”和結(jié)束位置信息“23”??梢钥闯?,經(jīng)過(guò)本步驟處理以后,對(duì)分段報(bào)文3進(jìn)行匹配時(shí),至少要與兩個(gè)匹配單元進(jìn)行匹配。
1045、在所述流狀態(tài)信息中預(yù)存該后綴字符,然后執(zhí)行1046;
舉例來(lái)說(shuō),圖3中分段報(bào)文1的最后一個(gè)后綴字符為“a”,當(dāng)對(duì)該分段報(bào)文與規(guī)則A進(jìn)行匹配時(shí),該后綴字符“a”顯然與規(guī)則A中字符串“abc”的第一個(gè)字母匹配,也就意味著該分段報(bào)文中的最后一個(gè)字符“a”有可能與下一個(gè)分段報(bào)文組合出符合匹配要求的“abc”,因此,需要將字符拷貝保留,同時(shí)記錄相對(duì)位置信息。
為了保證不丟失任一匹配單元的匹配信息,在本步驟中在所述流狀態(tài)信息中預(yù)存該后綴字符包括檢查所述流狀態(tài)信息中是否存在預(yù)存的字符,是則對(duì)所述后綴字符和所述預(yù)存字符進(jìn)行比較,對(duì)字符數(shù)目較多的字符進(jìn)行預(yù)存;否則直接預(yù)存該后綴字符。舉例來(lái)說(shuō),當(dāng)一個(gè)匹配單元的規(guī)則是匹配“def”,而另一個(gè)匹配單元的規(guī)則是匹配“tdef”,當(dāng)某一分段報(bào)文的結(jié)束字符為“tde”時(shí),根據(jù)兩個(gè)匹配單元的隨機(jī)或者依次匹配次序,可能存在下述兩種情況第一、當(dāng)被首先匹配的匹配單元為規(guī)則“def”時(shí),需要預(yù)存字符“de”,并在當(dāng)前匹配單元中保存相應(yīng)位置2;則進(jìn)行下一匹配單元的匹配時(shí),檢查所述流狀態(tài)信息中存在預(yù)存的字符,則進(jìn)行比較;由于字符“tde”的長(zhǎng)度大于字符“de”,因此,將預(yù)存的字符更新為“tde”,并在當(dāng)前匹配單元中保存相應(yīng)位置3;第二、當(dāng)被首先匹配的匹配單元為規(guī)則“tdef”時(shí),需要預(yù)存字符“tde”,并在當(dāng)前匹配單元中保存相應(yīng)位置3;則進(jìn)行下一匹配單元的匹配時(shí),檢查所述流狀態(tài)信息中存在預(yù)存的字符,則進(jìn)行比較;由于字符“tde”的長(zhǎng)度大于字符“de”,因此,不進(jìn)行預(yù)存字符的變更,仍保存字符“tde”,但在當(dāng)前匹配單元中保存相應(yīng)位置2。
1046、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元的匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;例如,初始化后匹配單元記錄的匹配開(kāi)始位置信息為“1”,匹配結(jié)束位置信息為“53”,則進(jìn)行分段報(bào)文1的匹配及保存字符“a”之后,需要進(jìn)行該匹配單元的匹配開(kāi)始位置信息和匹配結(jié)束位置信息調(diào)節(jié),具體可以為匹配開(kāi)始位置信息為“1”,代表從下一報(bào)文的第一個(gè)字符開(kāi)始;匹配結(jié)束位置信息為45,如圖3所示,對(duì)于首報(bào)文的匹配是從偏移3的位置開(kāi)始,即偏移字符為3個(gè),所匹配的字符為“ddddca”,由于字符“a”存儲(chǔ)留待下一次匹配,因此有效匹配的報(bào)文為“ddddc”,共5個(gè)字符,則對(duì)匹配結(jié)束位置信息的修改就是根據(jù)所匹配字符的個(gè)數(shù),將“53”修改為“45”。
1047、檢查是否存在其它匹配單元,是則重新執(zhí)行步驟1041,否則對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
當(dāng)串模式匹配成功,則返回匹配成功結(jié)果;如果當(dāng)傳輸流結(jié)束或者串模式有效范圍結(jié)束時(shí)尚未匹配成功,則返回串模式匹配失敗結(jié)果。
為了避免存儲(chǔ)過(guò)多的信息,同時(shí)為了提高匹配的效率,步驟1046還可以包括對(duì)修改后的匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元記錄。例如,當(dāng)匹配開(kāi)始位置信息調(diào)整之后為0,則說(shuō)明不可能再進(jìn)行下一分段報(bào)文的匹配,則刪除該匹配單元即可。同樣的,除了當(dāng)前串模式匹配成功的情況以外,當(dāng)傳輸流結(jié)束時(shí),或者,當(dāng)所述串模式的全部匹配單元的匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則刪除所述串模式的流狀態(tài)信息,而且,對(duì)匹配開(kāi)始位置信息或匹配結(jié)束位置信息進(jìn)行檢測(cè)較對(duì)整個(gè)流進(jìn)行檢測(cè)更為靈敏,有利于流狀態(tài)信息的隨時(shí)刪除,釋放空間。
下面以圖3所示分段報(bào)文的另一個(gè)具體實(shí)施例來(lái)說(shuō)明本發(fā)明所提供的第一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法。首先描述一下匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息的計(jì)算方法對(duì)于未考慮跨報(bào)情況,規(guī)則A、B、C是在連續(xù)的報(bào)文中進(jìn)行匹配,將匹配開(kāi)始位置信息以Start表示,匹配結(jié)束位置信息以Len表示,則本領(lǐng)域技術(shù)人員很容易理解,各個(gè)匹配單元中記錄對(duì)應(yīng)規(guī)則的形式可以如下所示
A-Start=1;A-Len=A-depth(檢測(cè)深度,比如本實(shí)施例中為50)+A-offset(A的偏移值)-報(bào)文中已經(jīng)檢測(cè)的字符個(gè)數(shù);B-Start=A的匹配位置+規(guī)則A內(nèi)容長(zhǎng)度(如本實(shí)施例中為3)+B-distance(B的偏移值);B-Len=B-Start+B-distance(B的偏移值)+B-within(B的檢測(cè)深度);C-Start=B的匹配位置+ContentB內(nèi)容長(zhǎng)度(如本實(shí)施例中為3)+C-distance;C-Len=C-Stan+C-distance(C的偏移值)+C-within(C的檢測(cè)深度)。
而對(duì)于跨報(bào)文的情況,則稍微復(fù)雜一些,參見(jiàn)圖5A和圖5B,為進(jìn)行跨報(bào)文計(jì)算的圖示;其中,圖5A為匹配單元的報(bào)文長(zhǎng)度不能滿足規(guī)則有效檢測(cè)范圍的情況,圖5B為匹配單元的報(bào)文長(zhǎng)度能夠滿足規(guī)則有效檢測(cè)范圍的情況,由于內(nèi)容長(zhǎng)度相當(dāng)于匹配位置加上相應(yīng)字符,因此為了說(shuō)明方便,這里暫時(shí)定義內(nèi)容長(zhǎng)度為0。n是當(dāng)前報(bào)文長(zhǎng)度,i是前一規(guī)則在當(dāng)前報(bào)文的匹配位置,j是下一個(gè)規(guī)則的偏移值,m是下一個(gè)規(guī)則的檢測(cè)深度,則在圖5A中,下一規(guī)則的Start為j-(n-i),Len為Start+m;在圖5B中,下一規(guī)則的Start為i+j,Len為Start+m,對(duì)于Start和Len之間跨報(bào)文的情況,該Len的實(shí)際值為Start+m-n。在本實(shí)施例中A-Start=1;A-Len=A-depth(檢測(cè)深度)+A-offset(A的偏移值)-報(bào)文中已經(jīng)檢測(cè)的字符個(gè)數(shù);B-Start=A的匹配位置+Content A內(nèi)容長(zhǎng)度+B-distance,此為匹配單元的報(bào)文長(zhǎng)度能夠滿足規(guī)則B有效檢測(cè)范圍的情況;或者B-Start=B-distance-(當(dāng)前報(bào)文長(zhǎng)度-A的匹配位置-Content A內(nèi)容長(zhǎng)度),此為匹配單元的報(bào)文長(zhǎng)度不能滿足規(guī)則B有效檢測(cè)范圍的情況,則B-Start的匹配開(kāi)始位置在下一分段報(bào)文中;
B-Len=B-Start+B-within(B的檢測(cè)深度);C-Start=B的匹配位置+Content B內(nèi)容長(zhǎng)度+C-distance,此為匹配單元的報(bào)文長(zhǎng)度能夠滿足規(guī)則C有效檢測(cè)范圍的情況;或者C-Start=C-distance-(當(dāng)前報(bào)文長(zhǎng)度-B的匹配位置-ContentB內(nèi)容長(zhǎng)度),此為匹配單元的報(bào)文長(zhǎng)度不能滿足規(guī)則C有效檢測(cè)范圍的情況,則C-Start的匹配開(kāi)始位置在下一分段報(bào)文中;C-Len=C-Start+C-within(C的檢測(cè)深度)。
則本實(shí)施例的步驟如下步驟111、接收到分段報(bào)文1;步驟112、判斷該分段報(bào)文所在的傳輸流不存在當(dāng)前串模式ABC的流狀態(tài)信息,對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,包括設(shè)置首個(gè)匹配單元A,其中記錄規(guī)則A“abc”的匹配開(kāi)始位置信息“1”和匹配結(jié)束位置信息“53”;還包括設(shè)置記錄預(yù)存字符的指定單元,在本實(shí)施例中為設(shè)置專門的一個(gè)字節(jié)Pkt,此時(shí)Pkt為空,然后設(shè)置所述分段報(bào)文1為目標(biāo)分段報(bào)文;步驟113、根據(jù)該匹配單元A對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在報(bào)文1中偏移3的位置尋找“abc”,結(jié)果未完全匹配;但該分段報(bào)文1的最后一個(gè)字符為“a”,有可能和下一個(gè)報(bào)文組合為目標(biāo)字符串’abc’,故需要拷貝保留該字符到Pkt中,并記錄相對(duì)位置1;步驟114、根據(jù)所述分段報(bào)文1的長(zhǎng)度信息,修改所述匹配單元A中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為將匹配開(kāi)始位置信息修改為“1”,代表從下一報(bào)文首字符起進(jìn)行匹配,匹配結(jié)束位置信息修改為“45”,即原來(lái)的匹配結(jié)束位置信息減去偏移值和已檢測(cè)的字符個(gè)數(shù);步驟115、判斷不存在其他匹配單元,因此分段報(bào)文1的串模式匹配結(jié)束;步驟116、接收分段報(bào)文2;步驟117、判斷所述分段報(bào)文2所在的傳輸流已存在當(dāng)前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容“a”和分段報(bào)文2內(nèi)容合二為一,并清空該P(yáng)kt字段,將結(jié)合后的報(bào)文“abcokabcddrtdef”作為目標(biāo)分段報(bào)文;步驟118、根據(jù)已有的匹配單元A對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在目標(biāo)分段報(bào)文2中“1”的位置起尋找“abc”,結(jié)果完全匹配;步驟119、在流狀態(tài)信息中記錄下一匹配單元B1,包括記錄進(jìn)行所述串模式中規(guī)則B匹配的匹配開(kāi)始位置信息1+3+4=8和匹配結(jié)束位置信息8+10=18,所謂匹配結(jié)束位置信息代表在第18個(gè)字符之前結(jié)束;步驟120、在匹配完全成功的位置之后,即從字符4開(kāi)始,重新對(duì)目標(biāo)分段報(bào)文執(zhí)行該字符串“abc”的匹配,結(jié)果完全匹配;步驟121、在流狀態(tài)信息中記錄下一匹配單元B2,包括記錄進(jìn)行所述串模式中規(guī)則B匹配的匹配開(kāi)始位置信息6+3+4=13和匹配結(jié)束位置信息13+10=23;步驟122、在匹配完全成功的位置之后,即從字符9開(kāi)始,重新對(duì)目標(biāo)分段報(bào)文執(zhí)行該字符串“abc”的匹配,結(jié)果為不匹配;步驟123、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元A中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為將匹配開(kāi)始位置信息修改為“1”,代表從下一報(bào)文首字符起進(jìn)行匹配,匹配結(jié)束位置信息修改為“30”,即原來(lái)的匹配結(jié)束位置信息減去已檢測(cè)的字符個(gè)數(shù)15;所述匹配單元A匹配結(jié)束;步驟124、由于出現(xiàn)了兩個(gè)新的匹配單元B1和B2,因此隨機(jī)挑選一匹配單元對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,本實(shí)施例是首先在字符8到18的位置中進(jìn)行匹配單元B1“def”的匹配,由于目標(biāo)分段報(bào)文2的長(zhǎng)度為15,因此實(shí)際的匹配發(fā)生在字符8到本目標(biāo)分段報(bào)文結(jié)束,結(jié)果為完全匹配;這種匹配單元的選擇也可以預(yù)設(shè)次序,比如按照生成匹配單元的次序進(jìn)行;步驟125、在流狀態(tài)信息中記錄下一匹配單元C1,包括記錄進(jìn)行所述串模式中規(guī)則C匹配的匹配開(kāi)始位置信息3-(15-13-3)=4和匹配結(jié)束位置信息4+8=12;步驟126、在完全匹配的位置之后,該目標(biāo)分段報(bào)文2結(jié)束,因此繼續(xù)匹配完全不成功;步驟127、根據(jù)所述分段報(bào)文2的長(zhǎng)度信息,修改所述匹配單元B1中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元B1中匹配開(kāi)始位置信息為1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為18-15=3;所述匹配單元B1匹配結(jié)束;步驟128、根據(jù)下一個(gè)匹配單元B2進(jìn)行目標(biāo)分段報(bào)文2的匹配,在字符13到23的位置中進(jìn)行“def”的匹配,由于目標(biāo)分段報(bào)文2的長(zhǎng)度為15,因此實(shí)際的匹配發(fā)生在字符13到本目標(biāo)分段報(bào)文結(jié)束,結(jié)果為完全匹配;步驟129、在流狀態(tài)信息中記錄下一匹配單元C2,包括記錄進(jìn)行所述串模式中規(guī)則C匹配的匹配開(kāi)始位置信息3-(15-13-3)=4和匹配結(jié)束位置信息4+8=12;步驟130、根據(jù)所述分段報(bào)文2的長(zhǎng)度信息,修改所述匹配單元B2中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元B2中匹配開(kāi)始位置信息為1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為23-15=8;所述匹配單元B2匹配結(jié)束;由于沒(méi)有其他對(duì)應(yīng)本分段報(bào)文2的匹配單元,因此,分段報(bào)文2匹配結(jié)束;步驟131、接收分段報(bào)文3;步驟132、判斷所述分段報(bào)文3所在的傳輸流已存在當(dāng)前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容和分段報(bào)文3內(nèi)容合二為一,由于Pkt字段為空,因此結(jié)合后的報(bào)文仍為分段報(bào)文3,作為目標(biāo)分段報(bào)文;步驟133、根據(jù)匹配單元A對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在目標(biāo)分段報(bào)文3中“1”的位置起尋找“abc”,結(jié)果完全匹配;步驟134、在流狀態(tài)信息中記錄下一匹配單元B3,包括記錄進(jìn)行所述串模式中規(guī)則B匹配的匹配開(kāi)始位置信息4-(3-(1+3))=5和匹配結(jié)束位置信息5+10=15;
步驟135、在完全匹配的位置之后,該目標(biāo)分段報(bào)文結(jié)束,因此繼續(xù)匹配完全不成功;并且,由于超過(guò)了本分段報(bào)文的長(zhǎng)度,因此,B3不再繼續(xù)對(duì)分段報(bào)文3進(jìn)行匹配;步驟136、根據(jù)所述分段報(bào)文3的長(zhǎng)度信息,修改所述匹配單元A中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元A中匹配開(kāi)始位置信息為1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為30-3=27;所述匹配單元A匹配結(jié)束;步驟137、根據(jù)下一個(gè)匹配單元B1進(jìn)行目標(biāo)分段報(bào)文的匹配,在字符1到3的位置中進(jìn)行“def”的匹配,結(jié)果為完全不匹配;步驟138、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元B1中匹配開(kāi)始位置信息為1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為3-3=0;所述匹配單元B1匹配結(jié)束;步驟139、由于匹配單元B1的匹配結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元B1;步驟140、根據(jù)下一個(gè)匹配單元B2進(jìn)行目標(biāo)分段報(bào)文的匹配,在字符1到8的位置中進(jìn)行“def”的匹配,由于本分段報(bào)文3僅有三個(gè)字符,因此實(shí)際是從字符1到本分段報(bào)文3結(jié)束的位置進(jìn)行匹配,結(jié)果為完全不匹配;步驟141、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元B2中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元B2中匹配開(kāi)始位置信息為1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為8-3=5;所述匹配單元B2匹配結(jié)束;步驟142、根據(jù)下一個(gè)匹配單元C1進(jìn)行目標(biāo)分段報(bào)文的匹配,由于C1的匹配開(kāi)始位置就超出了分段報(bào)文3的范圍,因此匹配完全不成功;步驟143、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元C1中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元C1中匹配開(kāi)始位置信息為4-3=1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為12-3=9;所述匹配單元C1匹配結(jié)束;步驟144、根據(jù)下一個(gè)匹配單元C2進(jìn)行目標(biāo)分段報(bào)文的匹配,由于C2的匹配開(kāi)始位置就超出了分段報(bào)文3的范圍,因此匹配完全不成功;步驟145、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元C2中匹配開(kāi)始位置信息為4-3=1,代表下一分段報(bào)文的匹配從字符1開(kāi)始,匹配結(jié)束位置信息為12-3=9;所述匹配單元C2匹配結(jié)束;由于沒(méi)有其他對(duì)應(yīng)本分段報(bào)文3的匹配單元,因此,分段報(bào)文3匹配結(jié)束;步驟146、接收分段報(bào)文4“dddefdfdkdefkad”;步驟147、判斷所述分段報(bào)文4所在的傳輸流已存在當(dāng)前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容和分段報(bào)文4內(nèi)容合二為一,由于Pkt字段為空,因此結(jié)合后的報(bào)文仍為分段報(bào)文4,作為目標(biāo)分段報(bào)文;步驟148、根據(jù)匹配單元A對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在目標(biāo)分段報(bào)文4中“1”的位置起尋找“abc”,結(jié)果完全不匹配;步驟149、根據(jù)所述分段報(bào)文4的長(zhǎng)度信息,修改所述匹配單元A中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為將匹配開(kāi)始位置信息修改為“1”,代表從下一報(bào)文首字符起進(jìn)行匹配,匹配結(jié)束位置信息修改為27-15=12,即原來(lái)的匹配結(jié)束位置信息減去已檢測(cè)的字符個(gè)數(shù)15;所述匹配單元A匹配結(jié)束;步驟150、根據(jù)下一個(gè)匹配單元B2進(jìn)行目標(biāo)分段報(bào)文的匹配,在字符1到5的位置中進(jìn)行“def”的匹配,由于是在第5個(gè)字符之前結(jié)束,因此僅能匹配到第四個(gè)字符“e”,結(jié)果為完全不匹配;步驟151、根據(jù)所述分段報(bào)文4的長(zhǎng)度信息,修改所述匹配單元B2中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元B2中匹配開(kāi)始位置信息為負(fù)值,匹配結(jié)束位置信息為負(fù)值;所述匹配單元B2匹配結(jié)束;步驟152、由于匹配單元B2的匹配開(kāi)始和結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元B2;步驟153、根據(jù)下一個(gè)匹配單元B3進(jìn)行目標(biāo)分段報(bào)文的匹配,在字符5到15的位置中進(jìn)行“def”的匹配,結(jié)果為完全匹配;步驟154、在流狀態(tài)信息中記錄下一匹配單元C3,包括記錄進(jìn)行所述串模式中規(guī)則C匹配的匹配開(kāi)始位置信息3-(15-10-3)=1,標(biāo)明從下一分段報(bào)文的字符1開(kāi)始,和匹配結(jié)束位置信息1+8=9;步驟155、在匹配完全成功的位置之后,即從字符12開(kāi)始,已經(jīng)超出匹配單元B3的范圍,結(jié)果完全不匹配;步驟156、根據(jù)所述分段報(bào)文4的長(zhǎng)度信息,修改所述匹配單元B3中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元B3中匹配開(kāi)始位置信息為負(fù)值,匹配結(jié)束位置信息為負(fù)值;所述匹配單元B3匹配結(jié)束;步驟157、由于匹配單元B3的匹配開(kāi)始和結(jié)束位置信息分別為-10和0超出有效檢測(cè)范圍,則刪除該匹配單元B3;步驟158、根據(jù)下一個(gè)匹配單元C1進(jìn)行目標(biāo)分段報(bào)文的匹配,在1至9的范圍內(nèi),與字符串“ghk”完全不匹配;步驟159、根據(jù)所述分段報(bào)文4的長(zhǎng)度信息,修改所述匹配單元C1中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元C1中匹配開(kāi)始位置信息為負(fù)值,匹配結(jié)束位置信息為負(fù)值;所述匹配單元C1匹配結(jié)束;步驟160、由于匹配單元C1的匹配開(kāi)始和結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元C1;步驟161、根據(jù)下一個(gè)匹配單元C2進(jìn)行目標(biāo)分段報(bào)文的匹配,在1至9的范圍內(nèi),與字符串“ghk”完全不匹配;步驟162、根據(jù)所述分段報(bào)文4的長(zhǎng)度信息,修改所述匹配單元C2中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為匹配單元C2中匹配開(kāi)始位置信息為負(fù)值,匹配結(jié)束位置信息為負(fù)值;所述匹配單元C2匹配結(jié)束;步驟163、由于匹配單元C2的匹配開(kāi)始和結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元C2;由于下一個(gè)匹配單元C3針對(duì)的是下一報(bào)文,因此分段報(bào)文4的匹配結(jié)束;步驟164、接收分段報(bào)文5“ghkdef”;步驟165、判斷所述分段報(bào)文5所在的傳輸流已存在當(dāng)前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容和分段報(bào)文5內(nèi)容合二為一,由于Pkt字段為空,因此結(jié)合后的報(bào)文仍為分段報(bào)文5,作為目標(biāo)分段報(bào)文;步驟166、根據(jù)匹配單元A對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在目標(biāo)分段報(bào)文5中“1”的位置起尋找“abc”,結(jié)果完全不匹配;步驟167、根據(jù)所述分段報(bào)文5的長(zhǎng)度信息,修改所述匹配單元A中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為將匹配開(kāi)始位置信息修改為“1”,代表從下一報(bào)文首字符起進(jìn)行匹配,匹配結(jié)束位置信息修改為12-6=6,即原來(lái)的匹配結(jié)束位置信息減去已檢測(cè)的字符個(gè)數(shù)6;所述匹配單元A匹配結(jié)束;步驟168、根據(jù)下一個(gè)匹配單元C3進(jìn)行目標(biāo)分段報(bào)文的匹配,即在1-9之間進(jìn)行“ghk”的匹配,結(jié)果為完全匹配;步驟169、所述匹配單元C3匹配結(jié)束返回模式匹配成功指令;步驟170、刪除當(dāng)前串模式的流狀態(tài)信息,即刪除全部匹配單元,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束。
在本實(shí)施例中,顯然C1、C2和C3對(duì)應(yīng)著當(dāng)前串模式的最后規(guī)則即在匹配到B的位置偏移3開(kāi)始,長(zhǎng)度為8的內(nèi)容中搜索“ghk”,因此當(dāng)C3匹配成功后,釋放當(dāng)前流狀態(tài)信息;如果對(duì)于最終C3也未匹配成功的情況,則在當(dāng)前傳輸流結(jié)束,或者全部匹配單元的開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍時(shí),也可作為刪除全部的匹配單元的條件。
在本實(shí)施例中,采用的是對(duì)匹配單元分別執(zhí)行刪除操作,包括步驟139、152、157、160和163;還可以采用刪除該匹配單元所記錄的內(nèi)容來(lái)進(jìn)行;也可通過(guò)標(biāo)識(shí)不再對(duì)該匹配單元進(jìn)行匹配的方式來(lái)避免重復(fù)勞動(dòng),這種兩種方式雖然會(huì)占用一定的內(nèi)存空間,但有利于保證匹配單元的連續(xù)性。
本發(fā)明提供了第二種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,其實(shí)施例參見(jiàn)圖6,包括以下步驟步驟201、當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則執(zhí)行步驟203,否則執(zhí)行步驟202;步驟202、對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后執(zhí)行步驟203;步驟203、對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟,包括2031、獲取流狀態(tài)信息中記錄的一個(gè)匹配單元,這種獲取可以是按照流狀態(tài)信息中匹配單元記錄的順序獲取,也可以是隨機(jī)獲取;假設(shè)是流狀態(tài)信息初始化完成后的第一次對(duì)目標(biāo)分段報(bào)文進(jìn)行處理,那么顯然流狀態(tài)信息中僅有一個(gè)匹配單元能夠被獲??;2032、對(duì)分段報(bào)文與流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,清空所述流狀態(tài)信息中的預(yù)存字符;2033、對(duì)所述目標(biāo)分段報(bào)文與所述匹配單元進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟2034,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功,則執(zhí)行步驟2036,如果匹配完全不成功則執(zhí)行步驟2037;2034、判斷所述匹配單元是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則刪除當(dāng)前串模式的流狀態(tài)信息,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟2035;在本實(shí)施例中,采取了當(dāng)前串模式匹配成功后即行刪除流狀態(tài)信息的操作,以節(jié)約系統(tǒng)資源。
步驟2035、根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟2033;2036、在所述匹配單元中預(yù)存該后綴字符,然后執(zhí)行步驟2037;因?yàn)槭菍?duì)每一分段報(bào)文進(jìn)行分別的匹配,因此動(dòng)態(tài)變化的預(yù)存字符能夠保證不丟失匹配信息。
2037、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;2038、檢查是否存在其它匹配單元,是則重新執(zhí)行步驟2031,否則對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
為了避免存儲(chǔ)過(guò)多的信息,步驟2037還可以包括對(duì)修改后的匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元所記錄的內(nèi)容或者刪除該匹配單元。例如,當(dāng)匹配開(kāi)始位置信息調(diào)整之后為0,則說(shuō)明不可能再進(jìn)行下一分段報(bào)文的匹配,則刪除該匹配單元即可。
同樣的,當(dāng)傳輸流結(jié)束時(shí),刪除所述串模式的流狀態(tài)信息;或者,當(dāng)所述串模式的全部匹配單元的匹配開(kāi)始位置信息或匹配結(jié)束位置信息都超出有效檢測(cè)范圍,則刪除所述串模式的流狀態(tài)信息,而且,對(duì)匹配開(kāi)始位置信息或匹配結(jié)束位置信息進(jìn)行檢測(cè)較對(duì)整個(gè)流進(jìn)行檢測(cè)更為靈敏,有利于流狀態(tài)信息的隨時(shí)刪除,釋放空間。
可以看出,就本發(fā)明所提供的第二種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法而言,除了進(jìn)行預(yù)存字符結(jié)合的次序和字符預(yù)存的位置發(fā)生變化以外,與所提供的第一種串模式匹配方法相同。
本發(fā)明還提供了第三種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,是以狀態(tài)樹(shù)的方式對(duì)流狀態(tài)信息進(jìn)行組織。由于狀態(tài)樹(shù)本身的繼承關(guān)系清晰,因此有利于識(shí)別和處理。具體包括當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的狀態(tài)樹(shù),是則對(duì)所述分段報(bào)文與所述狀態(tài)樹(shù)根節(jié)點(diǎn)中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述根節(jié)點(diǎn)中預(yù)存的字符,然后對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù),然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。
其中,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟包括對(duì)所述目標(biāo)分段報(bào)文進(jìn)行狀態(tài)樹(shù)的廣度遍歷,根據(jù)每一匹配單元節(jié)點(diǎn),對(duì)所述目標(biāo)分段報(bào)文分別執(zhí)行步驟31、對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟32,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元節(jié)點(diǎn)中字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟34,如果匹配完全不成功則執(zhí)行步驟35;步驟32、判斷所述匹配單元節(jié)點(diǎn)是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟33;步驟33、在所述狀態(tài)樹(shù)中為所述匹配單元節(jié)點(diǎn)添加一子節(jié)點(diǎn),該子節(jié)點(diǎn)中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟31;步驟34、在所述根節(jié)點(diǎn)中預(yù)存該后綴字符,然后執(zhí)行步驟35;步驟35、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點(diǎn)遍歷結(jié)束;當(dāng)所述每一匹配單元節(jié)點(diǎn)廣度遍歷結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
其中,對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù)包括設(shè)置根節(jié)點(diǎn)作為當(dāng)前串模式的流狀態(tài)信息并設(shè)置記錄預(yù)存字符的指定單元,所述根節(jié)點(diǎn)為首個(gè)匹配單元節(jié)點(diǎn),至少包記錄進(jìn)行所述串模式首個(gè)規(guī)則匹配的匹配開(kāi)始位置信息和匹配結(jié)束位置信息。
為了避免匹配信息的丟失,所述步驟33中,在所述根節(jié)點(diǎn)中預(yù)存該后綴字符包括檢查所述根節(jié)點(diǎn)中是否存在預(yù)存的字符,是則對(duì)所述后綴字符和所述預(yù)存字符進(jìn)行比較,對(duì)字符數(shù)目較多的字符進(jìn)行預(yù)存,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置;否則直接預(yù)存該后綴字符,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置。
或者,預(yù)存該后綴字符包括將所述字符保存在預(yù)設(shè)的字節(jié)區(qū)內(nèi),在所述根節(jié)點(diǎn)中保存到該字節(jié)區(qū)的指針,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置。
所述步驟34還包括對(duì)修改后的匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則判斷所述匹配單元節(jié)點(diǎn)的子節(jié)點(diǎn)是否為空,是則刪除該匹配單元節(jié)點(diǎn),否則標(biāo)識(shí)該匹配單元節(jié)點(diǎn)不再進(jìn)行匹配或者刪除該匹配單元節(jié)點(diǎn)所記錄的內(nèi)容。
進(jìn)一步的,為了減小資源開(kāi)銷,還包括刪除該匹配單元節(jié)點(diǎn)時(shí),判斷其父節(jié)點(diǎn)是否不再進(jìn)行匹配或者無(wú)記錄內(nèi)容,是則刪除該匹配單元節(jié)點(diǎn)的父節(jié)點(diǎn)。
進(jìn)一步的,為了釋放緩存,還包括當(dāng)前串模式匹配成功時(shí),或者當(dāng)傳輸流結(jié)束時(shí),或者所述串模式的全部節(jié)點(diǎn)中匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍時(shí),刪除所述串模式的狀態(tài)樹(shù)。
參見(jiàn)圖7,為上述兼顧匹配策略的處理分段報(bào)文串模式匹配的方法示意圖,這里對(duì)兩個(gè)流進(jìn)行了圖示,其中對(duì)流ID為123的傳輸流給出了按照本發(fā)明所提供的狀態(tài)樹(shù)執(zhí)行的圖示,而對(duì)流ID為456的傳輸流,僅給出了根節(jié)點(diǎn)的示意圖。通過(guò)本圖示也可以看出,本發(fā)明所提供的兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,對(duì)于不同的流以及不同的串模式,彼此之間不發(fā)生干擾。就本發(fā)明的狀態(tài)樹(shù)而言,表現(xiàn)出來(lái)的就是不同的樹(shù)之間獨(dú)立。
進(jìn)一步的,圖7中的匹配單元節(jié)點(diǎn)中都記錄了匹配開(kāi)始位置信息和匹配結(jié)束位置信息,以及該匹配單元節(jié)點(diǎn)進(jìn)行匹配的規(guī)則。對(duì)任一分段報(bào)文進(jìn)行廣度遍歷時(shí),根據(jù)根節(jié)點(diǎn)進(jìn)行規(guī)則A的匹配;根據(jù)二級(jí)節(jié)點(diǎn),進(jìn)行規(guī)則B的匹配;根據(jù)三級(jí)節(jié)點(diǎn),進(jìn)行規(guī)則C的匹配。下面,就以圖3所提供的分段報(bào)文為例,以狀態(tài)樹(shù)動(dòng)態(tài)變化的方式加以說(shuō)明。
如圖8A所示,接收到分段報(bào)文1,判斷該分段報(bào)文所在的傳輸流不存在當(dāng)前串模式ABC的流狀態(tài)信息,對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,包括設(shè)置根節(jié)點(diǎn),其中記錄規(guī)則A“abc”的匹配開(kāi)始位置信息“1”和匹配結(jié)束位置信息“53”;還包括設(shè)置記錄預(yù)存字符的指定單元,在本實(shí)施例中是在根節(jié)點(diǎn)中設(shè)置專門的一個(gè)字節(jié)Pkt,此時(shí)Pkt為空,然后設(shè)置所述分段報(bào)文1為目標(biāo)分段報(bào)文。
參見(jiàn)8B,對(duì)目標(biāo)分段報(bào)文進(jìn)行廣度遍歷,具體為根據(jù)根節(jié)點(diǎn)對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在報(bào)文1中偏移3的位置尋找“abc”,結(jié)果未完全匹配;但該分段報(bào)文1的最后一個(gè)字符為“a”,有可能和下一個(gè)報(bào)文組合為目標(biāo)字符串’abc’,故需要拷貝保留該字符到Pkt中,同時(shí)記錄相對(duì)位置信息1;根據(jù)所述分段報(bào)文1的長(zhǎng)度信息,修改所述根節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為將匹配開(kāi)始位置信息修改為“1”,代表從下一報(bào)文首字符起進(jìn)行匹配,匹配結(jié)束位置信息修改為“45”,即原來(lái)的匹配結(jié)束位置信息減去偏移值和已檢測(cè)的字符個(gè)數(shù)。分段報(bào)文1的串模式匹配結(jié)束。
參見(jiàn)圖8C,接收分段報(bào)文2進(jìn)行廣度遍歷,具體為判斷所述分段報(bào)文2所在的傳輸流已存在當(dāng)前串模式的流狀態(tài)信息,則將保存的Pkt內(nèi)容“a”和分段報(bào)文2內(nèi)容合二為一,并清空該P(yáng)kt字段,將結(jié)合后的報(bào)文“abcokabcddrtdef”作為目標(biāo)分段報(bào)文;然后對(duì)目標(biāo)分段報(bào)文進(jìn)行匹配,具體為在目標(biāo)分段報(bào)文2中“1”的位置起尋找“abc”,結(jié)果完全匹配;在所述狀態(tài)樹(shù)中為所述根節(jié)點(diǎn)添加一子節(jié)點(diǎn)B1,包括記錄進(jìn)行所述串模式中規(guī)則B匹配的匹配開(kāi)始位置信息1+3+4=8和匹配結(jié)束位置信息8+10=18;然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,即從字符4開(kāi)始,重新對(duì)目標(biāo)分段報(bào)文執(zhí)行該字符串“abc”的匹配,結(jié)果完全匹配,因此,又在所述狀態(tài)樹(shù)中為所述根節(jié)點(diǎn)添加一子節(jié)點(diǎn)B2,包括記錄進(jìn)行所述串模式中規(guī)則B匹配的匹配開(kāi)始位置信息6+3+4=13和匹配結(jié)束位置信息13+10=23;根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元A中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,具體為將匹配開(kāi)始位置信息修改為“1”,代表從下一報(bào)文首字符起進(jìn)行匹配,匹配結(jié)束位置信息修改為“30”,即原來(lái)的匹配結(jié)束位置信息減去已檢測(cè)的字符個(gè)數(shù)15;所述匹配單元A匹配結(jié)束,即第一行的廣度遍歷完成。
參見(jiàn)圖8D,由于出現(xiàn)了兩個(gè)新的匹配單元節(jié)點(diǎn)B1和B2,因此需要進(jìn)行第二行子節(jié)點(diǎn)的遍歷,遍歷的結(jié)果為匹配單元節(jié)點(diǎn)B1新增了子節(jié)點(diǎn)C1,匹配單元節(jié)點(diǎn)B2新增了子節(jié)點(diǎn)C2,同時(shí)B1和B2的匹配開(kāi)始位置信息和匹配結(jié)束位置信息都發(fā)生了變化。對(duì)于分段報(bào)文2遍歷完成。
參見(jiàn)圖8E,接收分段報(bào)文3進(jìn)行廣度遍歷,在對(duì)根節(jié)點(diǎn)的遍歷中,添加了新的匹配單元節(jié)點(diǎn)B3,并對(duì)根節(jié)點(diǎn)的匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行調(diào)節(jié)。
參見(jiàn)圖8F,對(duì)二級(jí)匹配單元節(jié)點(diǎn)的遍歷中,未產(chǎn)生新的子節(jié)點(diǎn),原匹配單元節(jié)點(diǎn)B1、B2的匹配開(kāi)始位置信息和匹配結(jié)束位置信息發(fā)生變化,其中,由于B1的匹配結(jié)束位置信息超出有效檢測(cè)范圍,可以標(biāo)識(shí)不再對(duì)其進(jìn)行匹配;對(duì)三級(jí)匹配單元節(jié)點(diǎn)的遍歷中,C1和C2的匹配開(kāi)始位置信息和匹配結(jié)束位置信息發(fā)生變化。
其中,對(duì)于超出有效檢測(cè)范圍的處理步驟包括判斷該匹配單元節(jié)點(diǎn)B1是否存在子節(jié)點(diǎn),結(jié)果為存在子節(jié)點(diǎn)C1,因此不能進(jìn)行該匹配單元節(jié)點(diǎn)B1的刪除,而是清除記錄內(nèi)容或者標(biāo)識(shí)不再對(duì)其進(jìn)行匹配;本實(shí)施例中顯示了標(biāo)識(shí)不再匹配的情況以及清除記錄內(nèi)容(全部歸零)的情況。
參見(jiàn)圖8G,接收分段報(bào)文4進(jìn)行廣度遍歷,在對(duì)一級(jí)匹配單元節(jié)點(diǎn)的遍歷中,對(duì)根節(jié)點(diǎn)的匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行調(diào)節(jié);在對(duì)二級(jí)匹配單元節(jié)點(diǎn)的遍歷中,略過(guò)B1,對(duì)B2的遍歷后,由于B2的匹配結(jié)束位置信息超出有效檢測(cè)范圍,也標(biāo)識(shí)不再對(duì)其進(jìn)行匹配或者刪除所記錄的內(nèi)容,對(duì)B3的遍歷新增了子節(jié)點(diǎn)C3,由于B3的匹配結(jié)束位置信息超出有效檢測(cè)范圍,因此也標(biāo)識(shí)不再對(duì)其進(jìn)行匹配或者刪除所記錄的內(nèi)容。
參見(jiàn)8H,在對(duì)三級(jí)匹配單元節(jié)點(diǎn)的遍歷中,對(duì)于針對(duì)分段報(bào)文4的C1、C2和C3進(jìn)行遍歷,分別調(diào)整其匹配開(kāi)始位置信息和匹配結(jié)束位置信息;由于C1的匹配開(kāi)始和結(jié)束位置信息超出有效檢測(cè)范圍,且其所在的路徑上節(jié)點(diǎn)都無(wú)需進(jìn)行遍歷,因此,刪除該路徑。其中,進(jìn)行路徑刪除的具體操作為判斷匹配單元節(jié)點(diǎn)C1不存在子節(jié)點(diǎn),刪除該匹配單元節(jié)點(diǎn)C1;進(jìn)一步判斷該匹配單元節(jié)點(diǎn)C1的父節(jié)點(diǎn)B1已標(biāo)識(shí)為不再進(jìn)行匹配或者記錄為零,則刪除該匹配單元節(jié)點(diǎn)B1。
且,由于C2的匹配開(kāi)始和結(jié)束位置信息超出有效檢測(cè)范圍,因此標(biāo)識(shí)不再對(duì)其進(jìn)行匹配或者刪除所記錄的內(nèi)容。當(dāng)然,由于其不具有子節(jié)點(diǎn),因此也可采用刪除C2的操作。
參見(jiàn)8I,接收分段報(bào)文5進(jìn)行廣度遍歷,在對(duì)一級(jí)匹配單元節(jié)點(diǎn)的遍歷中,對(duì)根節(jié)點(diǎn)的匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行調(diào)節(jié);由于二級(jí)節(jié)點(diǎn)都無(wú)需進(jìn)行遍歷,因此直接進(jìn)行三級(jí)節(jié)點(diǎn)的遍歷,具體為對(duì)C3的遍歷,由于C3匹配了“ghk”,因此串模式匹配成功,釋放流信息即刪除全部的匹配單元。
上面給出了對(duì)于圖3所示報(bào)文進(jìn)行處理的分步驟的狀態(tài)示意圖。對(duì)于本方法而言,其完整的流程如圖9所示。
本發(fā)明還提供了第四種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,同樣是以狀態(tài)樹(shù)的方式對(duì)流狀態(tài)信息進(jìn)行組織,但是在每一個(gè)節(jié)點(diǎn)中分別設(shè)置字段,用于保存預(yù)存字符。當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的狀態(tài)樹(shù),是則直接對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù),然后執(zhí)行串模式匹配的步驟;對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟包括按照所述狀態(tài)樹(shù)進(jìn)行廣度遍歷,對(duì)于狀態(tài)樹(shù)中任一匹配單元節(jié)點(diǎn),將所述分段報(bào)文分別與該節(jié)點(diǎn)中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,清空所述流狀態(tài)信息中的預(yù)存字符,并執(zhí)行步驟41、對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元節(jié)點(diǎn)中字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟44,如果匹配完全不成功則執(zhí)行步驟45;步驟42、判斷所述匹配單元節(jié)點(diǎn)是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則執(zhí)行步驟43;步驟43、在所述狀態(tài)樹(shù)中為所述匹配單元節(jié)點(diǎn)添加一子節(jié)點(diǎn),該子節(jié)點(diǎn)中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟41;步驟44、在所述匹配單元節(jié)點(diǎn)中預(yù)存該后綴字符,然后執(zhí)行步驟45;步驟45、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點(diǎn)遍歷結(jié)束;當(dāng)所述每一匹配單元節(jié)點(diǎn)廣度遍歷結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。參見(jiàn)圖10,為該串模式匹配方法的狀態(tài)樹(shù)示意圖。
本發(fā)明還提供了第五種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)報(bào)文,然后對(duì)所述目標(biāo)報(bào)文執(zhí)行串模式匹配的步驟;否則直接設(shè)置所述分段報(bào)文為目標(biāo)報(bào)文并執(zhí)行串模式匹配的步驟;對(duì)所述目標(biāo)報(bào)文執(zhí)行串模式匹配的步驟包括
步驟51、將第一匹配規(guī)則作為當(dāng)前匹配規(guī)則;步驟52、查詢所述目標(biāo)報(bào)文是否與串模式的當(dāng)前匹配規(guī)則匹配,是則執(zhí)行步驟53;否則執(zhí)行步驟54;步驟53、判斷所述當(dāng)前匹配規(guī)則是否為當(dāng)前模式的最后一個(gè)規(guī)則,是則當(dāng)前串模式匹配成功,釋放流狀態(tài)信息并結(jié)束,否則將下一匹配規(guī)則作為當(dāng)前匹配規(guī)則,重新執(zhí)行步驟52;步驟54、判斷在所述傳輸流是否傳輸完畢,是則釋放所述流狀態(tài)信息并結(jié)束,否則執(zhí)行步驟55;步驟55、在流狀態(tài)信息中更新保存所述目標(biāo)報(bào)文的字符進(jìn)行下一分段報(bào)文的接收。
參見(jiàn)圖11,為第五種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法流程示意圖。顯然,就第五種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法而言,如果不匹配前一個(gè)規(guī)則,就不再進(jìn)行后續(xù)匹配;而是接收下一分段并組合預(yù)存字符(即在先的全部分段報(bào)文)后,重新從第一匹配規(guī)則開(kāi)始匹配。
可以看出,本發(fā)明所提供的五種方法都能夠?qū)崿F(xiàn)基于分段報(bào)文的串模式匹配,在摒棄了常規(guī)的流重組方法的前提下能夠協(xié)同BM、BF等兼顧匹配策略的模式匹配方法進(jìn)行串模式匹配,從而避免了對(duì)協(xié)議棧的破壞以及減少了系統(tǒng)內(nèi)存的占用;不僅提高了系統(tǒng)整體性能,不增加各種應(yīng)用服務(wù)的時(shí)間延遲,而且由于流重組的避免,從理論上避免了漏報(bào)的可能。但上述五種方法彼此之間存在差異,前四種方法較為相似,僅在預(yù)存字符的設(shè)置或者匹配單元的組織上存在差異,應(yīng)該說(shuō),第一、三種方法僅需要拷貝極少的數(shù)據(jù)(預(yù)存字符),第二、四種方法相對(duì)第一、三種而言,需要拷貝的數(shù)據(jù)(預(yù)存字符)稍多一些,但仍遠(yuǎn)小于目前的分段報(bào)文緩存,因此,從系統(tǒng)性能角度考慮,具有極大的改進(jìn)。但第五種方法較前四種方法而言,技術(shù)方案極為簡(jiǎn)單,但需要拷貝比較多的數(shù)據(jù)。
本發(fā)明還提供了一種兼顧匹配策略的處理分段報(bào)文串模式匹配的裝置,參見(jiàn)圖12,包括流狀態(tài)信息設(shè)置模塊1,用于針對(duì)任一傳輸流,動(dòng)態(tài)記錄該傳輸流每一串模式的流狀態(tài)信息,所述流狀態(tài)信息至少包括相對(duì)不同的分段報(bào)文動(dòng)態(tài)變化的預(yù)存字符和匹配單元;分段報(bào)文處理模塊2,用于接收分段報(bào)文,并從所述流狀態(tài)信息設(shè)置模塊獲取預(yù)存字符,將所述分段報(bào)文與所述預(yù)存字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文;匹配處理模塊3,分別與所述流狀態(tài)信息設(shè)置模塊1和所述分段報(bào)文處理模塊2連接,用于根據(jù)所述流狀態(tài)信息設(shè)置模塊提供的匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配;對(duì)于完全匹配的情況,指令所述流狀態(tài)信息設(shè)置模塊1記錄下一匹配單元,對(duì)于目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串的對(duì)應(yīng)數(shù)目的前綴字符匹配成功的情況,指令所述流狀態(tài)信息設(shè)置模塊1將所述后綴字符作為預(yù)存字符進(jìn)行記錄。
當(dāng)完全匹配或者傳輸流老化結(jié)束或者超出匹配范圍時(shí),匹配處理模塊3還用于輸出匹配結(jié)果。
參見(jiàn)圖13,為上述裝置的實(shí)施例,其中,所述流狀態(tài)信息設(shè)置模塊1設(shè)有控制單元1A和多個(gè)匹配單元1B1~1BN,其中,N為匹配單元的個(gè)數(shù),且為動(dòng)態(tài)變化的;所述控制單元1A用于接收匹配處理模塊3的指令并發(fā)送預(yù)存字符給分段報(bào)文處理模塊2,添加、刪除匹配單元,以及動(dòng)態(tài)變更匹配單元中的匹配開(kāi)始位置信息和匹配結(jié)束位置信息;其中,首個(gè)匹配單元1B1還用于記錄預(yù)存字符,或者,任一匹配單元1B1~1BN還用于記錄該匹配單元進(jìn)行匹配時(shí)的預(yù)存字符。
為了便于組織,上述匹配單元1B1~1BN可以按照狀態(tài)樹(shù)的方式連接,一下級(jí)匹配單元節(jié)點(diǎn)被添加,用于記錄與其上級(jí)匹配單元節(jié)點(diǎn)的成功匹配,其中,初始化的首個(gè)匹配單元節(jié)點(diǎn)為根節(jié)點(diǎn)。
所述匹配處理模塊3包括流狀態(tài)信息獲取單元3A、匹配執(zhí)行單元3B和指令發(fā)送單元3C;所述流狀態(tài)信息獲取單元3A用于獲取待匹配的匹配單元、預(yù)存字符和分段報(bào)文信息,由所述匹配執(zhí)行單元3B進(jìn)行匹配;所述匹配執(zhí)行單元3B將匹配結(jié)果發(fā)送給所述指令發(fā)送單元3C,由所述指令發(fā)送單元3C根據(jù)匹配情況和報(bào)文變化情況,向所述流狀態(tài)信息設(shè)置模塊1發(fā)出添加、刪除或者變更匹配單元1B1~1BN的指令,以及向分段報(bào)文處理模塊2發(fā)送接收下一分段報(bào)文的指令。
綜上所述,本發(fā)明所提供的方法和裝置通過(guò)保存流狀態(tài)替代緩存所有報(bào)文,由于該緩存內(nèi)容是每一個(gè)匹配規(guī)則中字符串的一部分,因此,緩存報(bào)文的預(yù)存字段無(wú)需很長(zhǎng),其最大的長(zhǎng)度規(guī)格為串模式規(guī)則中最長(zhǎng)的字符串即可。顯然,本發(fā)明所提供的方法和裝置在避免了流重組對(duì)協(xié)議棧的破壞的同時(shí),也避免了內(nèi)存大量占用帶來(lái)的系統(tǒng)性能降低,以及避免了緩存對(duì)業(yè)務(wù)質(zhì)量的影響。
本發(fā)明所提供的方法和裝置進(jìn)一步可以采用狀態(tài)樹(shù)的方式組織,進(jìn)行廣度遍歷,能夠動(dòng)態(tài)刪除本節(jié)點(diǎn)或者所在路徑,達(dá)到內(nèi)存的進(jìn)一步釋放。
由于保存的流狀態(tài)中包括但不限于匹配開(kāi)始位置信息和匹配結(jié)束位置信息,本領(lǐng)域技術(shù)人員能夠根據(jù)實(shí)際需要設(shè)置,具有很大的擴(kuò)展性。
最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這些修改或者等同替換亦不能使修改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,其特征在于當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述流狀態(tài)信息中預(yù)存的字符,然后對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟包括按照所述流狀態(tài)信息中記錄的每一匹配單元,對(duì)所述目標(biāo)分段報(bào)文分別執(zhí)行步驟11、根據(jù)任一匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟12,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟13,如果匹配完全不成功則執(zhí)行步驟14;步驟12、判斷所述匹配單元是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟11;步驟13、在所述流狀態(tài)信息中預(yù)存該后綴字符,然后執(zhí)行步驟14;步驟14、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當(dāng)所述每一匹配單元匹配結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于對(duì)所述分段報(bào)文與所述流狀態(tài)信息的指定單元中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文包括判斷所述流狀態(tài)信息中是否存在預(yù)存的字符,是則將所述字符作為前綴,與所述分段報(bào)文結(jié)合起來(lái)設(shè)置為目標(biāo)分段報(bào)文,否則將所述分段報(bào)文直接設(shè)置為目標(biāo)分段報(bào)文。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息包括記錄首個(gè)匹配單元作為當(dāng)前串模式的流狀態(tài)信息,并設(shè)置記錄預(yù)存字符的指定單元,所述匹配單元中至少包括進(jìn)行所述串模式首個(gè)規(guī)則匹配的匹配開(kāi)始位置信息和匹配結(jié)束位置信息。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于所述步驟13中,在所述流狀態(tài)信息中預(yù)存該后綴字符包括檢查所述流狀態(tài)信息中是否存在預(yù)存的字符,是則對(duì)所述后綴字符和所述預(yù)存字符進(jìn)行比較,對(duì)字符數(shù)目較多的字符進(jìn)行預(yù)存,并在當(dāng)前匹配單元中記錄所保存字符的相對(duì)位置;否則直接預(yù)存該后綴字符,并在當(dāng)前匹配單元中記錄所保存字符的相對(duì)位置。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于預(yù)存該后綴字符包括將所述字符保存在預(yù)設(shè)的字節(jié)區(qū)內(nèi),在所述流狀態(tài)信息中保存到該字節(jié)區(qū)的指針,并在當(dāng)前匹配單元中記錄以及所保存字符的相對(duì)位置。
7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于所述步驟14還包括對(duì)修改后的匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則刪除該匹配單元。
8.根據(jù)權(quán)利要求1或2所述的方法,其特征在于當(dāng)前串模式匹配成功時(shí),或者傳輸流結(jié)束時(shí),或者所述串模式的全部匹配單元的匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍時(shí),還包括刪除所述串模式的流狀態(tài)信息的步驟。
9.一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,其特征在于當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則直接對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,然后對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟包括按照所述流狀態(tài)信息中記錄的每一匹配單元,將所述分段報(bào)文分別與該匹配單元中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,清空所述流狀態(tài)信息中的預(yù)存字符,并執(zhí)行步驟21、根據(jù)任一匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟22,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟23,如果匹配完全不成功則執(zhí)行步驟24;步驟22、判斷所述匹配單元是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則根據(jù)串模式的匹配次序,在所述流狀態(tài)信息中記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟21;步驟23、在所述匹配單元中預(yù)存該后綴字符,然后執(zhí)行步驟24;步驟24、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元匹配結(jié)束;當(dāng)所述每一匹配單元匹配結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
10.一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,其特征在于當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的狀態(tài)樹(shù),是則對(duì)所述分段報(bào)文與所述狀態(tài)樹(shù)根節(jié)點(diǎn)中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,并清空所述根節(jié)點(diǎn)中預(yù)存的字符,然后對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù),然后設(shè)置所述分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟包括對(duì)所述目標(biāo)分段報(bào)文進(jìn)行狀態(tài)樹(shù)的廣度遍歷,根據(jù)每一匹配單元節(jié)點(diǎn),對(duì)所述目標(biāo)分段報(bào)文分別執(zhí)行步驟31、對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果匹配完全成功則執(zhí)行步驟32,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元節(jié)點(diǎn)中字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟33,如果匹配完全不成功則執(zhí)行步驟34;步驟32、判斷所述匹配單元節(jié)點(diǎn)是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹(shù)中為所述匹配單元節(jié)點(diǎn)添加一子節(jié)點(diǎn),該子節(jié)點(diǎn)中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟31;步驟33、在所述根節(jié)點(diǎn)中預(yù)存該后綴字符,然后執(zhí)行步驟34;步驟34、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點(diǎn)遍歷結(jié)束;當(dāng)所述每一匹配單元節(jié)點(diǎn)廣度遍歷結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
12.根據(jù)權(quán)利要求10或11所述的方法,其特征在于對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù)包括設(shè)置根節(jié)點(diǎn)作為當(dāng)前串模式的流狀態(tài)信息并設(shè)置記錄預(yù)存字符的指定單元,所述根節(jié)點(diǎn)為首個(gè)匹配單元節(jié)點(diǎn),至少包括記錄進(jìn)行所述串模式首個(gè)規(guī)則匹配的匹配開(kāi)始位置信息和匹配結(jié)束位置信息。
13.根據(jù)權(quán)利要求10或11所述的方法,其特征在于所述步驟33中,在所述根節(jié)點(diǎn)中預(yù)存該后綴字符包括檢查所述根節(jié)點(diǎn)中是否存在預(yù)存的字符,是則對(duì)所述后綴字符和所述預(yù)存字符進(jìn)行比較,對(duì)字符數(shù)目較多的字符進(jìn)行預(yù)存,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置;否則直接預(yù)存該后綴字符,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于預(yù)存該后綴字符包括將所述字符保存在預(yù)設(shè)的字節(jié)區(qū)內(nèi),在所述根節(jié)點(diǎn)中保存到該字節(jié)區(qū)的指針,并在當(dāng)前匹配單元節(jié)點(diǎn)中記錄所保存字符的相對(duì)位置。
15.根據(jù)權(quán)利要求10或11所述的方法,其特征在于所述步驟34還包括對(duì)修改后的匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息進(jìn)行判斷,如果該匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍,則判斷所述匹配單元節(jié)點(diǎn)的子節(jié)點(diǎn)是否為空,是則刪除該匹配單元節(jié)點(diǎn),否則標(biāo)識(shí)該匹配單元節(jié)點(diǎn)不再進(jìn)行匹配或者刪除該匹配單元節(jié)點(diǎn)所記錄的內(nèi)容。
16.根據(jù)權(quán)利要求15所述的方法,其特征在于刪除匹配單元節(jié)點(diǎn)之后還包括判斷所述匹配單元節(jié)點(diǎn)的父節(jié)點(diǎn)狀態(tài),如果為不再進(jìn)行匹配或者所記錄的內(nèi)容為空,則刪除所述父節(jié)點(diǎn)。
17.根據(jù)權(quán)利要求10或11所述的方法,其特征在于當(dāng)前串模式匹配成功時(shí),或者傳輸流結(jié)束時(shí),或者所述串模式的全部節(jié)點(diǎn)中匹配開(kāi)始位置信息或匹配結(jié)束位置信息超出有效檢測(cè)范圍時(shí),還包括刪除所述串模式的狀態(tài)樹(shù)的步驟。
18.一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,其特征在于當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的狀態(tài)樹(shù),是則直接對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟;否則對(duì)所述傳輸流初始化當(dāng)前串模式的狀態(tài)樹(shù),然后執(zhí)行串模式匹配的步驟;對(duì)所述分段報(bào)文執(zhí)行串模式匹配的步驟包括按照所述狀態(tài)樹(shù)進(jìn)行廣度遍歷,對(duì)于狀態(tài)樹(shù)中任一匹配單元節(jié)點(diǎn),將所述分段報(bào)文分別與該節(jié)點(diǎn)中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,清空所述流狀態(tài)信息中的預(yù)存字符,并執(zhí)行步驟41、對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配,如果所述目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元節(jié)點(diǎn)中字符串對(duì)應(yīng)數(shù)目的前綴字符匹配成功則執(zhí)行步驟43,如果匹配完全不成功則執(zhí)行步驟44;步驟42、判斷所述匹配單元節(jié)點(diǎn)是否為對(duì)應(yīng)當(dāng)前串模式最后規(guī)則的匹配單元,是則當(dāng)前串模式匹配成功,對(duì)當(dāng)前傳輸流執(zhí)行串模式匹配的步驟結(jié)束,否則在所述狀態(tài)樹(shù)中為所述匹配單元節(jié)點(diǎn)添加一子節(jié)點(diǎn),該子節(jié)點(diǎn)中根據(jù)串模式的匹配次序,記錄下一匹配單元,然后在所述目標(biāo)分段報(bào)文中匹配完全成功的位置之后,重新對(duì)所述目標(biāo)分段報(bào)文執(zhí)行步驟41;步驟43、在所述匹配單元節(jié)點(diǎn)中預(yù)存該后綴字符,然后執(zhí)行步驟44;步驟44、根據(jù)所述分段報(bào)文的長(zhǎng)度信息,修改所述匹配單元節(jié)點(diǎn)中匹配開(kāi)始位置信息和匹配結(jié)束位置信息,所述匹配單元節(jié)點(diǎn)遍歷結(jié)束;當(dāng)所述每一匹配單元節(jié)點(diǎn)廣度遍歷結(jié)束后,對(duì)所述目標(biāo)分段報(bào)文執(zhí)行串模式匹配的步驟結(jié)束。
19.一種兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,其特征在于當(dāng)接收到任一分段報(bào)文時(shí),判斷所述分段報(bào)文所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)所述分段報(bào)文與所述流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)報(bào)文,然后對(duì)所述目標(biāo)報(bào)文執(zhí)行串模式匹配的步驟;否則直接設(shè)置所述分段報(bào)文為目標(biāo)報(bào)文并執(zhí)行串模式匹配的步驟;對(duì)所述目標(biāo)報(bào)文執(zhí)行串模式匹配的步驟包括步驟51、將第一匹配規(guī)則作為當(dāng)前匹配規(guī)則;步驟52、查詢所述目標(biāo)報(bào)文是否與串模式的當(dāng)前匹配規(guī)則匹配,是則執(zhí)行步驟53;否則執(zhí)行步驟54;步驟53、判斷所述當(dāng)前匹配規(guī)則是否為當(dāng)前模式的最后一個(gè)規(guī)則,是則當(dāng)前串模式匹配成功,釋放流狀態(tài)信息并結(jié)束,否則將下一匹配規(guī)則作為當(dāng)前匹配規(guī)則,重新執(zhí)行步驟52;步驟54、判斷在所述傳輸流是否傳輸完畢,是則釋放所述流狀態(tài)信息并結(jié)束,否則執(zhí)行步驟55;步驟55、在流狀態(tài)信息中更新保存所述目標(biāo)報(bào)文的字符進(jìn)行下一分段報(bào)文的接收。
20.一種兼顧匹配策略的處理分段報(bào)文串模式匹配的裝置,其特征在于包括流狀態(tài)信息設(shè)置模塊,用于針對(duì)任一傳輸流,動(dòng)態(tài)記錄該傳輸流每一串模式的流狀態(tài)信息,所述流狀態(tài)信息至少包括相對(duì)不同的分段報(bào)文動(dòng)態(tài)變化的預(yù)存字符和匹配單元;分段報(bào)文處理模塊,用于接收分段報(bào)文,并從所述流狀態(tài)信息設(shè)置模塊獲取預(yù)存字符,將所述分段報(bào)文與所述預(yù)存字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文;匹配處理模塊,分別與所述流狀態(tài)信息設(shè)置模塊和所述分段報(bào)文處理模塊連接,用于根據(jù)所述流狀態(tài)信息設(shè)置模塊提供的匹配單元,對(duì)所述目標(biāo)分段報(bào)文進(jìn)行匹配;對(duì)于完全匹配的情況,指令所述流狀態(tài)信息設(shè)置模塊記錄下一匹配單元,對(duì)于目標(biāo)分段報(bào)文至少一個(gè)后綴字符與所述匹配單元字符串的對(duì)應(yīng)數(shù)目的前綴字符匹配成功的情況,指令所述流狀態(tài)信息設(shè)置模塊將所述后綴字符作為預(yù)存字符進(jìn)行記錄。
21.根據(jù)權(quán)利要求20所述的裝置,其特征在于所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個(gè)匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預(yù)存字符給分段報(bào)文處理模塊,添加、刪除匹配單元,以及動(dòng)態(tài)變更匹配單元中的匹配開(kāi)始位置信息和匹配結(jié)束位置信息;其中,首個(gè)匹配單元還用于記錄預(yù)存字符。
22.根據(jù)權(quán)利要求20所述的裝置,其特征在于所述流狀態(tài)信息設(shè)置模塊設(shè)有控制單元和多個(gè)匹配單元;所述控制單元用于接收匹配處理模塊的指令并發(fā)送預(yù)存字符給分段報(bào)文處理模塊,添加、刪除匹配單元,以及動(dòng)態(tài)變更匹配單元中的匹配開(kāi)始位置信息和匹配結(jié)束位置信息;其中,任一匹配單元還用于記錄該匹配單元進(jìn)行匹配時(shí)的預(yù)存字符。
23.根據(jù)權(quán)利要求21或22所述的裝置,其特征在于所述匹配單元按照狀態(tài)樹(shù)的方式連接,一下級(jí)匹配單元節(jié)點(diǎn)被添加,用于記錄與記錄與其上級(jí)匹配單元節(jié)點(diǎn)的成功匹配,其中,初始化的首個(gè)匹配單元節(jié)點(diǎn)為根節(jié)點(diǎn)。
24.根據(jù)權(quán)利要求20所述的裝置,其特征在于所述匹配處理模塊包括流狀態(tài)信息獲取單元、匹配執(zhí)行單元和指令發(fā)送單元;所述流狀態(tài)信息獲取單元用于獲取待匹配的匹配單元、預(yù)存字符和分段報(bào)文信息,由所述匹配執(zhí)行單元進(jìn)行匹配;所述匹配執(zhí)行單元將匹配結(jié)果發(fā)送給所述指令發(fā)送單元,由所述指令發(fā)送單元根據(jù)匹配情況和報(bào)文變化情況,向所述流狀態(tài)信息設(shè)置模塊發(fā)出添加、刪除或者變更匹配單元的指令,以及向分段報(bào)文處理模塊發(fā)送接收下一分段報(bào)文的指令。
全文摘要
本發(fā)明公開(kāi)了兼顧匹配策略的處理分段報(bào)文串模式匹配的方法,包括接收到任一分段報(bào)文時(shí),判斷所在的傳輸流是否已存在當(dāng)前串模式的流狀態(tài)信息,是則對(duì)分段報(bào)文與流狀態(tài)信息中預(yù)存的字符進(jìn)行結(jié)合處理為目標(biāo)分段報(bào)文,對(duì)其執(zhí)行串模式匹配的步驟;否則對(duì)傳輸流初始化當(dāng)前串模式的流狀態(tài)信息,設(shè)置分段報(bào)文為目標(biāo)分段報(bào)文并執(zhí)行串模式匹配的步驟。還公開(kāi)了分別記錄對(duì)應(yīng)每一匹配單元的后綴字符,以及通過(guò)狀態(tài)樹(shù)方式組織流狀態(tài)信息等兼顧匹配策略的處理分段報(bào)文串模式匹配的方法。還公開(kāi)了兼顧匹配策略的處理分段報(bào)文串模式匹配的裝置。通過(guò)本發(fā)明公開(kāi)的方法及裝置,提高了報(bào)文處理的安全性,避免了內(nèi)存的大量占用,克服了網(wǎng)絡(luò)延遲和服務(wù)質(zhì)量下降的問(wèn)題。
文檔編號(hào)H04L12/66GK101026576SQ20071006288
公開(kāi)日2007年8月29日 申請(qǐng)日期2007年1月19日 優(yōu)先權(quán)日2007年1月19日
發(fā)明者張利達(dá) 申請(qǐng)人:杭州華為三康技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
门头沟区| 亚东县| 柳州市| 苍山县| 石景山区| 亚东县| 阳原县| 八宿县| 宜良县| 三明市| 肥乡县| 丰原市| 仪征市| 永福县| 郑州市| 博爱县| 缙云县| 凤台县| 浦东新区| 梅河口市| 石棉县| 南漳县| 乐安县| 米泉市| 霸州市| 博爱县| 乌什县| 宝丰县| 彝良县| 阿图什市| 迁安市| 东丽区| 土默特左旗| 姜堰市| 瓮安县| 德惠市| 齐河县| 启东市| 龙井市| 澳门| 东莞市|