两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

網(wǎng)絡(luò)協(xié)議解碼器和解碼方法

文檔序號(hào):7764300閱讀:653來(lái)源:國(guó)知局
專利名稱:網(wǎng)絡(luò)協(xié)議解碼器和解碼方法
技術(shù)領(lǐng)域
本發(fā)明總的涉及網(wǎng)絡(luò)協(xié)議解碼。本發(fā)明更具體地涉及一種網(wǎng)絡(luò)協(xié)議解碼器和解碼 方法。
背景技術(shù)
伴隨著web2. 0/3. 0、在線音視頻,點(diǎn)對(duì)點(diǎn)(P2P)文件共享,社交網(wǎng)站(SNS)等多種 網(wǎng)絡(luò)服務(wù)的出現(xiàn)和普及,網(wǎng)絡(luò)流量迅速膨脹。因此,各種網(wǎng)絡(luò)設(shè)備需要執(zhí)行繁重的網(wǎng)絡(luò)協(xié)議 解碼工作,這也給網(wǎng)絡(luò)設(shè)備的處理能力提出了新的挑戰(zhàn)。如何持續(xù)提升網(wǎng)絡(luò)設(shè)備的處理能 力成為了各廠商關(guān)注的熱點(diǎn)。一個(gè)典型的例子是網(wǎng)關(guān)級(jí)入侵檢測(cè)系統(tǒng)(IDS)/入侵防御系統(tǒng)(IPS)面臨的挑戰(zhàn)。 網(wǎng)絡(luò)流量的激增給IDS/IPS等網(wǎng)絡(luò)設(shè)備帶來(lái)了巨大的處理負(fù)載。IDS/IPS等網(wǎng)絡(luò)設(shè)備的核 心模塊——應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼模塊的性能在很大程度上決定了整個(gè)IDS/IPS產(chǎn)品的性 能。目前主流IDS/IPS的應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼模塊,只有在收到完整的應(yīng)用層數(shù)據(jù)包之后 才能進(jìn)行正確解碼。因此,傳統(tǒng)的應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼模塊之前需要一個(gè)數(shù)據(jù)整合模塊,用 來(lái)完成數(shù)據(jù)重組工作。圖1是示出傳統(tǒng)的網(wǎng)絡(luò)入侵檢測(cè)設(shè)備的示意圖。如圖1所示,來(lái)自外部網(wǎng)絡(luò)的數(shù) 據(jù)經(jīng)過(guò)底層(例如,TCP/IP層)處理,得到的數(shù)據(jù)分片經(jīng)過(guò)數(shù)據(jù)整合模塊,被整合為完整的 數(shù)據(jù)包。應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼模塊對(duì)完整的數(shù)據(jù)包解碼,并將解碼結(jié)果提供給其他模塊使 用。數(shù)據(jù)重組工作本身就是一個(gè)數(shù)據(jù)的緩存、拷貝的操作,大量的數(shù)據(jù)緩存、拷貝等冗余操 作將會(huì)降低系統(tǒng)性能。特別是在網(wǎng)絡(luò)流量巨大的情況下,這種頻繁的數(shù)據(jù)緩存拷貝操作對(duì) 性能的影響將是致命的。

發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是至少解決上面指出的問(wèn)題。根據(jù)本發(fā)明的一個(gè)方面,提供一種用于對(duì)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包解碼的方法。每 個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包包括多個(gè)數(shù)據(jù)分片組。所述方法包括a)提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的數(shù)據(jù)并且以所提取的數(shù)據(jù) 為輸入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;b)提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù)并且所提取的數(shù)據(jù) 為輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;c)依次對(duì)該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)上述步驟b),直至到 達(dá)結(jié)束狀態(tài)。應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的每個(gè)數(shù)據(jù)分片組可以分別對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定 的消息中的一部分。所述步驟a)和b)中的每一個(gè)可以分別包括d)提取數(shù)據(jù)分片組中的第一子組中的數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一子中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;e)提取該數(shù)據(jù)分片組中的下一子組中的數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn) 到下一子中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;f)依次對(duì)該數(shù)據(jù)分片組中的其余子組重復(fù)上述步驟e),直至到達(dá)子結(jié)束狀態(tài)。每個(gè)子組可以對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一個(gè)字符或一個(gè)字段。所述方法還可以包括如果所提取的數(shù)據(jù)不符合應(yīng)用層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息格 式,跳轉(zhuǎn)到異常狀態(tài)。所述方法還可以包括保存標(biāo)識(shí)各個(gè)中間狀態(tài)或子中間狀態(tài)的狀態(tài)號(hào)。所述應(yīng)用層網(wǎng)絡(luò)協(xié)議可以至少包括超文本傳輸協(xié)議HTTP、文件傳輸協(xié)議FTP、簡(jiǎn) 單文件傳輸協(xié)議TFTP、Telnet協(xié)議,簡(jiǎn)單郵件傳輸協(xié)議SMTP,P0P3協(xié)議和安全超文本傳輸 協(xié)議HTTPS以及應(yīng)用程序協(xié)議。所述方法可以在入侵檢測(cè)系統(tǒng)IDS/入侵防御系統(tǒng)IPS上執(zhí)行。各個(gè)中間狀態(tài)和結(jié)束狀態(tài)可以是根據(jù)所述應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息格式定義 的。根據(jù)本發(fā)明的另一方面,提供一種用于對(duì)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包解碼的解碼器。 每個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包包括多個(gè)數(shù)據(jù)分片組。所述解碼器包括解碼裝置;和跳轉(zhuǎn)裝置,其中,解碼裝置和跳轉(zhuǎn)裝置被配置為解碼裝置提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置 以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù),并且跳轉(zhuǎn)裝 置以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置和跳轉(zhuǎn)裝置依次對(duì)該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)上 述操作,直至到達(dá)結(jié)束狀態(tài)。應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的每個(gè)數(shù)據(jù)分片組可以分別對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定 的消息中的一部分。解碼裝置和跳轉(zhuǎn)裝置可以進(jìn)一步被配置為解碼裝置提取數(shù)據(jù)分片組中的第一子組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置以所提取的數(shù)據(jù) 為輸入,跳轉(zhuǎn)到第一子中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置提取該數(shù)據(jù)分片組中的下一子組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置以所提取的數(shù) 據(jù)為輸入,跳轉(zhuǎn)到下一子中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置和跳轉(zhuǎn)裝置依次對(duì)該數(shù)據(jù)分片組中的其余子組重復(fù)上述解碼和跳轉(zhuǎn)操 作,直至到達(dá)子結(jié)束狀態(tài)。每個(gè)子組可以對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一個(gè)字符或一個(gè)字段。跳轉(zhuǎn)裝置可以被配置為如果所提取的數(shù)據(jù)不符合應(yīng)用層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息 格式,跳轉(zhuǎn)到異常狀態(tài)。解碼器還可以包括存儲(chǔ)裝置,用于保存標(biāo)識(shí)各個(gè)中間狀態(tài)或子中間狀態(tài)的狀態(tài)號(hào)。所述應(yīng)用層網(wǎng)絡(luò)協(xié)議可以至少包括超文本傳輸協(xié)議HTTP、文件傳輸協(xié)議FTP、簡(jiǎn)單文件傳輸協(xié)議TFTP、Telnet協(xié)議,簡(jiǎn)單郵件傳輸協(xié)議SMTP,P0P3協(xié)議和安全超文本傳輸 協(xié)議HTTPS以及應(yīng)用程序協(xié)議。各個(gè)中間狀態(tài)和結(jié)束狀態(tài)可以是根據(jù)所述應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息格式定義 的。所述解碼器可以在入侵檢測(cè)系統(tǒng)IDS/入侵防御系統(tǒng)IPS上實(shí)現(xiàn)。根據(jù)本發(fā)明的再一個(gè)方面,提供一種入侵檢測(cè)系統(tǒng)/入侵防御系統(tǒng)設(shè)備,包括前 面提到的解碼器。


