專利名稱:網(wǎng)絡(luò)消息解析方法及通信設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及通信技術(shù)領(lǐng)域,特別涉及一種網(wǎng)絡(luò)消息解析方法及通信設(shè)備。
背景技術(shù):
現(xiàn)在固網(wǎng)寬帶業(yè)務(wù)快速發(fā)展,給運(yùn)營(yíng)商帶來(lái)機(jī)遇的同時(shí)也帶來(lái)挑戰(zhàn),隨著P2P、網(wǎng)絡(luò)游戲、Web TV、VoIP等應(yīng)用的普及,帶來(lái)了帶寬管理、內(nèi)容計(jì)費(fèi)、信息安全處理等一系列問(wèn)題。深度包檢測(cè)(De印Packet Inspection, DPI)技術(shù)被認(rèn)為是應(yīng)對(duì)網(wǎng)絡(luò)中多個(gè)業(yè)務(wù)運(yùn)行所帶來(lái)的管理問(wèn)題的有效方法,即利用DPI技術(shù)能夠?qū)W(wǎng)絡(luò)中運(yùn)行的多種業(yè)務(wù)的網(wǎng)絡(luò)消息進(jìn)行快速的解析,可以識(shí)別出網(wǎng)絡(luò)消息所歸屬的應(yīng)用協(xié)議。但是,現(xiàn)在僅解析出網(wǎng)絡(luò)消息所歸屬的應(yīng)用協(xié)議是不夠的,還需要解析出網(wǎng)絡(luò)消息中攜帶的關(guān)心數(shù)據(jù),比如,對(duì)于超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP) 的網(wǎng)絡(luò)消息,現(xiàn)有技術(shù)提供一種解析HTTP協(xié)議的網(wǎng)絡(luò)消息的方法,具體的,網(wǎng)絡(luò)服務(wù)器接收服務(wù)器與客戶端間傳輸?shù)腍TTP協(xié)議的網(wǎng)絡(luò)消息,網(wǎng)絡(luò)服務(wù)器中的數(shù)據(jù)解析模塊根據(jù) HTTP協(xié)議的格式,預(yù)先設(shè)置好實(shí)現(xiàn)的邏輯,收到HTTP協(xié)議的網(wǎng)絡(luò)消息后按照預(yù)先設(shè)置的邏輯進(jìn)行處理,以如下網(wǎng)絡(luò)消息為例對(duì)現(xiàn)有技術(shù)的解析方法進(jìn)行描述"GET/root. html HTTP/1. l\r\n"‘‘ User-Agent :Mozilla/5. 0\r\n “"Host :d. wikimedia. org\r\n,," Accept-Encoding :gzip, deflate\r\n “‘‘ Keep-Alive :115\r\n “" Connection :keep_alive\r\n “〃 Content-Length :10\r\n\r\n ‘‘“ 0123456789"網(wǎng)絡(luò)服務(wù)器中的解析模塊針對(duì)HTTP協(xié)議的網(wǎng)絡(luò)消息進(jìn)行解析時(shí),預(yù)先設(shè)置好的邏輯是利用逐字符掃描方法,匹配出該網(wǎng)絡(luò)消息中的請(qǐng)求方法類型以及Host頭域值,如上述實(shí)例,匹配出的請(qǐng)求方法類型為“GET”,將該請(qǐng)求方法所請(qǐng)求的信息URL(具體是“/root, html”)和Host頭域值“d. wikimedia. org”輸出到網(wǎng)絡(luò)服務(wù)器中的策略匹配模塊,其中,“/ root, html”和“d. wikimedia. org”為該網(wǎng)絡(luò)消息中攜帶的關(guān)心數(shù)據(jù),該策略匹配模塊匹配出數(shù)據(jù)流所使用的既定策略,將既定策略輸出到網(wǎng)絡(luò)服務(wù)器中的策略執(zhí)行模塊,以便網(wǎng)絡(luò)服務(wù)器中的策略執(zhí)行模塊對(duì)數(shù)據(jù)流執(zhí)行該既定策略,比如計(jì)費(fèi)策略等?,F(xiàn)有技術(shù)的缺點(diǎn)是由于各種協(xié)議格式不同,處理時(shí)提取的關(guān)心數(shù)據(jù)也不同,需要對(duì)每種協(xié)議都進(jìn)行預(yù)先分析和處理,而對(duì)于網(wǎng)絡(luò)服務(wù)器接收的服務(wù)器和客戶端間傳遞的網(wǎng)絡(luò)消息有多種協(xié)議進(jìn)行切換的情況,比如,利用HTTP協(xié)議作為實(shí)時(shí)流傳輸協(xié)議(Real Time Streaming Protocol, RTSP)的管道(Tunnel),一段時(shí)間后RTSP協(xié)議的網(wǎng)絡(luò)消息又切換為實(shí)時(shí)傳送協(xié)議(Real-time Transport Protocol,RTP)協(xié)議的網(wǎng)絡(luò)消息,現(xiàn)有技術(shù)需要針對(duì)上述情況重新設(shè)置實(shí)現(xiàn)的邏輯,需要修改軟硬件來(lái)支持上述協(xié)議切換,無(wú)法做到無(wú)損升級(jí),即不需要中斷業(yè)務(wù)即可實(shí)現(xiàn)升級(jí),影響網(wǎng)絡(luò)服務(wù)器的可靠運(yùn)行。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)消息解析方法及通信設(shè)備,由于采用的是配置文件, 所以在對(duì)下一個(gè)消息的處理方式有變化時(shí),只需要修改應(yīng)用協(xié)議對(duì)應(yīng)的區(qū)段描述信息,不需要重新設(shè)置實(shí)現(xiàn)的邏輯,從而實(shí)現(xiàn)無(wú)損升級(jí)。有鑒于此,本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)消息解析方法,包括接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段;識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議;從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方法,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。一種通信設(shè)備,其包括通信模塊,用于接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段;識(shí)別模塊,用于識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議;解析模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方法,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。一種解析系統(tǒng),包括編譯引擎和處理引擎,所述編譯引擎,用于將配置文件編譯成所述處理引擎能識(shí)別的協(xié)議解析輔助數(shù)據(jù);其中,不同的應(yīng)用協(xié)議類型對(duì)應(yīng)不同的配置文件;所述處理引擎,用于接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段;識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議;從所述第一應(yīng)用協(xié)議對(duì)應(yīng)的協(xié)議解析輔助數(shù)據(jù)中一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方法,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。本發(fā)明實(shí)施例利用區(qū)段描述信息,獲取該區(qū)段描述信息所描述的當(dāng)前區(qū)段中的關(guān)心數(shù)據(jù),并依據(jù)關(guān)心數(shù)據(jù)執(zhí)行該區(qū)段描述信息中的決策方法,決策出下一個(gè)消息的處理方式,這樣,如果對(duì)下一個(gè)消息的處理方式有變化,則可以通過(guò)修改區(qū)段描述信息中所描述的決策方法來(lái)實(shí)現(xiàn),不需要重新設(shè)置實(shí)現(xiàn)的邏輯,從而能夠做到無(wú)損升級(jí),且靈活性也得以提
尚ο
為了更清楚地說(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ù)這些附圖獲得其他的附圖。圖Ia是本發(fā)明實(shí)施例提供的協(xié)議承載示意圖Ib是本發(fā)明實(shí)施例提供的協(xié)議切換示意圖Ic是本發(fā)明實(shí)施例提供的應(yīng)用層協(xié)議示意圖Id是本發(fā)明實(shí)施例提供的配置文件的結(jié)構(gòu)示意圖2是本發(fā)明實(shí)施例提供的區(qū)段劃分示意圖3是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)消息所采用的區(qū)段分布示意圖4是本發(fā)明一實(shí)施例提供的網(wǎng)絡(luò)消息解析方法流程圖5是本發(fā)明另一實(shí)施例提供的網(wǎng)絡(luò)消息解析方法流程圖6是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)消息結(jié)構(gòu)圖7是本發(fā)明實(shí)施例提供的區(qū)段中快速掃描示意圖8是本發(fā)明實(shí)施例提供的快速掃描方法流程圖9是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)消息處理流程圖IOa是本發(fā)明實(shí)施例提供的一種通信設(shè)備結(jié)構(gòu)圖IOb是本發(fā)明實(shí)施例提供的另一種通信設(shè)備結(jié)構(gòu)圖11是本發(fā)明實(shí)施例提供的通信設(shè)備中掃描子模塊的結(jié)構(gòu)圖12是本發(fā)明實(shí)施例提供的解析系統(tǒng)結(jié)構(gòu)圖13是本發(fā)明實(shí)施例提供的解析系統(tǒng)中編譯引擎和處理引擎的結(jié)構(gòu)圖
圖14是本發(fā)明實(shí)施例提供的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施例方式為了方便理解,首先對(duì)本發(fā)明實(shí)施例涉及的一些概念做如下介紹如圖Ia所示,協(xié)議承載是指第一應(yīng)用層的消息中承載第二應(yīng)用層的消息,所述第二應(yīng)用層的消息是所述第一應(yīng)用層消息的消息體,且所述第一應(yīng)用層是所述第二應(yīng)用層的上一應(yīng)用層。具體的,網(wǎng)絡(luò)數(shù)據(jù)的協(xié)議棧是層級(jí)關(guān)系,下一應(yīng)用層消息是由上一應(yīng)用層消息來(lái)封裝攜帶的,例如網(wǎng)絡(luò)數(shù)據(jù)首先出現(xiàn)的是協(xié)議A消息的頭部,然后是協(xié)議A消息的消息體,該消息體是協(xié)議B消息,該協(xié)議B消息內(nèi)部同樣分為頭部和消息體,協(xié)議B的消息體是協(xié)議C消息。這樣協(xié)議A消息承載協(xié)議B消息,協(xié)議B消息承載協(xié)議C消息。如圖Ib所示,協(xié)議切換是數(shù)據(jù)流中采用同一應(yīng)用層中不同應(yīng)用協(xié)議的網(wǎng)絡(luò)消息間的協(xié)議切換,換言之,協(xié)議切換涉及的消息是同一應(yīng)用層的消息;比如,在同一條數(shù)據(jù)流中,首先出現(xiàn)的協(xié)議A消息,該協(xié)議A消息起到一定作用,例如作為隧道、協(xié)商能力等。協(xié)議A消息完全處理完畢后,切換為協(xié)議B消息,然后切換為協(xié)議C消息,然后切換為協(xié)議D消息,其中,協(xié)議A與協(xié)議B與協(xié)議C與協(xié)議D是同一應(yīng)用層中的不同應(yīng)用協(xié)議,比如,HTTP協(xié)議切換成RTSP協(xié)議,然后再切換成RTP協(xié)議。如圖Ic所示,本發(fā)明實(shí)施例中的應(yīng)用層協(xié)議的是指TCP/IP層次中的應(yīng)用層協(xié)議,TCP/IP層次中的應(yīng)用層協(xié)議包括三個(gè)層次,分別相當(dāng)于開(kāi)放式系統(tǒng)互聯(lián)(Open System Interconnect, 0SI)模型的會(huì)話層、表示層和應(yīng)用層。本發(fā)明實(shí)施例中,預(yù)先配置了各應(yīng)用協(xié)議對(duì)應(yīng)的配置文件,不同應(yīng)用協(xié)議對(duì)應(yīng)的配置文件結(jié)構(gòu)是基本相同的,在配置文件中,設(shè)計(jì)人員按照協(xié)議結(jié)構(gòu)及解析詳細(xì)程度需求將一定協(xié)議格式的網(wǎng)絡(luò)消息描述或劃分成為一個(gè)或多個(gè)區(qū)段,并對(duì)每個(gè)區(qū)段的特點(diǎn)和處理方法進(jìn)行描述,應(yīng)當(dāng)理解的是,有些協(xié)議的網(wǎng)絡(luò)消息是無(wú)法劃分的,比如二進(jìn)制協(xié)議,如域名系統(tǒng)(Domain Name System, DNS),沒(méi)有明顯的分隔符,那么這類協(xié)議就只能使用一個(gè)區(qū)段來(lái)表示。但是當(dāng)前網(wǎng)絡(luò)上大部分網(wǎng)絡(luò)流量采用的協(xié)議都是可以劃分的。為了使本發(fā)明實(shí)施例提供的技術(shù)方案更加清楚明白,如下對(duì)配置文件進(jìn)行介紹每個(gè)應(yīng)用協(xié)議對(duì)應(yīng)的配置文件包括一個(gè)或多個(gè)區(qū)段描述信息,其中區(qū)段描述信息用于描述區(qū)段的特點(diǎn)和處理方法,區(qū)段描述信息的最小信息集合是區(qū)段名稱、區(qū)段類型; 如果配置文件中包括多個(gè)區(qū)段描述信息,應(yīng)當(dāng)理解的是,有的區(qū)段描述信息可以包括區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息和決策方法,有的區(qū)段描述信息可能僅僅包括區(qū)段名稱、區(qū)段類型,有的區(qū)段描述信息可能包括區(qū)段名稱、區(qū)段類型、下一個(gè)區(qū)段信息;有的區(qū)段描述信息可能包括區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息、決策方法和分割符(數(shù)據(jù)分割符、區(qū)段分隔符中的一項(xiàng)或多項(xiàng));需要說(shuō)明的是,本發(fā)明實(shí)施例側(cè)重于介紹當(dāng)應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中至少包括一個(gè)或多個(gè)區(qū)段描述信息,而其中至少有一個(gè)區(qū)段描述信息包括區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息和決策方法時(shí),如何解析出網(wǎng)絡(luò)消息中的關(guān)心數(shù)據(jù)。請(qǐng)參見(jiàn)圖ld,為本發(fā)明實(shí)施例的配置文件的一種結(jié)構(gòu)示意圖,如圖Id所示,應(yīng)用協(xié)議對(duì)應(yīng)的配置文件包括1.對(duì)應(yīng)協(xié)議的協(xié)議全局配置信息,如協(xié)議名稱、是否大小寫敏感等等,實(shí)際應(yīng)用中,是否大小寫敏感可有可無(wú)。2.描述每個(gè)為此協(xié)議劃分的區(qū)段,區(qū)段中包含區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息和決策方法,區(qū)段類型表示該區(qū)段的掃描方式,例如快速掃描方式、正則表達(dá)式匹配方式、按一定長(zhǎng)度直接跳轉(zhuǎn)方式等等。3.每個(gè)區(qū)段中需要描述本區(qū)段的關(guān)心數(shù)據(jù)指示信息,以便解析時(shí)利用該關(guān)心數(shù)據(jù)指示信息獲得相應(yīng)的關(guān)心數(shù)據(jù),并將該關(guān)心數(shù)據(jù)輸出到策略匹配模塊做既定策略的匹配, 或者將該關(guān)心數(shù)據(jù)作為決策的依據(jù)。4.每個(gè)區(qū)段可以描述決策條件、決策方法、決策結(jié)果。其中,決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);如果未提供,則表示不需要決策直接跳轉(zhuǎn)到下一個(gè)區(qū)段。如果當(dāng)前已經(jīng)是最后一個(gè)區(qū)段,或者決策結(jié)果是不需要進(jìn)一步處理,本區(qū)段掃描結(jié)束后整個(gè)協(xié)議數(shù)據(jù)處理完畢。應(yīng)當(dāng)理解的是,在一種實(shí)現(xiàn)方式下,不同應(yīng)用協(xié)議對(duì)應(yīng)的配置文件可以存儲(chǔ)在計(jì)算機(jī)媒質(zhì)中,其內(nèi)容可以在系統(tǒng)啟動(dòng)時(shí)或正常運(yùn)行時(shí)重新進(jìn)行加載,編譯成計(jì)算機(jī)可以直接讀取的協(xié)議解析輔助數(shù)據(jù)(如結(jié)構(gòu)體、鏈表、數(shù)組等等),保存到計(jì)算機(jī)內(nèi)存中供協(xié)議解析處理時(shí)讀取。配置文件的格式可以采用任何能描述以上信息的格式,例如XML等等。本發(fā)明實(shí)施例中引入“區(qū)段”的概念,圖2示意出了某個(gè)應(yīng)用協(xié)議的網(wǎng)絡(luò)消息的區(qū)段劃分示意圖,其中,幾個(gè)矩形框表示區(qū)段,帶有各種底紋的矩形表示不同的關(guān)心數(shù)據(jù)。從圖2可以看出,區(qū)段1的關(guān)心數(shù)據(jù)比較詳細(xì),具體到每個(gè)字符可能都是需要的,其中,區(qū)段1 通常為某個(gè)應(yīng)用協(xié)議的首行,比如HTTP協(xié)議的首行,具體為“GET www. abc. com HTTP/1. 1”, 則關(guān)心數(shù)據(jù)包括請(qǐng)求的方法“GET”、URL "www. abc. com"以及版本號(hào)“1. 1”。因此,對(duì)于該首行可以采用正則表達(dá)式掃描方法。從圖2可以看出,區(qū)段2中的關(guān)心數(shù)據(jù)比較少,其中, 區(qū)段2通常為某個(gè)應(yīng)用協(xié)議的消息的頭域部分(也稱為頭域區(qū)段),圖中示出了其僅包含兩個(gè)關(guān)心數(shù)據(jù),其余的數(shù)據(jù)都是可以忽略的,該區(qū)段可以采用快速掃描方式,后續(xù)實(shí)施例將對(duì)快速掃描方式進(jìn)行詳細(xì)介紹;從圖2可以看出,區(qū)段3沒(méi)有關(guān)心數(shù)據(jù),其中,區(qū)段3通常為網(wǎng)絡(luò)消息的消息體,不包括任何關(guān)心數(shù)據(jù),不需要解析,可以整體跳過(guò)。基于前述某個(gè)應(yīng)用協(xié)議的網(wǎng)絡(luò)消息的區(qū)段劃分方式,確定該應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的區(qū)段描述信息,其包括區(qū)段描述信息一,區(qū)段描述信息二和區(qū)段描述信息三,其中,區(qū)段描述信息一所描述的區(qū)段為網(wǎng)絡(luò)消息的首行,區(qū)段描述信息二所描述的區(qū)段為網(wǎng)絡(luò)消息的頭域部分,區(qū)段描述信息三所描述的區(qū)段為網(wǎng)絡(luò)消息的消息體。其中其中,區(qū)段描述信息一包括區(qū)段名稱、區(qū)段類型和關(guān)心數(shù)據(jù)指示信息,該區(qū)段類型表示該區(qū)段采用正則表達(dá)式掃描方式,該區(qū)段描述信息一還可以包括區(qū)段分割符,該區(qū)段分割符用于網(wǎng)絡(luò)服務(wù)器從網(wǎng)絡(luò)消息中分割出首行,比如,該區(qū)段分隔符可以為“ \r\n”;其中,區(qū)段描述信息二包括區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息和決策方法, 該區(qū)段類型表示該區(qū)段采用快速掃描方式,該區(qū)段描述信息二還可以包括數(shù)據(jù)分割符和區(qū)段分割符。其中,數(shù)據(jù)分割符是用于分割頭域部分中的數(shù)據(jù)的,區(qū)段分割符用于網(wǎng)絡(luò)服務(wù)器從網(wǎng)絡(luò)消息中分割出頭域部分,其中,該區(qū)段分割符可以是“\r\n\r\n”。其中,區(qū)段描述信息三包括區(qū)段名稱和區(qū)段類型,該區(qū)段類型表示該區(qū)段采用的掃描方式為跳過(guò)預(yù)定長(zhǎng)度的字符,該預(yù)定長(zhǎng)度為網(wǎng)絡(luò)消息的消息體的長(zhǎng)度。其中,區(qū)段描述信息一中的區(qū)段分割符與區(qū)段描述信息二中的區(qū)段分割符可以相同,也可以不同,不影響本發(fā)明的實(shí)現(xiàn)。其中,上述區(qū)段描述信息一,區(qū)段描述信息二和區(qū)段描述信息三所描述的網(wǎng)絡(luò)消息為第一設(shè)備向第二設(shè)備發(fā)送的網(wǎng)絡(luò)消息;可選的,該應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的區(qū)段描述信息還可以包括區(qū)段描述信息四、區(qū)段描述信息五和區(qū)段描述信息六等,此時(shí),該區(qū)段描述信息四、區(qū)段描述信息五和區(qū)段描述信息六所描述的網(wǎng)絡(luò)消息為第二設(shè)備向第一設(shè)備發(fā)送的網(wǎng)絡(luò)消息,其中,區(qū)段描述信息四的定義與區(qū)段描述信息一的相似,區(qū)段描述信息五的定義與區(qū)段描述信息二的相似,區(qū)段描述信息六的定義與區(qū)段描述信息三的相似,在此不再贅述。其中,區(qū)段描述信息一中的關(guān)心數(shù)據(jù)指示信息可以包括統(tǒng)一資源定位符 (Uniform/Universal Resource Locator, URL)禾口版本號(hào)指示信息等;其中,區(qū)段描述信息二中的關(guān)心數(shù)據(jù)指示信息可以包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息、用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息、以及用于指示下一個(gè)區(qū)段的編解碼信息的第三指示信息中至少一個(gè)。
需要說(shuō)明的是,區(qū)段描述信息一也可以有決策方法,也可以沒(méi)有決策方法,不影響本發(fā)明的實(shí)現(xiàn)。其中,區(qū)段描述信息二中的決策方法表示依據(jù)不同的決策條件執(zhí)行不同的原子方法,所述原子方法包括如下的一項(xiàng)或多項(xiàng)1.設(shè)置下一個(gè)區(qū)段明確下一個(gè)區(qū)段是什么,例如會(huì)話初始協(xié)議(Session Initiation Protocol, SIP)消息首行區(qū)段后是SIP請(qǐng)求頭域區(qū)段,或者是SIP響應(yīng)頭域區(qū)段,如果是SIP請(qǐng)求區(qū)段,則該區(qū)段按照請(qǐng)求區(qū)段處理,如果是SIP響應(yīng)區(qū)段,則該區(qū)段按照響應(yīng)區(qū)段處理。2.當(dāng)下一個(gè)區(qū)段是直接跳過(guò)特定長(zhǎng)度的類型時(shí),設(shè)置下一個(gè)區(qū)段為直接跳過(guò)特定長(zhǎng)度的區(qū)段,其中,特定長(zhǎng)度是該原子方法所需要的參數(shù),例如實(shí)時(shí)流傳輸協(xié)議(Real Time Streaming Protocol, RTSP)消息的Content-Length頭域指明其消息體部分的長(zhǎng)度。確定一個(gè)完整的消息結(jié)束相當(dāng)于是完成一個(gè)完整的協(xié)議處理循環(huán),其實(shí)質(zhì)動(dòng)作是設(shè)置下一個(gè)區(qū)段是當(dāng)前協(xié)議類型的第一個(gè)區(qū)段,重新循環(huán)。例如一個(gè)HTTP消息處理完之后,在同一條流繼續(xù)發(fā)送另外一個(gè)HTTP消息。3.更改下一個(gè)消息的協(xié)議類型(具體可以理解成更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型)當(dāng)前數(shù)據(jù)流的協(xié)議類型發(fā)生變化,需要切換到另外一種類型的協(xié)議,下一個(gè)消息就是采用變化后的協(xié)議。例如,RTSP消息體區(qū)段結(jié)束后,下一個(gè)消息為RTP協(xié)議的消息。4.設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法表明要在下一個(gè)區(qū)段中提取信息之前,需要對(duì)其實(shí)施某種解碼算法以獲得真正的信息。例如,一些簡(jiǎn)單郵件傳輸協(xié)議 (Simple Mail Transfer Protocol, SMTP)消息體是經(jīng)過(guò)base64編碼的,在處理之前需要進(jìn)行解碼。再如,一些HTTP協(xié)議的消息體是經(jīng)過(guò)gzip壓縮處理的,在處理之前需要進(jìn)行解壓縮。其中,原子方法還可以帶有參數(shù)的,所述參數(shù)用于傳遞決策的一些結(jié)果供執(zhí)行原子方法使用。其中,區(qū)段與區(qū)段是有一定順序關(guān)系的,但是區(qū)段之后卻不一定是固定區(qū)段,也不一定是當(dāng)前協(xié)議格式的數(shù)據(jù),可以切換成另外一種協(xié)議。甚至是在處理完數(shù)條消息后才進(jìn)行協(xié)議切換,前后協(xié)議并不是承載關(guān)系。如圖3所示,網(wǎng)絡(luò)消息出現(xiàn)的順序是從上至下,在一種情況下,網(wǎng)絡(luò)服務(wù)器接收的服務(wù)器和客戶端間傳遞的網(wǎng)絡(luò)消息都是應(yīng)用協(xié)議A的網(wǎng)絡(luò)消息,應(yīng)用協(xié)議A的網(wǎng)絡(luò)消息包括多個(gè)區(qū)段;在另一種情況下,網(wǎng)絡(luò)服務(wù)器接收的服務(wù)器和客戶端間傳遞的網(wǎng)絡(luò)消息有多種協(xié)議進(jìn)行切換的情況,如由協(xié)議A切換成協(xié)議B ;在當(dāng)前區(qū)段處理結(jié)束,下一個(gè)區(qū)段即將開(kāi)始之前,需要進(jìn)行決策,以確定下一個(gè)區(qū)段是什么,舉例說(shuō)明,如圖3所示,其中,區(qū)段1 和區(qū)段2分別采用協(xié)議A的區(qū)段描述信息一和區(qū)段描述信息二,網(wǎng)絡(luò)服務(wù)器根據(jù)區(qū)段描述信息二中的決策方法進(jìn)行決策,在一種情況下,該網(wǎng)絡(luò)消息存在下一個(gè)區(qū)段,決策結(jié)果表示下一個(gè)區(qū)段是協(xié)議A的網(wǎng)絡(luò)消息的下一個(gè)區(qū)段(例如,SIP消息的頭域區(qū)段后是消息體區(qū)段),該網(wǎng)絡(luò)消息的區(qū)段3可以繼續(xù)采用協(xié)議A的區(qū)段描述信息三;在另一種情況下,該網(wǎng)絡(luò)消息不存在下一個(gè)區(qū)段,決策結(jié)果表示下一個(gè)網(wǎng)絡(luò)消息是協(xié)議B的網(wǎng)絡(luò)消息,相應(yīng)的,也分為多個(gè)區(qū)段,如協(xié)議B的區(qū)段1和協(xié)議B的區(qū)段2等,此時(shí)協(xié)議B與協(xié)議A的關(guān)系為協(xié)議切換,即將協(xié)議A切換為協(xié)議B,相應(yīng)的,協(xié)議B的區(qū)段1和區(qū)段2分別采用協(xié)議B的區(qū)段描述信息一和區(qū)段描述信息二。參閱圖4,本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)消息解析方法,該方法包括Al、接收網(wǎng)絡(luò)消息,其中網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段。在不同實(shí)現(xiàn)方式下,區(qū)段與區(qū)段之間可以是以分隔符或者給定的偏移長(zhǎng)度分割。其中,本發(fā)明實(shí)施例各步驟的執(zhí)行主體可以是網(wǎng)絡(luò)服務(wù)器。所述網(wǎng)絡(luò)服務(wù)器位于與第一設(shè)備和第二設(shè)備通信連接,所接收的網(wǎng)絡(luò)消息為第一設(shè)備向第二設(shè)備發(fā)送的上行網(wǎng)絡(luò)消息,或者第二設(shè)備向第一設(shè)備發(fā)送的下行網(wǎng)絡(luò)消息,即所接收的網(wǎng)絡(luò)消息為第一設(shè)備與第二設(shè)備之間傳輸?shù)木W(wǎng)絡(luò)消息。其中,第一設(shè)備可以為客戶端,第二設(shè)備為服務(wù)器。A2、識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議。A3、從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)。其中,該第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息可以為上述區(qū)段描述信息二,該當(dāng)前區(qū)段可以為網(wǎng)絡(luò)消息的頭域部分。需要說(shuō)明的是,當(dāng)所述第一應(yīng)用協(xié)議為基于行的文本類協(xié)議(如HTTP、RTSP),所述關(guān)心數(shù)據(jù)指示信息為頭域名稱,相應(yīng)的,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為位于對(duì)應(yīng)頭域名稱后面的頭域值,或者,對(duì)應(yīng)頭域名稱本身所表示的關(guān)心數(shù)據(jù);當(dāng)所述第一應(yīng)用協(xié)議為非文本類協(xié)議(如DNS、RTP),所述關(guān)心數(shù)據(jù)指示信息為屬性名稱,相應(yīng)的,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為屬性值;當(dāng)所述第一應(yīng)用協(xié)議為標(biāo)簽類協(xié)議(如XML、HTML),所述關(guān)心數(shù)據(jù)指示信息為標(biāo)簽名稱,相應(yīng)的,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為標(biāo)簽值。在本發(fā)明實(shí)施例的后文中,以所述第一應(yīng)用協(xié)議為基于行的文本類協(xié)議具體舉例說(shuō)明。A4、以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方法,得到對(duì)應(yīng)的決策結(jié)果。需要說(shuō)明的是,在實(shí)際應(yīng)用中,所獲取的關(guān)心數(shù)據(jù)可以是一個(gè)或多個(gè),例如,獲取的關(guān)心數(shù)據(jù)可以是5-10個(gè),其中作為決策條件的可以是2-4個(gè)。應(yīng)當(dāng)理解的是,所獲取的關(guān)心數(shù)據(jù)可以分成如下三種情況第一種情況所獲取的關(guān)心數(shù)據(jù)中的一部分輸出給外部應(yīng)用使用,而所獲取的關(guān)心數(shù)據(jù)中的另一部分作為決策條件;第二種情況所獲取的關(guān)心數(shù)據(jù)既作為決策條件,又輸出給外部應(yīng)用使用;第三種情況所獲取的關(guān)心數(shù)據(jù)作為決策條件。其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層, 相應(yīng)的,所執(zhí)行的原子方法可以為更改當(dāng)前數(shù)據(jù)流的協(xié)議類型,即下一個(gè)消息采用與當(dāng)前網(wǎng)絡(luò)消息不同的協(xié)議類型。當(dāng)所述當(dāng)前區(qū)段不是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果表示所述當(dāng)前區(qū)段的下一個(gè)區(qū)段的處理方式,相應(yīng)的,所執(zhí)行的原子方法包括設(shè)置下一個(gè)區(qū)段、設(shè)置下一個(gè)區(qū)段的協(xié)議類型、設(shè)置下一個(gè)區(qū)段的長(zhǎng)度和設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法中的一項(xiàng)或任意組合。其中,所述決策方法用于描述依據(jù)不同的決策條件執(zhí)行不同的原子方法;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);所述決策結(jié)果包括如下原子方法中的一個(gè)或多個(gè), 以及所述原子方法被執(zhí)行時(shí)所需要的參數(shù);所執(zhí)行的原子方法包括設(shè)置下一個(gè)區(qū)段、更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型、設(shè)置下一個(gè)區(qū)段的協(xié)議類型和設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法中的一項(xiàng)或任意組合。在一種實(shí)現(xiàn)方式下,所述決策方法用于描述依據(jù)不同的決策條件執(zhí)行不同的原子方法;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);其中,當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息和用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息和所述長(zhǎng)度信息,則,以所述協(xié)議類型信息和所述長(zhǎng)度信息作為決策條件,且所述長(zhǎng)度信息表示當(dāng)前區(qū)段為最后一個(gè)區(qū)段,對(duì)應(yīng)的決策結(jié)果包括更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型的原子方法,其中,所述下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所表示的協(xié)議類型;或者,當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息,則,以所述協(xié)議類型信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型的原子方法,其中,所述下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所表示的協(xié)議類型。在另一種實(shí)現(xiàn)方式下,所述決策方法用于描述依據(jù)不同的決策條件執(zhí)行不同的原子方法;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息,則以所述協(xié)議類型信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括設(shè)置下一個(gè)區(qū)段的協(xié)議類型的原子方法,其中,所述下一個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所指示的協(xié)議類型。在又一種實(shí)現(xiàn)方式下,所述決策方法用于描述依據(jù)不同的決策條件執(zhí)行不同的原子方法;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述長(zhǎng)度信息,則以所述長(zhǎng)度信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括設(shè)置下一個(gè)區(qū)段為直接跳過(guò)預(yù)定長(zhǎng)度的區(qū)段的原子方法,其中所述預(yù)定長(zhǎng)度為所述長(zhǎng)度信息所指示的長(zhǎng)度在再一種實(shí)現(xiàn)方式下,所述決策方法用于描述依據(jù)不同的決策條件執(zhí)行不同的原子方法;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的編解碼信息的第三指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述編解碼信息,則以所述編解碼信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法的原子方法,其中,所述下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法為所述編解碼信息表示的解碼算法。可見(jiàn),本發(fā)明實(shí)施例利用區(qū)段描述信息,獲取該區(qū)段描述信息所描述的區(qū)段中的關(guān)心數(shù)據(jù),并依據(jù)關(guān)心數(shù)據(jù)執(zhí)行該區(qū)段描述信息中的決策方法,決策出下一個(gè)區(qū)段或者下一個(gè)網(wǎng)絡(luò)消息的處理方式,這樣,如果網(wǎng)絡(luò)消息解析的方法有變化,則可以通過(guò)修改區(qū)段描述信息中所描述的關(guān)心數(shù)據(jù)指示信息和/或決策方法來(lái)實(shí)現(xiàn);如果需要增加新的應(yīng)用協(xié)議解析能力時(shí),則只需要增加新的應(yīng)用協(xié)議的配置文件,不需要重新設(shè)置實(shí)現(xiàn)的軟硬件邏輯, 能夠做到無(wú)損升級(jí)。為了使本發(fā)明提供的上述技術(shù)方案更加清楚明白,如下以網(wǎng)絡(luò)服務(wù)器為應(yīng)用服務(wù)網(wǎng)關(guān)為例描述網(wǎng)絡(luò)消息解析方法,參閱圖4,如下對(duì)本發(fā)明實(shí)施例提供的上述技術(shù)方案進(jìn)行詳細(xì)介紹Bi、應(yīng)用服務(wù)網(wǎng)關(guān)加載并編譯配置文件。其中,應(yīng)用服務(wù)網(wǎng)關(guān)編譯配置文件,生成計(jì)算機(jī)直接讀取的協(xié)議解析輔助數(shù)據(jù)并保存。B2、應(yīng)用服務(wù)網(wǎng)關(guān)接收網(wǎng)絡(luò)消息。其中,該步驟中接收的網(wǎng)絡(luò)消息可以是服務(wù)器發(fā)往客戶端的網(wǎng)絡(luò)消息,也可以是客戶端發(fā)往服務(wù)器的網(wǎng)絡(luò)消息。B3、應(yīng)用服務(wù)網(wǎng)關(guān)識(shí)別該網(wǎng)絡(luò)消息所屬的應(yīng)用協(xié)議,假定為第一應(yīng)用協(xié)議。具體的,可以采用現(xiàn)有技術(shù)中的協(xié)議識(shí)別方法識(shí)別該網(wǎng)絡(luò)消息所屬的應(yīng)用協(xié)議, 比如,可以采用傳輸控制協(xié)議(Transmission Control Protocol, TCP)/用戶數(shù)據(jù)包協(xié)議 (User Data Protocol, UDP)端口識(shí)別方法,或者,特征字識(shí)別方法,或者,協(xié)議行為識(shí)別方法等。B4、應(yīng)用服務(wù)網(wǎng)關(guān)利用該第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中區(qū)段描述信息一,掃描該網(wǎng)絡(luò)消息,從該網(wǎng)絡(luò)消息中獲取區(qū)段描述信息一中關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)。其中,區(qū)段描述信息一為首行對(duì)應(yīng)的區(qū)段描述信息,區(qū)段描述信息一包括區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息和區(qū)段分割符,其中,區(qū)段類型表示該區(qū)段采用的掃描方式為正則表達(dá)式掃描方式。該步驟的具體實(shí)現(xiàn)方式是應(yīng)用服務(wù)網(wǎng)關(guān)采用正則表達(dá)式掃描方式,從網(wǎng)絡(luò)消息中掃描關(guān)心數(shù)據(jù)指示信息,直到掃描到區(qū)段分割符為止,其中,該區(qū)段分割符所分割出的區(qū)段為應(yīng)用協(xié)議的首行。其中,該區(qū)段描述信息一還可以包括下一個(gè)區(qū)段信息,比如下一個(gè)區(qū)段的名稱,在本實(shí)施例中假定是區(qū)段描述信息二的名稱。該實(shí)施例中區(qū)段描述信息一中沒(méi)有決策方法,這樣,應(yīng)用服務(wù)網(wǎng)關(guān)在掃描該網(wǎng)絡(luò)消息的首行結(jié)束后,根據(jù)區(qū)段描述信息一中的下一個(gè)區(qū)段的名稱,采用區(qū)段描述信息二來(lái)處理該網(wǎng)絡(luò)消息頭域部分中的數(shù)據(jù)。B5、應(yīng)用服務(wù)網(wǎng)關(guān)利用該第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中區(qū)段描述信息二,繼續(xù)掃描該網(wǎng)絡(luò)消息,從該網(wǎng)絡(luò)消息中區(qū)段描述信息二所描述的區(qū)段中獲取區(qū)段描述信息二中關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)。其中,區(qū)段描述信息二為頭域部分對(duì)應(yīng)的區(qū)段描述信息,區(qū)段描述信息二包括區(qū)段名稱、區(qū)段類型、關(guān)心數(shù)據(jù)指示信息、決策方法、數(shù)據(jù)分割符和區(qū)段分割符。其中,該區(qū)段類型所表示的掃描方式為快速掃描方式,關(guān)心數(shù)據(jù)指示信息為頭域,該步驟的具體實(shí)現(xiàn)方式是應(yīng)用服務(wù)網(wǎng)關(guān)采用快速掃描方式,從網(wǎng)絡(luò)消息中繼續(xù)掃描區(qū)段描述信息二中的關(guān)心數(shù)據(jù)指示信息,直到掃描到區(qū)段分割符為止,其中,該區(qū)段分割符所分割出的區(qū)段即為區(qū)段描述信息二所描述的區(qū)段,具體是該網(wǎng)絡(luò)消息的頭域部分。其中,快速掃描方式請(qǐng)參見(jiàn)后續(xù)實(shí)施例的詳細(xì)介紹。B6、應(yīng)用服務(wù)網(wǎng)關(guān)以步驟B5所獲得的關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行區(qū)段描述信息二中的決策方法,得到?jīng)Q策結(jié)果。如果在該網(wǎng)絡(luò)消息的頭域部分中未掃描到用于指示協(xié)議類型信息的第一指示信息,但掃描到用于指示長(zhǎng)度信息的第二指示信息時(shí),則決策出對(duì)應(yīng)的決策結(jié)果,該決策結(jié)果包括設(shè)置“下一個(gè)區(qū)段為直接跳過(guò)特定長(zhǎng)度的區(qū)段”的原子方法,其中,特定長(zhǎng)度為該長(zhǎng)度信息所指示的長(zhǎng)度。此時(shí)下一個(gè)區(qū)段所使用的區(qū)段描述信息可以是上述區(qū)段描述信息三。 其中,第一指示信息可以為Content-Type,第二指示信息可以為Content-Length。需要說(shuō)明的,該段中決定執(zhí)行哪些原子方法時(shí)也可以不以是否掃描到第一指示信息為依據(jù),即僅僅以是否掃描到第二指示信息為依據(jù),換言之,有的實(shí)現(xiàn)方式中利用第二指示信息就可以做決策。一種實(shí)施方式中,如果在該網(wǎng)絡(luò)消息的頭域部分中掃描到第一指示信息,且該網(wǎng)絡(luò)消息中區(qū)段描述信息二所描述的區(qū)段(則該頭域部分)為該網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段, 決策出對(duì)應(yīng)的決策結(jié)果,該決策結(jié)果包括更改當(dāng)前數(shù)據(jù)流的協(xié)議類型為所述第一指示信息所指示的協(xié)議類型的原子方法,比如當(dāng)前網(wǎng)絡(luò)消息為HTTP類型,下一個(gè)網(wǎng)絡(luò)消息為第一指示信息所指示的協(xié)議類型,即第二應(yīng)用協(xié)議,比如RTSP類型,此時(shí)兩個(gè)協(xié)議的關(guān)系為協(xié)議切換,具體的協(xié)議切換的定義和相關(guān)描述請(qǐng)參考前述描述,在此不再贅述。具體的,如果在網(wǎng)絡(luò)消息的頭域部分沒(méi)有掃描到第二指示信息,則可以表示該頭域部分為該網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段。又一種實(shí)施方式中,如果在該網(wǎng)絡(luò)消息的頭域部分中掃描到第一指示信息,且該網(wǎng)絡(luò)消息中區(qū)段描述信息二所描述的區(qū)段不是該網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段,決策出對(duì)應(yīng)的決策結(jié)果,該決策結(jié)果包括設(shè)置下一個(gè)區(qū)段的協(xié)議類型為第一指示信息所指示的協(xié)議類型的原子方法,比如第二應(yīng)用協(xié)議,此時(shí),下一個(gè)區(qū)段為當(dāng)前網(wǎng)絡(luò)消息的消息體,此時(shí)該網(wǎng)絡(luò)消息所屬的第一應(yīng)用協(xié)議與消息體所采用的第二應(yīng)用協(xié)議為承載關(guān)系,具體的協(xié)議承載的定義和相關(guān)描述請(qǐng)參考前述描述,在此不再贅述。需要說(shuō)明的是,對(duì)于上述第二種情況,后續(xù)對(duì)該網(wǎng)絡(luò)消息中消息體的操作完成后, 還需要重新利用第一應(yīng)用協(xié)議的配置文件繼續(xù)處理下一個(gè)網(wǎng)絡(luò)消息。如果該網(wǎng)絡(luò)消息的頭域部分中掃描到用于指示編解碼信息的第三指示信息,決策出對(duì)應(yīng)的決策結(jié)果,該決策結(jié)果包括設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法的原子方法,比如,第三指示信息指示的編解碼類型可以為base64,則在下一個(gè)區(qū)段開(kāi)始執(zhí)行操作前需要先對(duì)下一個(gè)區(qū)段進(jìn)行解碼。其中,對(duì)于簡(jiǎn)單郵件傳輸協(xié)議(Simple Mail Transfer Protocol, SMTP),網(wǎng)絡(luò)消息的消息體可以使用該編解碼類型對(duì)應(yīng)的解碼算法對(duì)下一個(gè)區(qū)段進(jìn)行解碼。B7、應(yīng)用服務(wù)網(wǎng)關(guān)利用上述各步驟所獲取的關(guān)心數(shù)據(jù),獲取既定策略。該既定策略是用于對(duì)客戶端與服務(wù)器間傳輸?shù)木W(wǎng)絡(luò)消息進(jìn)行處理的策略,其可以是阻斷、計(jì)費(fèi)等策略??梢?jiàn),本發(fā)明實(shí)施例利用區(qū)段描述信息,獲取該區(qū)段描述信息所描述的區(qū)段中的關(guān)心數(shù)據(jù),并依據(jù)關(guān)心數(shù)據(jù)執(zhí)行該區(qū)段描述信息中的決策方法,決策出下一個(gè)區(qū)段的處理方式,這樣,在網(wǎng)絡(luò)消息解析的方法有變化時(shí),則可以通過(guò)修改區(qū)段描述信息中所描述的關(guān)心數(shù)據(jù)指示信息和/或決策方法來(lái)實(shí)現(xiàn),比如,關(guān)心數(shù)據(jù)有變化,則需要修改關(guān)心數(shù)據(jù)指示信息,再如,對(duì)下一個(gè)區(qū)段或者下一個(gè)網(wǎng)絡(luò)消息的處理方式有變化時(shí),則需要修改決策方法;在需要增加新的應(yīng)用協(xié)議解析能力時(shí),則只需要增加新的應(yīng)用協(xié)議的配置文件,不需要重新設(shè)置實(shí)現(xiàn)的邏輯,能夠做到無(wú)損升級(jí)。請(qǐng)參閱圖6,如下舉實(shí)例對(duì)本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)消息解析方法進(jìn)行詳細(xì)描述圖6示出了客戶端與服務(wù)器之間傳輸?shù)木W(wǎng)絡(luò)消息其中,粗線條的矩形框表示一個(gè)網(wǎng)絡(luò)消息,細(xì)線條的矩形區(qū)域表示一個(gè)區(qū)段,如區(qū)段100到區(qū)段109,如圖6所示,HTTP協(xié)議消息、RTSP協(xié)議消息可以包括首行區(qū)段、頭域部分區(qū)段和消息體部分區(qū)段,例如區(qū)段100 對(duì)應(yīng)是首行區(qū)段;區(qū)段101對(duì)應(yīng)頭域部分區(qū)段;應(yīng)當(dāng)理解的是,在實(shí)際應(yīng)用中,有的消息可以是沒(méi)有消息體部分區(qū)段,例如區(qū)段101之后就沒(méi)有消息體,緊接著響應(yīng)消息首行。其中, 加粗字體為關(guān)心數(shù)據(jù)指示信息,比如Content-type,Content-length和RTPHnfo。加粗字體并帶有下劃線的為關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù),比如Content-type所指示的關(guān)心數(shù)據(jù)“application/sdp”,Content-length所指示的關(guān)心數(shù)據(jù)“1903”等。換言之,本發(fā)明實(shí)施例中的關(guān)心數(shù)據(jù)指示信息可以是Content-Type頭域(在區(qū)段103、105以加粗字體示意)、Content-Length頭域(在區(qū)段105以加粗字體示意)、RTP4nfo頭域(在區(qū)段108 以加粗字體示意),相應(yīng)的,關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)本身就是Content-Type 頭域的頭域值、Content-Length頭域的頭域值、RTPHnfo頭域的頭域值,其中,HTTP協(xié)議網(wǎng)絡(luò)消息和RTSP協(xié)議網(wǎng)絡(luò)消息中首行的區(qū)段分隔符為“\r\ri”,如圖6中的HTTP協(xié)議網(wǎng)絡(luò)消息的區(qū)段100、區(qū)段102,以及RTSP協(xié)議網(wǎng)絡(luò)消息的區(qū)段104 ;HTTP協(xié)議網(wǎng)絡(luò)消息頭域部分的區(qū)段分割符為“\r\n\r\n”,數(shù)據(jù)分割符為“\r\ri”,如圖6中的HTTP協(xié)議網(wǎng)絡(luò)消息的區(qū)段 101。區(qū)段109是RTP格式的數(shù)據(jù),其具體可以是視頻數(shù)據(jù)。其中,一種方式中,一個(gè)區(qū)段結(jié)束之后或下一個(gè)區(qū)段開(kāi)始之前需要決策,在另一種方式中,一些區(qū)段結(jié)束之后已經(jīng)明確下一區(qū)段,是不需要決策的,比如,在該區(qū)段描述信息中已有下一個(gè)區(qū)段的名稱,這樣默認(rèn)為當(dāng)前區(qū)段結(jié)束之后就執(zhí)行下一個(gè)區(qū)段。例如區(qū)段100 之后一定是區(qū)段101,本例中區(qū)段101之后是需要決策的,本例中區(qū)段101之后消息就結(jié)束了。如下示出了解析圖6所示網(wǎng)絡(luò)消息所利用的配置文件〈ProtocolName- ΤΤΡ" > <!--對(duì)應(yīng) 100-->
〈Section name=,,HTTP—FIRST—LINE—REQUEST,,isFirst="true" type="PCREX" next—section="HTTP—REQ—HEADER"〉—
〈正則表達(dá)式>Λ[Α-Ζ]+ ([Λ \t])( Fset(url, {-1})) HTTP/l.l\r\n〈正則表達(dá)式〉<!--HTTP請(qǐng)求首行的正則表達(dá)式-->
<Output>url</Output> <!-輸出提取的URL,對(duì)應(yīng)201-->
</Section>
<!-對(duì)應(yīng) 102-->
〈Section name=,,HTTP—FIRST—LINE—RESPONSE,,isFirst="true" type="PCREX" next_section="HTTP_RSP_HEADER"> —
<PCREX>AHTTP/1.1 \d{3} [a-zA-Z]+\r\n</PCREX> <!- HTTP響應(yīng)首行的正則表達(dá)式-->
〈/Section〉 <!-對(duì)應(yīng) 101-->
〈Section name="HTTP—REQ—HEADER" type="fastscan" section_delimiter="\r\n\r\n" data—delimiter="\r\n">
〈Interesting char="U"> <!--關(guān)心數(shù)據(jù)指示信息包括字符串"User-Agent,,的開(kāi)始字
符->
<Refine-Match>User-Agent</Refine-Match> <!--用于精確匹配User-Agent --> 〈/Interesting〉 〈Interesting char="C"><Refine-Match>Content-Length:</Refme-Match>
<!--如果遇到Content-Length,將Content-Length的值保存到變量 content—length —>
〈SetlntValue Name="content—length"/〉
〈/Interesting〉
〈Decision〉<!--決策方法,在101結(jié)束后執(zhí)行->
<Condition>content_length</Condition>
<!--如果content-length不為0,那么執(zhí)行set_next_section,
參數(shù)是LEN_TRACKING, contentjength -->
<Rule action= "set_next_section" parameter=" LEN—TRACKING, content—length" >non_zero</Rule>
<!--如果content-length為0,那么執(zhí)行end_of_message原子方法,當(dāng)前消息解
析結(jié)束->
〈Rule action="end—of—message"〉z(mì)ero</Rule> 〈/Decision〉 </Section>
<!--對(duì)應(yīng) 103-->
〈Section name="HTTP_RSP_HEADER" type="fastscan" section—delimiter= "\r\n\r\n" data_delimiter="\r\n">
〈Interesting char="C"> <!--關(guān)心數(shù)據(jù)指示信息包括字符串"Content-Type"的開(kāi)始字符->
<Refine-Match>Content-Type:</Refine-Match> <!--用于精確匹配 Content-Type -->
<!--如果Content-Type的頭i或值為,,application/x-rtsp-tunnelled,則設(shè)置 is_rtsp_tunnel變量為 true -->
<SetFlag flag= “is_rtsp_tunnel" value="true">application/x-rtsp-tunnelled</SetFlag>
〈/Interesting〉
〈Interesting char="C"> <!--關(guān)心數(shù)據(jù)指示信息包括字符串"Content-Length,,的開(kāi)始字符->
<Refine-Match>Content-Length:</Refine-Match> <!-用于精確匹配 Content-Length —>
<SetIntValue Name="content—length"/〉
〈/Interesting〉
〈Decision〉<!--決策方法,在103結(jié)束后執(zhí)行-->
<Condkion>is—rtsp—tunnel,content—length</Condition>
<!— : 口果is_rtsp_tunnel為true,且content-length為0, JSll執(zhí)行change_protocol 原子方法,其秦?cái)?shù)足"RTSP,,,表示協(xié)議切換成RTSP->~
<Rule action= “change_protocol" parameter="RTSP">true, zero</Rule>
<!--如果is_rtsp_tunnel為false,且content-length不為0,則執(zhí)行 set_next_sectio「原子-方法,其參數(shù)是"LEN_TRACKING,,和"content_lei^th,,, 表示設(shè) 下一個(gè)區(qū)段為L(zhǎng)EN_TRACKING區(qū) 史,區(qū)段長(zhǎng)度為content—length變量保
存的數(shù)值-->
<Rule action= "set_next_section" parameter="LEN_TRACKING, content—length ">false, non zero </Rule>
〈/Decision〉
〈/Section〉
<!--直接跳轉(zhuǎn)區(qū)段,名字為L(zhǎng)EN_TRACKING-->
〈Section name="LEN_TRACKING" type="skip」ength"/> 〈/Protocol〉
<!--RTSP協(xié)議配置—> 〈Protocol Name="RTSP" > <!--對(duì)應(yīng) 104-->
〈Section name=’,RTSP_FIRST LINE" isFirst="true" type="PCREX" next_section=""RTSP_HEADER"">
<PCREX>ARTSP/(\d\.\d)( Fset(rtsp_ver, {-1}))) \d{3} [a-zA-Z]+\r\n</PCREX> <!--RTSP響應(yīng)首行的正則▲達(dá)犮->
<Output>rtsp ver</Output> <!--輸出提取的RTSP版本號(hào),對(duì)應(yīng) 104 -->
權(quán)利要求
1.一種網(wǎng)絡(luò)消息解析方法,其特征在于,包括接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段; 識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議;從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方式,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述關(guān)心數(shù)據(jù)指示信息為頭域名稱,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為位于對(duì)應(yīng)頭域后面的頭域值;或者,所述關(guān)心數(shù)據(jù)指示信息為頭域名稱,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為對(duì)應(yīng)頭域名稱本身所表示的關(guān)心數(shù)據(jù);或者,所述關(guān)心數(shù)據(jù)指示信息為屬性名稱,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為屬性值;或者,所述關(guān)心數(shù)據(jù)指示信息為標(biāo)簽名稱,所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)為標(biāo)簽值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);所述決策結(jié)果包括如下原子動(dòng)作中的一個(gè)或多個(gè),以及所述原子動(dòng)作被執(zhí)行時(shí)所需要的參數(shù);所執(zhí)行的原子動(dòng)作包括設(shè)置下一個(gè)區(qū)段、更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型、設(shè)置下一個(gè)區(qū)段的協(xié)議類型和設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法中的一項(xiàng)或任意組合。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);其中,當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息和用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息和所述長(zhǎng)度信息,貝U,以所述協(xié)議類型信息和所述長(zhǎng)度信息作為決策條件,且所述長(zhǎng)度信息表示當(dāng)前區(qū)段為最后一個(gè)區(qū)段,對(duì)應(yīng)的決策結(jié)果包括更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型的原子動(dòng)作,其中,所述下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所表示的協(xié)議類型;或者,當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息,貝U,以所述協(xié)議類型信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型的原子動(dòng)作,其中,所述下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所表示的協(xié)議類型。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述當(dāng)前區(qū)段不是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果表示所述當(dāng)前區(qū)段的下一個(gè)區(qū)段的處理方式。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息,則以所述協(xié)議類型信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括設(shè)置下一個(gè)區(qū)段的協(xié)議類型的原子動(dòng)作,其中,所述下一個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所指示的協(xié)議類型。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述長(zhǎng)度信息,則以所述長(zhǎng)度信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括設(shè)置下一個(gè)區(qū)段為直接跳過(guò)預(yù)定長(zhǎng)度的區(qū)段的原子動(dòng)作,其中,所述預(yù)定長(zhǎng)度為所述長(zhǎng)度信息所指示的長(zhǎng)度。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);當(dāng)所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的編解碼信息的第三指示信息, 所獲取的關(guān)心數(shù)據(jù)包括所述編解碼信息,則以所述編解碼信息作為決策條件,對(duì)應(yīng)的決策結(jié)果包括設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法的原子動(dòng)作,其中,所述下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法為所述編解碼信息表示的解碼算法。
9.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的方法,其特征在于,所述區(qū)段描述信息包括區(qū)段名稱,區(qū)段類型,所述關(guān)心數(shù)據(jù)指示信息和所述決策方式,所述區(qū)段類型表示所述當(dāng)前區(qū)段所使用的掃描方式;所述從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取第一區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù),包括以所述區(qū)段類型表示的掃描方式,從所述區(qū)段名稱對(duì)應(yīng)的所述當(dāng)前區(qū)段中掃描到所述關(guān)心數(shù)據(jù)指示信息,獲取所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述區(qū)段類型表示快速掃描方式;所述以所述區(qū)段類型表示的掃描方式,從所述區(qū)段名稱對(duì)應(yīng)的所述當(dāng)前區(qū)段中掃描到所述關(guān)心數(shù)據(jù)指示信息包括從所述區(qū)段名稱對(duì)應(yīng)的當(dāng)前區(qū)段的第一個(gè)字符開(kāi)始,跳轉(zhuǎn)特定長(zhǎng)度的字符; 當(dāng)跳轉(zhuǎn)到的字符是數(shù)據(jù)分割符時(shí),判斷位于所述跳轉(zhuǎn)到的字符后面、且與所述跳轉(zhuǎn)到的字符最近的η個(gè)非數(shù)據(jù)分隔符的字符是否是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符,如果是,根據(jù)所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符,在所述當(dāng)前區(qū)段匹配到所述關(guān)心數(shù)據(jù)指示信息,其中,η大于或者等于1 ;當(dāng)跳轉(zhuǎn)到的字符是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符中的字符時(shí),判斷位于所述跳轉(zhuǎn)到的字符前面、且與所述跳轉(zhuǎn)到的字符最近的非關(guān)心數(shù)據(jù)指示信息中的字符是否是數(shù)據(jù)分割符,如果是,利用所述跳轉(zhuǎn)到的字符,在所述當(dāng)前區(qū)段中匹配到所述關(guān)心數(shù)據(jù)指示信肩、ο
11.一種通信設(shè)備,其特征在于,包括通信模塊,用于接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段; 識(shí)別模塊,用于識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議; 解析模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方式,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。
12.根據(jù)權(quán)利要求11所述的通信設(shè)備,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù); 所述解析模塊包括解析子模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);其中,所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息和用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息和所述長(zhǎng)度信息;決策子模塊,用于以所述協(xié)議類型信息和所述長(zhǎng)度信息作為決策條件,且所述長(zhǎng)度信息表示當(dāng)前區(qū)段為最后一個(gè)區(qū)段,決策出對(duì)應(yīng)的決策結(jié)果,所述決策結(jié)果包括更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型的原子動(dòng)作,其中,所述下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所表示的協(xié)議類型; 或者,所述解析模塊包括解析子模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);其中,所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息,決策子模塊,用于以所述協(xié)議類型信息作為決策條件,決策出對(duì)應(yīng)的決策結(jié)果,所述決策結(jié)果包括更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型的原子動(dòng)作,其中,所述下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所表示的協(xié)議類型。
13.根據(jù)權(quán)利要求11所述的通信設(shè)備,其特征在于,所述解析模塊,還用于當(dāng)所述當(dāng)前區(qū)段不是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果表示所述當(dāng)前區(qū)段的下一個(gè)區(qū)段的處理方式。
14.根據(jù)權(quán)利要求13所述的通信設(shè)備,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù); 所述解析模塊包括解析子模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);其中,所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的協(xié)議類型信息的第一指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述協(xié)議類型信息;決策子模塊,用于以所述協(xié)議類型信息作為決策條件,決策出對(duì)應(yīng)的決策結(jié)果,所述決策結(jié)果包括設(shè)置下一個(gè)區(qū)段的協(xié)議類型的原子動(dòng)作,其中,所述下一個(gè)區(qū)段的協(xié)議類型為所述協(xié)議類型信息所指示的協(xié)議類型。
15.根據(jù)權(quán)利要求13所述的通信設(shè)備,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù); 所述解析模塊包括解析子模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);其中,所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的長(zhǎng)度信息的第二指示信息, 所獲取的關(guān)心數(shù)據(jù)包括所述長(zhǎng)度信息;決策子模塊,用于以所述長(zhǎng)度信息作為決策條件,決策出對(duì)應(yīng)的決策結(jié)果,所述決策結(jié)果包括設(shè)置下一個(gè)區(qū)段為直接跳過(guò)預(yù)定長(zhǎng)度的區(qū)段的原子動(dòng)作,其中所述預(yù)定長(zhǎng)度為所述長(zhǎng)度信息所指示的長(zhǎng)度。
16.根據(jù)權(quán)利要求13所述的通信設(shè)備,其特征在于,所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù); 所述解析模塊包括解析子模塊,用于從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);其中,所述關(guān)心數(shù)據(jù)指示信息包括用于指示下一個(gè)區(qū)段的編解碼信息的第三指示信息,所獲取的關(guān)心數(shù)據(jù)包括所述編解碼信息;決策子模塊,用于以所述編解碼信息作為決策條件,決策出對(duì)應(yīng)的決策結(jié)果,所述決策結(jié)果包括設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法的原子動(dòng)作,其中,所述下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法為所述編解碼信息表示的解碼算法。
17.根據(jù)權(quán)利要求11所述的通信設(shè)備,其特征在于,所述第一區(qū)段描述信息包括區(qū)段名稱,區(qū)段類型,所述關(guān)心數(shù)據(jù)指示信息和所述決策方式,所述區(qū)段類型表示所述當(dāng)前區(qū)段所使用的掃描方式; 所述解析模塊,包括掃描子模塊,用于以所述區(qū)段類型表示的掃描方式,從所述區(qū)段名稱對(duì)應(yīng)的所述當(dāng)前區(qū)段中掃描到所述關(guān)心數(shù)據(jù)指示信息;獲取子模塊,用于獲取所掃描到的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù); 決策子模塊,用于利用所述全部或部分關(guān)心數(shù)據(jù),執(zhí)行所述第一區(qū)段描述信息中的決策方式,得到對(duì)應(yīng)的決策結(jié)果。
18.根據(jù)權(quán)利要求17所述的通信設(shè)備,其特征在于, 所述掃描子模塊包括快速掃描子模塊,用于從所述區(qū)段名稱對(duì)應(yīng)的當(dāng)前區(qū)段的第一個(gè)字符開(kāi)始,跳轉(zhuǎn)特定長(zhǎng)度的字符,當(dāng)跳轉(zhuǎn)到的字符是數(shù)據(jù)分割符時(shí),判斷位于所述跳轉(zhuǎn)到的字符后面、且與所述跳轉(zhuǎn)到的字符最近的η個(gè)非數(shù)據(jù)分隔符的字符是否是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符;其中,η大于或者等于1 ;當(dāng)跳轉(zhuǎn)到的字符是所述關(guān)心數(shù)據(jù)指示信息中的字符時(shí),判斷位于所述跳轉(zhuǎn)到的字符前面、且與所述跳轉(zhuǎn)到的字符最近的非關(guān)心數(shù)據(jù)指示信息中的字符是否是數(shù)據(jù)分割符;精確匹配子模塊,用于在判斷位于所述跳轉(zhuǎn)到的字符后面、且與所述跳轉(zhuǎn)到的字符最近的η個(gè)非數(shù)據(jù)分隔符的字符是否是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符的判斷結(jié)果為是時(shí),根據(jù)所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符,在所述當(dāng)前區(qū)段中匹配到所述關(guān)心數(shù)據(jù)指示信息;在判斷位于所述跳轉(zhuǎn)到的字符前面、且與所述跳轉(zhuǎn)到的字符最近的非關(guān)心數(shù)據(jù)指示信息中的字符是否是數(shù)據(jù)分割符的判斷結(jié)果為是時(shí),利用所述跳轉(zhuǎn)到的字符,在所述當(dāng)前區(qū)段中匹配到所述關(guān)心數(shù)據(jù)指示信息。
19.根據(jù)權(quán)利要求11至18任一項(xiàng)所述的通信設(shè)備,其特征在于, 所述通信設(shè)備還包括策略匹配模塊和策略執(zhí)行模塊;策略匹配模塊,用于利用所述關(guān)心數(shù)據(jù),確定所述網(wǎng)絡(luò)消息所適用的既定策略; 策略執(zhí)行模塊,用于利用所述既定策略,對(duì)所述網(wǎng)絡(luò)消息所在的數(shù)據(jù)流進(jìn)行操作。
20.一種解析系統(tǒng),其特征在于,包括編譯引擎和處理引擎,所述編譯引擎,用于將配置文件編譯成所述處理引擎能識(shí)別的協(xié)議解析輔助數(shù)據(jù);其中,不同的應(yīng)用協(xié)議類型對(duì)應(yīng)不同的配置文件;所述處理引擎,用于接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段;識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議;從所述第一應(yīng)用協(xié)議對(duì)應(yīng)的協(xié)議解析輔助數(shù)據(jù)中一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方式,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其特征在于, 所述應(yīng)用協(xié)議對(duì)應(yīng)的配置文件包括一個(gè)或多個(gè)區(qū)段描述信息,所述區(qū)段描述信息包括區(qū)段名稱,區(qū)段類型,關(guān)心數(shù)據(jù)指示信息和決策方式,其中,所述區(qū)段類型表示區(qū)段所使用的掃描方式;所述決策方式用于描述依據(jù)不同的決策條件執(zhí)行不同的原子動(dòng)作;所述決策條件包括一個(gè)或者多個(gè)關(guān)心數(shù)據(jù);所述決策結(jié)果包括如下原子動(dòng)作中的一個(gè)或多個(gè),以及所述原子動(dòng)作被執(zhí)行時(shí)所需要的參數(shù);所執(zhí)行的原子動(dòng)作包括設(shè)置下一個(gè)區(qū)段、更改下一個(gè)消息的首個(gè)區(qū)段的協(xié)議類型、設(shè)置下一個(gè)區(qū)段的協(xié)議類型和設(shè)置下一個(gè)區(qū)段開(kāi)始前需要進(jìn)行的解碼算法中的一項(xiàng)或任意組合。
22.根據(jù)權(quán)利要求20或21所述的系統(tǒng),其特征在于,還包括內(nèi)存管理器,用于管理所述編譯引擎和所述處理引擎使用的內(nèi)存,所述編譯引擎和處理引擎使用不同的內(nèi)存區(qū)域或者相同的內(nèi)存區(qū)域。
23.根據(jù)權(quán)利要求20或21所述的系統(tǒng),其特征在于,還包括加載器,用于從內(nèi)部?jī)?chǔ)存設(shè)備或外部?jī)?chǔ)存設(shè)備中讀取所述配置文件并加載到所述編譯引擎。
24.根據(jù)權(quán)利要求20或21所述的系統(tǒng),其特征在于, 所述編譯引擎包括快速掃描編譯器,用于將配置文件中描述的各區(qū)段中的關(guān)心數(shù)據(jù)指示信息編譯成機(jī)器能讀取的協(xié)議解析輔助數(shù)據(jù),并輸出快速掃描表;所述快速掃描表包括所述關(guān)心數(shù)據(jù)指示信息的前η個(gè)字符和區(qū)段中的數(shù)據(jù)分割符對(duì)應(yīng)的協(xié)議解析輔助數(shù)據(jù);精確匹配編譯器,用于將多模匹配算法編譯成機(jī)器能讀取的協(xié)議解析輔助數(shù)據(jù); 邏輯決策編譯器,用于將配置文件中的決策方式編譯成機(jī)器能讀取的協(xié)議解析輔助數(shù)據(jù)。
25.根據(jù)權(quán)利要求M所述的系統(tǒng),其特征在于, 所述處理引擎包括快速掃描模塊,用于從所述區(qū)段名稱對(duì)應(yīng)的當(dāng)前區(qū)段的第一個(gè)字符開(kāi)始,跳轉(zhuǎn)特定長(zhǎng)度的字符,根據(jù)所述快速掃描表,判斷跳轉(zhuǎn)到的字符是數(shù)據(jù)分割符還是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符中的字符,當(dāng)跳轉(zhuǎn)到的字符是數(shù)據(jù)分割符時(shí),判斷位于所述跳轉(zhuǎn)到的字符后面、且與所述跳轉(zhuǎn)到的字符最近的η個(gè)非數(shù)據(jù)分隔符的字符是否是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符;當(dāng)跳轉(zhuǎn)到的字符是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符中的字符時(shí),判斷位于所述跳轉(zhuǎn)到的字符前面、且與所述跳轉(zhuǎn)到的字符最近的非關(guān)心數(shù)據(jù)指示信息中的字符是否是數(shù)據(jù)分割符;其中,η大于或者等于1 ;精確匹配模塊,用于在判斷位于所述跳轉(zhuǎn)到的字符后面、且與所述跳轉(zhuǎn)到的字符最近的η個(gè)非數(shù)據(jù)分隔符的字符是否是所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符的判斷結(jié)果為是時(shí),根據(jù)所述關(guān)心數(shù)據(jù)指示信息中的前η個(gè)字符,執(zhí)行所述協(xié)議解析輔助數(shù)據(jù)中所編譯成的多模匹配算法,以在所述當(dāng)前區(qū)段中匹配到所述關(guān)心數(shù)據(jù)指示信息;在判斷位于所述跳轉(zhuǎn)到的字符前面、且與所述跳轉(zhuǎn)到的字符最近的非關(guān)心數(shù)據(jù)指示信息中的字符是否是數(shù)據(jù)分割符的判斷結(jié)果為是時(shí),利用所述跳轉(zhuǎn)到的字符,執(zhí)行所述協(xié)議解析輔助數(shù)據(jù)中所編譯成的多模匹配算法,以在所述當(dāng)前區(qū)段中匹配到所述關(guān)心數(shù)據(jù)指示信息;決策器,用于根據(jù)匹配到的關(guān)心數(shù)據(jù)指示信息,獲取所述關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù),利用所述全部或部分關(guān)心數(shù)據(jù),執(zhí)行所述協(xié)議解析輔助數(shù)據(jù)中的所編譯成的區(qū)段描述信息中的決策方式,得到?jīng)Q策結(jié)果。
26.根據(jù)權(quán)利要求20所述的系統(tǒng),其特征在于, 所述處理引擎還包括輸出模塊,用于將所獲取的關(guān)心數(shù)據(jù)輸出到外部。
全文摘要
本發(fā)明實(shí)施例提供網(wǎng)絡(luò)消息解析方法及通信設(shè)備,網(wǎng)絡(luò)消息解析方法包括接收網(wǎng)絡(luò)消息,所述網(wǎng)絡(luò)消息包括一個(gè)或多個(gè)區(qū)段;識(shí)別出所述網(wǎng)絡(luò)消息的應(yīng)用協(xié)議類型為第一應(yīng)用協(xié)議;從第一應(yīng)用協(xié)議對(duì)應(yīng)的配置文件中的一個(gè)區(qū)段描述信息所描述的所述網(wǎng)絡(luò)消息的當(dāng)前區(qū)段中,獲取所述區(qū)段描述信息中的關(guān)心數(shù)據(jù)指示信息所指示的關(guān)心數(shù)據(jù);以所獲取的全部或者部分關(guān)心數(shù)據(jù)作為決策條件,執(zhí)行所述區(qū)段描述信息中的決策方法,得到對(duì)應(yīng)的決策結(jié)果;其中,當(dāng)所述當(dāng)前區(qū)段是所述網(wǎng)絡(luò)消息的最后一個(gè)區(qū)段時(shí),所述決策結(jié)果包括所述網(wǎng)絡(luò)消息的下一個(gè)消息的處理方式,所述網(wǎng)絡(luò)消息與所述下一個(gè)消息屬于同一應(yīng)用層。使用本發(fā)明實(shí)施例提供的技術(shù)方案,能夠?qū)崿F(xiàn)無(wú)損升級(jí)。
文檔編號(hào)H04L29/06GK102413141SQ201110389258
公開(kāi)日2012年4月11日 申請(qǐng)日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者尤里.哈桑, 愛(ài)米特.克里斯托, 莫默, 黃毽 申請(qǐng)人:華為技術(shù)有限公司