本發(fā)明以及其目的和優(yōu)點(diǎn)將通過(guò)下面參照附圖的描述得到更好地理解,在附圖 中圖1是示出傳統(tǒng)的網(wǎng)絡(luò)入侵檢測(cè)設(shè)備的示意圖;圖2是示出HTTP請(qǐng)求消息的頂層解碼狀態(tài)機(jī)的示意圖;圖3是示出HTTP請(qǐng)求消息的start-line部分的狀態(tài)機(jī)的示意圖;圖4是示出HTTP請(qǐng)求消息的message-header部分的狀態(tài)機(jī)的示意圖;圖5是示出HTTP請(qǐng)求消息的start-line部分中的Method的狀態(tài)機(jī)的示意圖;圖6是示出FTP命令消息狀態(tài)機(jī)的示意圖;圖7是示出FTP命令消息的method狀態(tài)機(jī)的示意圖;圖8是示出FTP命令消息的參數(shù)狀態(tài)機(jī)的示意圖;圖9是示出FTP應(yīng)答消息狀態(tài)機(jī)的示意圖;圖IOA和IOB是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的解碼方法的示意流程圖;圖11是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的解碼器的示意方框圖;以及圖12是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的網(wǎng)絡(luò)入侵檢測(cè)設(shè)備的示意圖。
具體實(shí)施例方式在詳細(xì)描述各實(shí)施例之前,應(yīng)當(dāng)理解的是,本發(fā)明不限于所描述的設(shè)備的特定組 成部件或者所描述的方法的處理步驟,因?yàn)檫@些設(shè)備和方法是可以改變的。還應(yīng)當(dāng)理解,這 里使用的術(shù)語(yǔ)僅僅是為了描述特定實(shí)施例的目的,而非意圖是限制性的。必須注意,在說(shuō)明 書和權(quán)利要求書中使用的單數(shù)形式“一個(gè)”、“另一”、“該”、“所述”可能也包含復(fù)數(shù)含義,除 非上下文清楚地另有所指。因此,例如術(shù)語(yǔ)“設(shè)備”可能指代一個(gè)或多個(gè)設(shè)備。除非另外定義,否則在此所使用的術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ))具有與本發(fā) 明所屬領(lǐng)域的普通技術(shù)人員所共同理解的相同意義。將進(jìn)一步理解,在此所使用的術(shù)語(yǔ)應(yīng) 解釋為具有與其在該說(shuō)明書的上下文以及有關(guān)領(lǐng)域中的意義一致的意義,并且將不以理想 化的或過(guò)于正式的意義來(lái)解釋,除非在此特意如此定義。以下參照示出根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和/或計(jì)算機(jī)程序產(chǎn)品的 框圖和/或流程圖描述本發(fā)明。應(yīng)理解,可以通過(guò)計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)框圖和/或流程 圖示圖的一個(gè)塊以及框圖和/或流程圖示圖的塊的組合??梢詫⑦@些計(jì)算機(jī)程序指令提供 給通用計(jì)算機(jī)、專用計(jì)算機(jī)的處理器和/或其它可編程數(shù)據(jù)處理裝置,以產(chǎn)生機(jī)器,使得經(jīng) 由計(jì)算機(jī)處理器和/或其它可編程數(shù)據(jù)處理裝置執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)框圖和/或流程圖塊中所指定的功能/動(dòng)作的方法。相應(yīng)地,還可以用硬件和/或軟件(包括固件、駐留軟件、微碼等)來(lái)實(shí)施本發(fā)明。 更進(jìn)一步地,本發(fā)明可以采取計(jì)算機(jī)可使用或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的 形式,其具有在介質(zhì)中實(shí)現(xiàn)的計(jì)算機(jī)可使用或計(jì)算機(jī)可讀程序代碼,以由指令執(zhí)行系統(tǒng)來(lái) 使用或結(jié)合指令執(zhí)行系統(tǒng)而使用。在本發(fā)明上下文中,計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可 以是任意介質(zhì),其可以包含、存儲(chǔ)、通信、傳輸、或傳送程序,以由指令執(zhí)行系統(tǒng)、裝置或設(shè)備 使用,或結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用。本發(fā)明設(shè)計(jì)了一種基于狀態(tài)機(jī)的應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼器(模塊)。解碼狀態(tài)機(jī)中 的狀態(tài)分為初始狀態(tài)、中間狀態(tài)、結(jié)束狀態(tài)和異常狀態(tài)。解碼器根據(jù)解碼狀態(tài)機(jī)當(dāng)前狀態(tài)的 狀態(tài)轉(zhuǎn)換函數(shù)和輸入的數(shù)據(jù),進(jìn)行狀態(tài)跳轉(zhuǎn)。解碼狀態(tài)機(jī)的起始狀態(tài)表示還沒(méi)有開(kāi)始進(jìn)行 解碼;解碼狀態(tài)機(jī)的輸入符號(hào)集是網(wǎng)絡(luò)中所有可能的字符的集合;解碼狀態(tài)機(jī)的狀態(tài)集合 以及對(duì)應(yīng)的狀態(tài)轉(zhuǎn)換函數(shù)由各個(gè)協(xié)議的消息格式所決定。當(dāng)狀態(tài)機(jī)從初始狀態(tài)經(jīng)中間狀 態(tài),跳轉(zhuǎn)到結(jié)束狀態(tài)時(shí),認(rèn)為一個(gè)完整的應(yīng)用層數(shù)據(jù)包解碼完畢;當(dāng)狀態(tài)機(jī)跳轉(zhuǎn)到異常狀態(tài) 時(shí),則認(rèn)為該數(shù)據(jù)包異常。下面以HTTP協(xié)議請(qǐng)求消息為例,說(shuō)明基于狀態(tài)機(jī)的網(wǎng)絡(luò)協(xié)議解碼器的操作方法。 為便于設(shè)計(jì),可以采用多級(jí)架構(gòu)、自頂而下的方法。圖2是HTTP請(qǐng)求消息的頂層解碼狀態(tài)機(jī)的設(shè)計(jì)。分析HTTP請(qǐng)求消息的格式, 由于HTTP請(qǐng)求消息分為三個(gè)部分start-line、message-header (以下簡(jiǎn)稱為header)、 和meSSage-b0dy(以下簡(jiǎn)稱為body),因此可以首先以這三個(gè)部分作為解碼狀態(tài)設(shè)計(jì)出 狀態(tài)機(jī)。如圖2所示,當(dāng)有數(shù)據(jù)分片到達(dá)時(shí),由初始狀態(tài)跳轉(zhuǎn)到start-line解碼狀態(tài),在 對(duì)start-line部分的解碼完成之后跳轉(zhuǎn)到header解碼狀態(tài),在對(duì)start-line部分的解 碼完成之后再根據(jù)是否存在body,選擇跳轉(zhuǎn)到body解碼狀態(tài)或者結(jié)束狀態(tài)。而其中的 start-line解碼、header解碼和body解碼3個(gè)狀態(tài)本身又分別是獨(dú)立的子狀態(tài)機(jī)。在設(shè)計(jì)好頂層的解碼狀態(tài)機(jī)之后,再根據(jù)start-line、header, body各自的消息 結(jié)構(gòu),進(jìn)行子狀態(tài)機(jī)的設(shè)計(jì)。其中start-line部分的消息格式為SP*Method SP+[schema/]/[host[port][ ? param]]SP+HTTP Λ d. \d[CR]LF其中SP表示ASCII字符表的空格符,SP*表示0個(gè)或多個(gè)空格符,“SP+”表示1個(gè) 或多個(gè)空格符;“Method”為HTTP協(xié)議規(guī)定的某些固定的字符串,如“GET”,“HEAD”,“POST” 等;schema表示協(xié)議名,host為網(wǎng)絡(luò)主機(jī)名,port為0 65536的數(shù)字,表示網(wǎng)絡(luò)端口, param表示參數(shù),其中用[]括起來(lái)的部分表示是可選的;\d表示任一個(gè)數(shù)字,HTTP Λ d. \d 表示的是該HTTP數(shù)據(jù)包遵循的HTTP協(xié)議版本號(hào),如HTTP/1. 1表示的是1. 1版本的HTTP 協(xié)議;CR表示的是ASCII字符表的回車鍵。具體消息格式的說(shuō)明請(qǐng)參閱RFC2616。下面結(jié)合圖3描述HTTP請(qǐng)求消息的start-1 ine部分的狀態(tài)機(jī)。如圖3所示, 該狀態(tài)機(jī)包括一個(gè)初始狀態(tài)和一個(gè)結(jié)束狀態(tài)。可對(duì)比start-line的消息格式。當(dāng)處于 初始狀態(tài)時(shí),如果輸入的是空格字符,則處于初始狀態(tài)不變,如果輸入的是字母字符,則跳 轉(zhuǎn)到Method狀態(tài);在Method狀態(tài)時(shí),如果輸入為一個(gè)空格字符,則跳轉(zhuǎn)到空格狀態(tài);在空 格狀態(tài)時(shí),如果輸入為字母字符,則跳轉(zhuǎn)到schema狀態(tài),如果輸入為一個(gè)’ /’字符,則狀態(tài) 跳轉(zhuǎn)到path狀態(tài)。如果經(jīng)過(guò)連續(xù)跳轉(zhuǎn),跳轉(zhuǎn)到了結(jié)束狀態(tài),則說(shuō)明對(duì)該HTTP請(qǐng)求消息的start-line部分解碼結(jié)束,接下來(lái)需要進(jìn)入header的解碼部分。相對(duì)于圖2中的狀態(tài),這 里start-line部分狀態(tài)機(jī)中的各個(gè)狀態(tài)可以稱為子狀態(tài)。在進(jìn)行狀態(tài)機(jī)跳轉(zhuǎn)的同時(shí),解碼的工作也同時(shí)完成。例如,在狀態(tài)機(jī)處于host狀 態(tài)時(shí)的所有輸入就組成了 HTTP請(qǐng)求消息的host字段,假設(shè)當(dāng)狀態(tài)機(jī)處于host狀態(tài)時(shí),先 后輸入了 “www. baidu. com" 13個(gè)字符,那么解碼得到的該HTTP請(qǐng)求的host字段就是字符 串誦.baidu. com。又假設(shè)當(dāng)狀態(tài)機(jī)處于port狀態(tài)時(shí),先后輸入了 “8080”四個(gè)字符,那么 解碼得到的該HTTP請(qǐng)求消息的端口就是8080。狀態(tài)機(jī)跳轉(zhuǎn)的過(guò)程實(shí)際上也是一個(gè)數(shù)據(jù)合規(guī)性檢查的過(guò)程。當(dāng)狀態(tài)機(jī)處于特定狀 態(tài)時(shí),只有特定的輸入數(shù)據(jù)才是合法的。例如,在schema狀態(tài)時(shí),只有輸入字符為‘/’才是 合規(guī)的,否則進(jìn)入異常狀態(tài)(未示出),表明進(jìn)入解碼器的數(shù)據(jù)包或者進(jìn)入解碼器的數(shù)據(jù)分 片所屬的數(shù)據(jù)包是不合規(guī)的,甚至可能是惡意攻擊包。還可以對(duì)輸入某一個(gè)狀態(tài)的數(shù)據(jù)長(zhǎng) 度進(jìn)行合規(guī)性檢查,比如一般情況下HTTP請(qǐng)求的中的host字段長(zhǎng)度不會(huì)過(guò)長(zhǎng),可以設(shè)定一 個(gè)閾值,當(dāng)host字段長(zhǎng)度——也就是當(dāng)狀態(tài)機(jī)處于host狀態(tài)時(shí)輸入的數(shù)據(jù)長(zhǎng)度超過(guò)該閾 值時(shí),認(rèn)為host字段長(zhǎng)度超長(zhǎng),則該HTTP請(qǐng)求很有可能包含了一個(gè)溢出攻擊。下面結(jié)合圖4描述HTTP請(qǐng)求消息的message-header部分的狀態(tài)機(jī)。 message-header是由0個(gè)或多個(gè)頭部域以及一個(gè)空行(CRLF之前沒(méi)有任何東西的行)組成 的,即(head[CR]LF)*[CR]LF每個(gè)頭部域(head)的格式為Field_name “ ” [Filed_value]其中FielcLname為每個(gè)頭部域的名稱;Filed_Value是對(duì)應(yīng)的頭部域的值,是可 選的。圖4中的狀態(tài)機(jī)從初始狀態(tài)開(kāi)始,經(jīng)過(guò)跳轉(zhuǎn)到結(jié)束狀態(tài),說(shuō)明對(duì)message-header部 分的解碼結(jié)束。其中的fname狀態(tài)表示對(duì)HTTP請(qǐng)求的頭部域的解碼。其他狀態(tài)的含義也 在相關(guān)的RFC2616中有相應(yīng)的規(guī)定,因此這里不再詳述。HTTP請(qǐng)求消息的message-body部分也可以根據(jù)具體的消息格式,涉及適合的狀 態(tài)機(jī)進(jìn)行解碼,這里不再詳述。另夕卜,還可以對(duì)圖3的狀態(tài)機(jī)進(jìn)行分級(jí),例如圖3中的Method狀態(tài),對(duì)于 start-1 ine狀態(tài)機(jī)而言是一個(gè)普通的狀態(tài),但Method狀態(tài)本身又是一個(gè)字符串狀態(tài)機(jī)。下面結(jié)合圖5描述HTTP請(qǐng)求消息的start-1 ine部分中的Method的狀態(tài)機(jī)。 根據(jù)RFC2616的定義,HTTP請(qǐng)求消息的Method是特定的字符串,可能的字符串包括 “ OPT IONS ”、“ GET ”、“ HEAD ”、“ POST ”、“ PUT ”、“ DELETE ”、“ TRACE ” 和 “ CONNECT ”。那么由上述 字符串可以設(shè)計(jì)如圖5所示的字符串狀態(tài)機(jī)。該狀態(tài)機(jī)的初始狀態(tài)為狀態(tài)0,可能的結(jié)束狀 態(tài)為狀態(tài)13,狀態(tài)15,狀態(tài)18,狀態(tài)20,狀態(tài)23,狀態(tài)四,狀態(tài)34,狀態(tài)41。當(dāng)start-line 狀態(tài)機(jī)由初始狀態(tài)跳轉(zhuǎn)到Method狀態(tài)時(shí),狀態(tài)切換到圖5的字符串狀態(tài)機(jī)的狀態(tài)0,當(dāng)該字 符串狀態(tài)機(jī)跳轉(zhuǎn)到結(jié)束狀態(tài)時(shí),start-line狀態(tài)機(jī)中的Method狀態(tài)結(jié)束,在接收到下一個(gè) 空格字符時(shí)即跳轉(zhuǎn)到圖3中的空格狀態(tài)。和start-line狀態(tài)機(jī)一樣,Method字符串狀態(tài) 機(jī)也有異常狀態(tài),如當(dāng)狀態(tài)機(jī)處于狀態(tài)1時(shí),只有字符‘P’是合法的輸入,其他所有的輸入 都將導(dǎo)致進(jìn)入異常狀態(tài),即表明進(jìn)入解碼器的數(shù)據(jù)包或者進(jìn)入解碼器的數(shù)據(jù)分片所屬的數(shù) 據(jù)包中包含不合法的Method字段。
因此,根據(jù)本發(fā)明的應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的解碼方案將一個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù) 據(jù)包劃分為多個(gè)數(shù)據(jù)分片組,利用狀態(tài)機(jī)依次進(jìn)行解碼。首先,提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包 的第一數(shù)據(jù)分片組中的數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)執(zhí)行 相應(yīng)的協(xié)議解碼。然后,提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù),并且以 所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼。依次對(duì)該應(yīng)用層網(wǎng) 絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)進(jìn)行提取、跳轉(zhuǎn)和解碼的操作,直至到達(dá)結(jié)束狀態(tài)。傳 統(tǒng)的網(wǎng)絡(luò)協(xié)議解碼方案直接對(duì)整個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包進(jìn)行解碼,而本發(fā)明的解碼方案 則利用狀態(tài)機(jī)對(duì)各個(gè)數(shù)據(jù)分片組分步解碼。因此,在實(shí)現(xiàn)上,可以將從低層模塊接收到的所 有數(shù)據(jù)不加整合地實(shí)時(shí)提供給解碼器,從而省去傳統(tǒng)的解碼方案中的數(shù)據(jù)整合模塊,簡(jiǎn)化 網(wǎng)絡(luò)入侵檢測(cè)設(shè)備的模塊設(shè)計(jì)。還可以進(jìn)一步將數(shù)據(jù)分片組劃分為子組,進(jìn)行分步解碼。例如,在上面提到的HTTP 請(qǐng)求消息的例子中,start-line、start-line、message-header 禾口 message-body 部分可以 分別作為三個(gè)數(shù)據(jù)分片組。在對(duì)start-line部分的解碼中,又可以將method字段作為其中 的一個(gè)子組進(jìn)行解碼。應(yīng)當(dāng)理解,這種劃分是可以根據(jù)實(shí)際需要而設(shè)計(jì)的。應(yīng)用層網(wǎng)絡(luò)協(xié) 議數(shù)據(jù)包的每個(gè)數(shù)據(jù)分片組可以對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一部分,每個(gè)子組 可以對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一個(gè)字符或一個(gè)字段。可以進(jìn)行更進(jìn)一步的劃 分,例如,可以將method字段的每個(gè)字符作為一個(gè)狀態(tài)的輸入,如圖5所示的那樣。當(dāng)然, 也可以將一整個(gè)字符串,例如‘OPTION’,作為圖4中method狀態(tài)的輸入,即,解碼器直接提 取輸入的整個(gè)‘OPTION’并跳轉(zhuǎn)到圖4中的空格狀態(tài),而不是像圖5中那樣逐個(gè)對(duì)‘OPTION’ 的每個(gè)字符進(jìn)行提取和跳轉(zhuǎn)。也就是說(shuō),可以根據(jù)需要而對(duì)劃分的精細(xì)度進(jìn)行設(shè)計(jì)。與圖 5的逐個(gè)字符進(jìn)行提取和跳轉(zhuǎn)的方案相比,解碼的實(shí)時(shí)性稍差,但由于不必保存圖5中眾多 的狀態(tài),因此降低對(duì)解碼器中的存儲(chǔ)空間的要求。還需要注意的是,盡管在上面提到的例子中,提供給解碼器的是數(shù)據(jù)分片(組), 但也可以是一個(gè)完整的數(shù)據(jù)包。在這種情況下,解碼器的處理方法是一樣的,它仍然以劃分 的數(shù)據(jù)分片(組)作為輸入,根據(jù)當(dāng)前狀態(tài)的狀態(tài)轉(zhuǎn)換函數(shù)進(jìn)行狀態(tài)跳轉(zhuǎn),所不同的僅僅是 它不需要等待下一個(gè)數(shù)據(jù)分片。而在前一種情況下,解碼器需要等待來(lái)自底層處理模塊的 數(shù)據(jù)分片(組)到達(dá),在此之前要保存標(biāo)識(shí)中間狀態(tài)(包括各級(jí)狀態(tài)機(jī)中的中間狀態(tài))的 狀態(tài)號(hào)。如果提取的數(shù)據(jù)不符合應(yīng)用層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息格式,則跳轉(zhuǎn)到異常狀態(tài)。 當(dāng)跳轉(zhuǎn)到異常狀態(tài)時(shí),表明該輸入解碼器的數(shù)據(jù)分片所屬的數(shù)據(jù)包異常,這就提供了更為 嚴(yán)格的數(shù)據(jù)包的合規(guī)性檢查。此外,由于傳統(tǒng)的網(wǎng)絡(luò)協(xié)議解碼模塊的輸入是一個(gè)完整的數(shù)據(jù)包,也就是一段連 續(xù)的內(nèi)存,這段內(nèi)存在解碼過(guò)程中是可以被反復(fù)讀取和使用的,因此傳統(tǒng)的網(wǎng)絡(luò)協(xié)議解碼 模型中的數(shù)據(jù)包內(nèi)存指針,是可以在數(shù)據(jù)包內(nèi)存的范圍內(nèi)進(jìn)行前后跳轉(zhuǎn)的。這給網(wǎng)絡(luò)協(xié)議 解碼帶來(lái)了實(shí)現(xiàn)上的便利,但是這種便利往往是建立在性能損耗的基礎(chǔ)上的數(shù)據(jù)包內(nèi)存 反復(fù)讀取和使用的過(guò)程實(shí)際上就是數(shù)據(jù)包內(nèi)存指針對(duì)相同的內(nèi)存進(jìn)行重復(fù)掃描的過(guò)程。對(duì) 內(nèi)存的重復(fù)掃描也會(huì)帶來(lái)一定程度上的性能下降。而本發(fā)明提出的解碼方案則把數(shù)據(jù)分 片,例如對(duì)應(yīng)于消息中的字段或字符,作為輸入,傳遞給當(dāng)前狀態(tài)的狀態(tài)轉(zhuǎn)換函數(shù),進(jìn)行狀 態(tài)跳轉(zhuǎn),同時(shí)把數(shù)據(jù)指針指向當(dāng)前字段或字符的下一個(gè)字段或字符,作為下一個(gè)狀態(tài)的輸入。這樣數(shù)據(jù)指針一直指向下一個(gè)字段或字符,直到數(shù)據(jù)指針已經(jīng)指向了輸入數(shù)據(jù)的末尾。 可見(jiàn),狀態(tài)機(jī)將會(huì)對(duì)輸入的數(shù)據(jù)執(zhí)行從頭到位的一次性掃描。這種一次性的掃描相對(duì)于傳 統(tǒng)解碼模型中可能出現(xiàn)的反復(fù)掃描,性能有所提升。本發(fā)明的解碼方案也可以應(yīng)用于HTTP以外的其他應(yīng)用層網(wǎng)絡(luò)協(xié)議。例如,可以 應(yīng)用于文件傳輸協(xié)議(FTP)、簡(jiǎn)單文件傳輸協(xié)議(TFTP)、Telnet協(xié)議,簡(jiǎn)單郵件傳輸協(xié)議 (SMTP), P0P3協(xié)議和安全超文本傳輸協(xié)議(HTTPQ等常見(jiàn)的基礎(chǔ)網(wǎng)絡(luò)協(xié)議,還可以應(yīng)用于 應(yīng)用程序協(xié)議,如 SMB, SMB2, RPC, SUNRPC, MSN, ICQ, TDS, TNS, BT, edonkey,迅雷等。一般 來(lái)說(shuō),對(duì)于報(bào)文格式可以用形式化語(yǔ)言描述的網(wǎng)絡(luò)協(xié)議,都可以使用本方案。下面再以FTP為例進(jìn)行說(shuō)明。FTP是采用命令-應(yīng)答式的消息時(shí)序。FTP命令消息狀態(tài)機(jī)如圖6所示,其中method狀態(tài)和參數(shù)狀態(tài)本身也是子狀態(tài)機(jī)。 圖7示出method狀態(tài)機(jī),圖8示出參數(shù)狀態(tài)機(jī)。參數(shù)狀態(tài)的格式因method而異,常見(jiàn)的格 式包括字符串,可打印字符串,整形數(shù),地址-端口等。例如,PORT命令參數(shù)的格式地址-端 口格式為<number>, <number>, <number>, <number>, <number>, <number>, <number>其中〈number〉為0 255的數(shù)字,其對(duì)應(yīng)的狀態(tài)機(jī)如圖8所示。圖9示出FTP應(yīng)答消息狀態(tài)機(jī)。圖6至圖9中各個(gè)狀態(tài)的含義在RFC959中有相應(yīng)的規(guī)定,因此這里不再詳述。圖10A和圖10B是根據(jù)本發(fā)明一個(gè)實(shí)施例的解碼方法的示意流程圖。如圖10A所示,在步驟S1010提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的 數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼。然后, 在步驟S1020提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù),并且以所提取的 數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼。在步驟S1030,依次對(duì)該應(yīng)用 層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)進(jìn)行S1020的操作,直至到達(dá)結(jié)束狀態(tài)。上述每 個(gè)步驟還可以包括如圖10B所示的步驟。如圖10B所示,在步驟S1011,提取數(shù)據(jù)分片組中 的第一子組中的數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一子中間狀態(tài),同時(shí)執(zhí)行相應(yīng) 的協(xié)議解碼。在步驟S1012,提取該數(shù)據(jù)分片組中的下一子組中的數(shù)據(jù),并且以所提取的數(shù) 據(jù)為輸入,跳轉(zhuǎn)到下一子中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼。在步驟S1013,依次對(duì)該數(shù)據(jù) 分片組中的其余子組重復(fù)進(jìn)行步驟S1012的操作,直至到達(dá)子結(jié)束狀態(tài)。當(dāng)然,還可以根據(jù) 需要對(duì)更小的子組進(jìn)行類似的解碼處理。該方法還可以包括如果所提取的數(shù)據(jù)不符合應(yīng)用 層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息格式,跳轉(zhuǎn)到異常狀態(tài)的步驟,和保存標(biāo)識(shí)各個(gè)中間狀態(tài)或子中 間狀態(tài)的狀態(tài)號(hào)的步驟。圖11是根據(jù)本發(fā)明一個(gè)實(shí)施例的解碼器的示意方框圖。如圖11所示,解碼器1100包括解碼裝置1110和跳轉(zhuǎn)裝置1120。解碼裝置提取應(yīng) 用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置以所提取的數(shù)據(jù)為輸入, 跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼。解碼裝置提取該應(yīng)用層網(wǎng)絡(luò)協(xié) 議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的時(shí)間,并且跳轉(zhuǎn)裝置以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一 中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼。解碼裝置和跳轉(zhuǎn)裝置依次對(duì)該應(yīng)用層網(wǎng)絡(luò) 協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)上述提取、跳轉(zhuǎn)和解碼操作,直至到達(dá)結(jié)束狀態(tài)。此外, 解碼裝置還可以提取數(shù)據(jù)分片組中的第一子組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置可以以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一子中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼。解碼裝置可以提取 該數(shù)據(jù)分片組中的下一子組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置可以以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到 下一子中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼。解碼裝置和跳轉(zhuǎn)裝置可以依次對(duì)該 數(shù)據(jù)分片組中的其余子組重復(fù)上述提取、跳轉(zhuǎn)和解碼操作,直至到達(dá)子結(jié)束狀態(tài)。如果所提 取的數(shù)據(jù)不符合應(yīng)用層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息格式,跳轉(zhuǎn)裝置可以跳轉(zhuǎn)到異常狀態(tài)。該解 碼器1100還可以包括存儲(chǔ)裝置1130,用于保存標(biāo)識(shí)各個(gè)中間狀態(tài)或子中間狀態(tài)的狀態(tài)號(hào)。圖12是根據(jù)本發(fā)明一個(gè)實(shí)施例的網(wǎng)絡(luò)入侵檢測(cè)設(shè)備的示意圖。可以看出,其包括 根據(jù)本發(fā)明一個(gè)實(shí)施例的應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼模塊(解碼器)。來(lái)自外部網(wǎng)絡(luò)的數(shù)據(jù)經(jīng)過(guò) 底層處理,得到的數(shù)據(jù)分片可以由應(yīng)用層網(wǎng)絡(luò)協(xié)議解碼模塊直接解碼,并將解碼結(jié)果提供 給其他模塊使用??梢?jiàn),省去了傳統(tǒng)的數(shù)據(jù)整合模塊,從而省去了大量的數(shù)據(jù)緩存、拷貝操 作。應(yīng)當(dāng)注意,盡管在上下文中是以IDS/IPS設(shè)備為例進(jìn)行的描述,但顯然本發(fā)明并 不限于此,而是也可以應(yīng)用到其他類型的需要進(jìn)行網(wǎng)絡(luò)協(xié)議解碼的設(shè)備。盡管在所述附圖和前面的描述中已經(jīng)詳細(xì)地圖示和描述了本發(fā)明,但是這樣的圖 示和描述應(yīng)當(dāng)被認(rèn)為是說(shuō)明性或示例性的,而不是限制性的。本發(fā)明并不限于所公開(kāi)的實(shí) 施例。通過(guò)閱讀本公開(kāi)內(nèi)容,其他的修改對(duì)于本領(lǐng)域技術(shù)人員應(yīng)當(dāng)是清楚明白的。這樣的 修改可以涉及本領(lǐng)域中已知的并且可以代替或者附加于本文已經(jīng)描述的特征而使用的其 他特征。
權(quán)利要求
1.一種用于對(duì)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包解碼的方法,每個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包包括多 個(gè)數(shù)據(jù)分片組,所述方法包括a)提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的數(shù)據(jù)并且以所提取的數(shù)據(jù)為輸 入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;b)提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù)并且以所提取的數(shù)據(jù)為 輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;c)依次對(duì)該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)上述步驟b),直至到達(dá)結(jié) 束狀態(tài)。
2.如權(quán)利要求1所述的方法,其中應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的每個(gè)數(shù)據(jù)分片組分別對(duì)應(yīng) 于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一部分。
3.如權(quán)利要求1所述的方法,其中,所述步驟a)和b)中的每一個(gè)分別包括d)提取數(shù)據(jù)分片組中的第一子組中的數(shù)據(jù)并且以該數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一子中間狀 態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;e)提取該數(shù)據(jù)分片組中的下一子組中的數(shù)據(jù)并且以該數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一子中間 狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;f)依次對(duì)該數(shù)據(jù)分片組中的其余子組重復(fù)上述步驟e),直至到達(dá)子結(jié)束狀態(tài)。
4.如權(quán)利要求3所述的方法,其中每個(gè)子組對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一 個(gè)字符或一個(gè)字段。
5.如權(quán)利要求1-4中任一個(gè)所述的方法,還包括如果所提取的數(shù)據(jù)不符合應(yīng)用層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息格式,跳轉(zhuǎn)到異常狀態(tài)。
6.如權(quán)利要求1-4中任一個(gè)所述的方法,還包括保存標(biāo)識(shí)各個(gè)中間狀態(tài)或子中間狀態(tài)的狀態(tài)號(hào)。
7.如權(quán)利要求1-4中任一個(gè)所述的方法,其中,所述應(yīng)用層網(wǎng)絡(luò)協(xié)議至少包括超文本 傳輸協(xié)議HTTP、文件傳輸協(xié)議FTP、簡(jiǎn)單文件傳輸協(xié)議TFTP、Telnet協(xié)議,簡(jiǎn)單郵件傳輸協(xié) 議SMTP,P0P3協(xié)議和安全超文本傳輸協(xié)議HTTPS以及應(yīng)用程序協(xié)議。
8.如權(quán)利要求1-4中任一個(gè)所述的方法,其中,所述方法是在入侵檢測(cè)系統(tǒng)IDS/入侵 防御系統(tǒng)IPS上執(zhí)行的。
9.如權(quán)利要求1-4中任一個(gè)所述的方法,其中,各個(gè)中間狀態(tài)和結(jié)束狀態(tài)是根據(jù)所述 應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息格式定義的。
10.一種用于對(duì)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包解碼的解碼器,每個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包包 括多個(gè)數(shù)據(jù)分片組,所述解碼器包括解碼裝置;和跳轉(zhuǎn)裝置,其中,解碼裝置和跳轉(zhuǎn)裝置被配置為解碼裝置提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的數(shù)據(jù),跳轉(zhuǎn)裝置以所提取 的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置以 所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置和跳轉(zhuǎn)裝置依次對(duì)該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)上述操 作,直至到達(dá)結(jié)束狀態(tài)。
11.如權(quán)利要求10所述的解碼器,其中應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的每個(gè)數(shù)據(jù)分片組分別 對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中的一部分。
12.如權(quán)利要求11所述的解碼器,其中,解碼裝置和跳轉(zhuǎn)裝置進(jìn)一步被配置為解碼裝置提取數(shù)據(jù)分片組中的第一子組中的數(shù)據(jù),并且跳轉(zhuǎn)裝置以所提取的數(shù)據(jù)為輸 入,跳轉(zhuǎn)到第一子中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置對(duì)該數(shù)據(jù)分片組中的下一子組解碼中的數(shù)據(jù),并且跳轉(zhuǎn)裝置以所提取的數(shù)據(jù) 為輸入,跳轉(zhuǎn)到下一子中間狀態(tài),同時(shí)解碼裝置執(zhí)行相應(yīng)的協(xié)議解碼;解碼裝置和跳轉(zhuǎn)裝置依次對(duì)該數(shù)據(jù)分片組中的其余子組重復(fù)上述解碼和跳轉(zhuǎn)操作,直 至到達(dá)子結(jié)束狀態(tài)。
13.如權(quán)利要求12所述的解碼器,其中每個(gè)子組對(duì)應(yīng)于應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息中 的一個(gè)字符或一個(gè)字段。
14.如權(quán)利要求10-13中任一個(gè)所述的解碼器,跳轉(zhuǎn)裝置被配置為如果所提取的數(shù)據(jù)不符合應(yīng)用層網(wǎng)絡(luò)層協(xié)議規(guī)定的消息格式,跳轉(zhuǎn)到異常狀態(tài)。
15.如權(quán)利要求10-13中任一個(gè)所述的解碼器,還包括存儲(chǔ)裝置,用于保存標(biāo)識(shí)各個(gè)中間狀態(tài)或子中間狀態(tài)的狀態(tài)號(hào)。
16.如權(quán)利要求10-13中任一個(gè)所述的解碼器,其中,所述應(yīng)用層網(wǎng)絡(luò)協(xié)議至少包括超 文本傳輸協(xié)議HTTP、文件傳輸協(xié)議FTP、簡(jiǎn)單文件傳輸協(xié)議TFTP、Telnet協(xié)議,簡(jiǎn)單郵件傳 輸協(xié)議SMTP,P0P3協(xié)議和安全超文本傳輸協(xié)議HTTPS以及應(yīng)用程序協(xié)議。
17.如權(quán)利要求10-13中任一個(gè)所述的解碼器,其中,所述解碼器是在入侵檢測(cè)系統(tǒng) IDS/入侵防御系統(tǒng)IPS上實(shí)現(xiàn)的。
18.如權(quán)利要求10-13中任一個(gè)所述的解碼器,其中,各個(gè)中間狀態(tài)和結(jié)束狀態(tài)是根據(jù) 所述應(yīng)用層網(wǎng)絡(luò)協(xié)議規(guī)定的消息格式定義的。
19.一種網(wǎng)絡(luò)設(shè)備,包括如權(quán)利要求10-18中任一項(xiàng)所述的解碼器。
20.如權(quán)利要求19所述的網(wǎng)絡(luò)設(shè)備,其中該網(wǎng)絡(luò)設(shè)備包括入侵檢測(cè)系統(tǒng)IDS/入侵防御 系統(tǒng)IPS設(shè)備。
全文摘要
本發(fā)明涉及一種用于對(duì)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包解碼的方法和解碼器。每個(gè)應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包包括多個(gè)數(shù)據(jù)分片組。所述方法包括a)提取應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的第一數(shù)據(jù)分片組中的數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到第一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;b)提取該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的下一數(shù)據(jù)分片組中的數(shù)據(jù),并且以所提取的數(shù)據(jù)為輸入,跳轉(zhuǎn)到下一中間狀態(tài),同時(shí)執(zhí)行相應(yīng)的協(xié)議解碼;c)依次對(duì)該應(yīng)用層網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的其余數(shù)據(jù)分片組重復(fù)上述步驟b),直至到達(dá)結(jié)束狀態(tài)。因此,可以將從低層模塊接收到的所有數(shù)據(jù)不加整合地實(shí)時(shí)提供給解碼器,從而省去傳統(tǒng)的解碼方案中的數(shù)據(jù)整合模塊,簡(jiǎn)化網(wǎng)絡(luò)入侵檢測(cè)設(shè)備的模塊設(shè)計(jì)。
文檔編號(hào)H04L29/08GK102075512SQ20101053290
公開(kāi)日2011年5月25日 申請(qǐng)日期2010年11月2日 優(yōu)先權(quán)日2010年11月2日
發(fā)明者么剛, 張濤, 韓鵬 申請(qǐng)人:北京神州綠盟信息安全科技股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
团风县| 神池县| 灵山县| 乳山市| 修文县| 新蔡县| 中西区| 星子县| 霍林郭勒市| 岳西县| 巴林左旗| 大兴区| 会宁县| 江孜县| 民丰县| 石阡县| 荥阳市| 滨海县| 和硕县| 隆昌县| 资溪县| 汉沽区| 巴塘县| 磐安县| 西安市| 全南县| 呼图壁县| 达孜县| 漳浦县| 若尔盖县| 景泰县| 中卫市| 宝山区| 石渠县| 田东县| 清水县| 铜梁县| 台湾省| 新昌县| 德州市| 灵川县|