国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于從通信鏈路提取結(jié)構(gòu)化應(yīng)用程序數(shù)據(jù)的系統(tǒng)和方法

      文檔序號:7791099閱讀:393來源:國知局
      用于從通信鏈路提取結(jié)構(gòu)化應(yīng)用程序數(shù)據(jù)的系統(tǒng)和方法
      【專利摘要】用于產(chǎn)生在網(wǎng)絡(luò)代理之間的操作的語義描述的系統(tǒng)和方法。在實(shí)施方案中,捕獲在兩個或多個網(wǎng)絡(luò)代理之間的包級流量。將所述包級流量集束至一個或多個消息中,其中每個消息包括一個或多個元素。對于所述消息中的每個,所述消息的所述元素與一個或多個屬性匹配,并且基于所述匹配的屬性將所述消息解碼成消息數(shù)據(jù)。然后,所述消息數(shù)據(jù)用于產(chǎn)生所述網(wǎng)絡(luò)代理之間的操作的語義描述。
      【專利說明】用于從通信鏈路提取結(jié)構(gòu)化應(yīng)用程序數(shù)據(jù)的系統(tǒng)和方法
      [0001]發(fā)明背景

      【技術(shù)領(lǐng)域】
      [0002]本發(fā)明大體涉及具有網(wǎng)絡(luò)交換、路由選擇、代理和數(shù)據(jù)庫技術(shù)的特征的信息技術(shù),并且更具體來說涉及經(jīng)由提供兩個網(wǎng)絡(luò)代理之間的流量(可能不完整的)拷貝的網(wǎng)絡(luò)分流器提取語義數(shù)據(jù)而基本上不改變現(xiàn)有網(wǎng)絡(luò)或應(yīng)用程序基礎(chǔ)結(jié)構(gòu)。
      [0003]相關(guān)技術(shù)描述
      [0004]過去的幾十年來,結(jié)構(gòu)化數(shù)據(jù)庫技術(shù)已經(jīng)成為許多企業(yè)技術(shù)創(chuàng)新中的關(guān)鍵組成部分。隨著互聯(lián)網(wǎng)的成功,數(shù)據(jù)庫技術(shù)的使用已經(jīng)在許多消費(fèi)者和商業(yè)對商業(yè)應(yīng)用程序中廣泛應(yīng)用。隨著數(shù)據(jù)庫架構(gòu)的普及,已經(jīng)出現(xiàn)新的風(fēng)險(xiǎn)和挑戰(zhàn)。此類風(fēng)險(xiǎn)和挑戰(zhàn)包括識別性能問題和可以允許未經(jīng)授權(quán)的用戶訪問保密數(shù)據(jù)的安全性中的微小缺口的復(fù)雜性和困難。因此,需要的是用于識別這些性能問題和閉合這些安全缺口的新的、改進(jìn)的機(jī)構(gòu)。
      [0005]數(shù)據(jù)庫應(yīng)用程序的大部分使用具有存儲和索引的結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫服務(wù)器??蛻舳嗽L問數(shù)據(jù)庫服務(wù)器以存儲、更新和查詢結(jié)構(gòu)化數(shù)據(jù)。客戶端可使用各種物理或虛擬媒介、使用標(biāo)準(zhǔn)網(wǎng)絡(luò)技術(shù)(諸如傳輸控制協(xié)議(TCP)、互聯(lián)網(wǎng)協(xié)議(IP)、以太網(wǎng)及其類似物)與數(shù)據(jù)庫服務(wù)器通信。然而標(biāo)準(zhǔn)協(xié)議一般用于與數(shù)據(jù)庫服務(wù)器的較低級別的通信,較高級別的協(xié)議常常專用于供應(yīng)商和/或客戶端-服務(wù)器架構(gòu),并且不可完全指定。供應(yīng)商可能在技術(shù)上不能夠發(fā)布這些規(guī)格,或可能因?yàn)槠渌蜻x擇不發(fā)布這些規(guī)格。
      [0006]在應(yīng)用程序和/或數(shù)據(jù)庫層下面,測序字節(jié)協(xié)議,諸如TCP或按序數(shù)據(jù)包交換(SPX),一般用于面對潛在不可靠較低級別傳輸機(jī)構(gòu)時確??蛻舳伺c服務(wù)器系統(tǒng)之間的消息的傳送。這些協(xié)議可交換多個數(shù)據(jù)包以傳送單個字節(jié)的數(shù)據(jù)。此類數(shù)據(jù)包的傳遞和/或接受可為異步的,使得數(shù)據(jù)包的次序不一定與應(yīng)用程序或數(shù)據(jù)庫層需要的字節(jié)流的次序相同。這些協(xié)議被設(shè)計(jì)以當(dāng)數(shù)據(jù)包在諸如客戶端系統(tǒng)與服務(wù)器系統(tǒng)的兩個網(wǎng)絡(luò)代理之間丟失或損壞時工作。
      [0007]許多網(wǎng)絡(luò)會話可在服務(wù)器(例如數(shù)據(jù)庫服務(wù)器)與一個或多個客戶端系統(tǒng)之間建立。每個會話一般相對于其它會話異步操作,并且來自多個會話的數(shù)據(jù)和控制信息可在時間上重疊。另外,可在服務(wù)器與其客戶端之間使用多個封裝技術(shù)和物理層技術(shù)。
      [0008]存在若干網(wǎng)絡(luò)分流技術(shù),其可以用于提取在兩個或多個網(wǎng)絡(luò)代理之間流動的包流的拷貝。然而,試圖觀察交換的網(wǎng)絡(luò)分流器將不會目睹如任一網(wǎng)絡(luò)代理所見的流量的確切拷貝。相反,網(wǎng)絡(luò)分流器將接收數(shù)據(jù)包的唯一第三方視圖,其可包括由網(wǎng)絡(luò)代理所見的數(shù)據(jù)包的子集或超集。
      [0009]雖然可使用埋置在底層協(xié)議和傳輸中的數(shù)據(jù)解決許多不確定性,如封裝、會話復(fù)用、命令和請求數(shù)據(jù)的有效性,但是這些機(jī)構(gòu)被設(shè)計(jì)以在網(wǎng)絡(luò)對話的任一端(即在網(wǎng)絡(luò)代理處)操作。此外,該埋置數(shù)據(jù)不能夠完全解決在特定網(wǎng)絡(luò)對話的實(shí)際內(nèi)容中的不確定性。另外,在通常使用的網(wǎng)絡(luò)架構(gòu)中,由網(wǎng)絡(luò)分流器捕獲的包流常常以一定方式損壞。此外,應(yīng)用程序協(xié)議(例如Oracle的客戶端_服務(wù)器協(xié)議)常常不是公開指定.因此,常規(guī)上不可能使用網(wǎng)絡(luò)分流器在服務(wù)器與其客戶端之間生成完整的操作細(xì)節(jié)。
      發(fā)明概要
      [0010]相應(yīng)地,公開了結(jié)合捕獲和分析技術(shù)利用來自網(wǎng)絡(luò)分流器的緩沖以生成在兩個網(wǎng)絡(luò)代理之間的操作的詳細(xì)語義描述或模型的系統(tǒng)和方法。然后,該詳細(xì)模型可以用于檢測和回應(yīng)特別是在基于數(shù)據(jù)庫的應(yīng)用程序的環(huán)境中的性能問題和安全缺口。
      [0011]在實(shí)施方案中,公開了用于產(chǎn)生在網(wǎng)絡(luò)代理之間的操作的語義描述的方法。該方法包括使用至少一個硬件處理器:捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量;將包級流量集束成一個或多個消息,其中一個或多個消息中的每個包括一個或多個元素;對于一個或多個消息中的每個,匹配消息的一個或多個元素中的一個或多個與一個或多個屬性,并且基于所匹配的一個或多個屬性將消息解碼成消息數(shù)據(jù);以及基于消息數(shù)據(jù)產(chǎn)生在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的操作的語義描述。
      [0012]在另一個實(shí)施方案中,公開了用于產(chǎn)生在網(wǎng)絡(luò)代理之間的操作的語義描述的系統(tǒng)。該系統(tǒng)包括:至少一個硬件處理器;以及至少一個可執(zhí)行的軟件模塊,其在由至少一個硬件處理器執(zhí)行時捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的數(shù)據(jù)包級流量,將數(shù)據(jù)包級流量集束成一個或多個消息,其中一個或多個消息中的每個包括一個或多個元素,對于一個或多個消息中的每個,匹配消息的一個或多個元素中的一個或多個與一個或多個屬性,并且基于所匹配的一個或多個屬性將消息解碼成消息數(shù)據(jù),以及基于消息數(shù)據(jù)產(chǎn)生在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的操作的語義描述。
      [0013]附圖簡述
      [0014]本發(fā)明的細(xì)節(jié),如其結(jié)構(gòu)和操作,可通過研究附圖部分地收集,在所述附圖中相同的附圖標(biāo)記指代相同的部分并且:
      [0015]圖1圖示根據(jù)實(shí)施方案的實(shí)例架構(gòu)環(huán)境,其中可捕獲在網(wǎng)絡(luò)代理之間的流量用于分析;
      [0016]圖2圖示根據(jù)實(shí)施方案的用于捕獲和分析裝置的實(shí)例硬件架構(gòu);
      [0017]圖3圖示根據(jù)實(shí)施方案的用于捕獲和分析裝置的實(shí)例軟件架構(gòu);
      [0018]圖4圖示根據(jù)實(shí)施方案的涉及捕獲包級流量和準(zhǔn)備所捕獲的流量用于分析的實(shí)例部件和數(shù)據(jù)流程圖;
      [0019]圖5圖示根據(jù)實(shí)施方案的涉及將包級流量重組成字節(jié)流、請求和響應(yīng)束以及在網(wǎng)絡(luò)代理之間發(fā)生的操作的最終結(jié)構(gòu)模型的實(shí)例部件和數(shù)據(jù)流程圖;
      [0020]圖6圖示根據(jù)實(shí)施方案的在產(chǎn)生語義操作模型中取得的所捕獲的流量的實(shí)例應(yīng)用程序級分析;
      [0021]圖7是根據(jù)實(shí)施方案的梯形圖,其圖示從捕獲和分析裝置或模塊的外部的角度的事務(wù)中的數(shù)據(jù)包交互;
      [0022]圖8是根據(jù)實(shí)施方案的梯形圖,其圖示從捕獲和分析裝置或模塊的內(nèi)部的角度的事務(wù)中的數(shù)據(jù)包處理,其中第一請求的元素(例如元素801和803)表示數(shù)據(jù)包、第一請求數(shù)據(jù)的元素(例如元素803和806)表示字節(jié)數(shù)據(jù)的連續(xù)流以及第一請求810表示對應(yīng)于消息邊界的流數(shù)據(jù)束;
      [0023]圖9圖示根據(jù)實(shí)施方案的用于應(yīng)用程序協(xié)議匹配的實(shí)例數(shù)據(jù)流程圖;
      [0024]圖10圖示可由應(yīng)用程序協(xié)議注釋器使用以選擇用于解碼應(yīng)用程序協(xié)議消息的屬性模板的過程;以及
      [0025]圖11圖示根據(jù)實(shí)施方案的處理系統(tǒng),在其上執(zhí)行本文所述的過程中的一個或多個。
      [0026]發(fā)明詳述
      [0027]本發(fā)明公開了用于產(chǎn)生在兩個或多個網(wǎng)絡(luò)代理之間的操作的詳細(xì)語義模型或描述的系統(tǒng)和方法。在實(shí)施方案中,所公開的系統(tǒng)和方法用于包括在應(yīng)用層上的同步裝置交互的網(wǎng)絡(luò)會話。這包括但不限于遠(yuǎn)程過程調(diào)用(RPC)或類似的請求和響應(yīng)交互,諸如使用超文本傳輸協(xié)議(HTTP)的那些。在這些交互中,第一裝置通過一個或多個網(wǎng)絡(luò)向第二裝置傳遞請求,并且第二裝置經(jīng)由一個或多個網(wǎng)絡(luò)返回響應(yīng)至第一裝置。請求和響應(yīng)都可包括在裝置之間傳遞的一個或多個數(shù)據(jù)包。在請求與響應(yīng)之間的包級流程可在時間上重疊(從裝置或網(wǎng)絡(luò)鏡像裝置的角度)和/或可從網(wǎng)絡(luò)架構(gòu)內(nèi)的多個點(diǎn)收集。在實(shí)施方案中,通信網(wǎng)絡(luò)代理之間的多個網(wǎng)絡(luò)會話可產(chǎn)生任意交織的數(shù)據(jù)包而不影響所公開的系統(tǒng)和方法的操作.
      [0028]根據(jù)實(shí)施方案,系統(tǒng)和方法從網(wǎng)絡(luò)代理之間交換的網(wǎng)絡(luò)數(shù)據(jù)包流量的有缺陷的拷貝提取兩個網(wǎng)絡(luò)代理之間執(zhí)行的語義操作的模型或描述。該模型可包括但不限于每個操作中的原始性能數(shù)據(jù)、描述性元數(shù)據(jù)(例如查詢字符串、數(shù)據(jù)類型、數(shù)據(jù)大小等)和/或?qū)嶋H數(shù)據(jù)。當(dāng)流量丟失、次序顛倒或未知流量的確切規(guī)格時,仍可在應(yīng)用層級上產(chǎn)生和使用操作的局部模型,并且可基于數(shù)據(jù)流程的方向(例如在請求與響應(yīng)消息之間)再同步會話的框架。
      [0029]更新數(shù)據(jù)庫中的數(shù)據(jù)的數(shù)據(jù)庫查詢或操作的服務(wù)可由數(shù)據(jù)庫服務(wù)器迅速或緩慢地提供,這取決于數(shù)據(jù)查詢或更新操作的復(fù)雜性、由數(shù)據(jù)庫服務(wù)器經(jīng)受的瞬時負(fù)載或通過超出數(shù)據(jù)庫服務(wù)器本身的其它因素(例如存儲系統(tǒng)、變化的虛擬中央處理單元(CPU)分配等)。在實(shí)施方案中,可以通過使用描述性元數(shù)據(jù)(例如結(jié)構(gòu)化查詢語言(SQL)查詢字符串)觀察特定請求與響應(yīng)之間的時滯以及通過觀察數(shù)據(jù)本身的內(nèi)容和格式來實(shí)時確定數(shù)據(jù)庫服務(wù)器的許多操作方面的性能。另外,被更新或檢索的數(shù)據(jù)和實(shí)際數(shù)據(jù)的性質(zhì)隱藏在客戶端系統(tǒng)與服務(wù)器之間雙向流動的網(wǎng)絡(luò)數(shù)據(jù)包中。通過觀察該流量,可檢測對數(shù)據(jù)庫的部分提取或改變的不適當(dāng)?shù)膰L試。在實(shí)施方案中,使用現(xiàn)存流量的拷貝提取和分析在客戶端系統(tǒng)與服務(wù)器之間的操作的語義?;谠摲治觯尚薷牧髁恳源龠M(jìn)或另外改進(jìn)性能和/或減輕針對各種形式的攻擊。
      [0030]在實(shí)施方案中,將捕獲部件放置在網(wǎng)絡(luò)拓?fù)渲?,使其暴露于在多個網(wǎng)絡(luò)代理之間傳遞以分析的流量。所觀察到的數(shù)據(jù)包可經(jīng)由一系列的網(wǎng)絡(luò)鏈接和/或緩沖級被拷貝和傳遞至過濾器部件。然后,過濾器部件可放棄與網(wǎng)絡(luò)代理和/或被分析的應(yīng)用程序無關(guān)的數(shù)據(jù)包。其余的數(shù)據(jù)包可被傳送至重組部件,所述重組部件使用數(shù)據(jù)包中的序列數(shù)據(jù)和其它描述性數(shù)據(jù)和/或接受數(shù)據(jù)包的時間來建立每個網(wǎng)絡(luò)會話的字節(jié)流的表示。
      [0031]一旦重組部件建立會話的字節(jié)流的表示,其就可被傳送至應(yīng)用層分析部件。分析部件可將字節(jié)流的內(nèi)容解包成請求和響應(yīng)數(shù)據(jù)和描述以產(chǎn)生流量的語義操作模型。該語義模型可由應(yīng)用程序?qū)S貌考褂?,其使用語義模型來檢測安全性和性能問題和/或減輕所檢測的對安全策略的破壞。
      [0032]應(yīng)理解的是本文論述的捕獲部件、過濾器部件、重組部件、應(yīng)用層分析部件、應(yīng)用程序?qū)S貌考腿魏纹渌考蚰K可在硬件、軟件或者硬件和軟件中實(shí)施,并且可為單獨(dú)的或集成的部件。例如,過濾器部件、重組部件、應(yīng)用層分析部件和應(yīng)用程序?qū)S貌考蔀樵诓东@裝置的硬件上或通信地連接至捕獲裝置的單獨(dú)的裝置上執(zhí)行的軟件模塊。
      [0033]層概沭
      [0034]起初,將描述開放式系統(tǒng)互聯(lián)(OSI)參考模型的層。OSI模型定義網(wǎng)絡(luò)框架以在七個層中實(shí)施協(xié)議。所述層服務(wù)其上的層并且被其下的層服務(wù)。
      [0035]層7:應(yīng)用層。該層支持應(yīng)用程序和終端用戶處理。應(yīng)用層與實(shí)施通信部件的軟件應(yīng)用程序交互。應(yīng)用層的功能包括識別通信伙伴、確定資源可用性和同步通信。
      [0036]層6:表示層(或語法層)。該層在應(yīng)用程序格式與網(wǎng)絡(luò)格式之間翻譯以便提供數(shù)據(jù)表示的差異的獨(dú)立性(例如加密)。表示層將來自網(wǎng)絡(luò)的數(shù)據(jù)形式變換成應(yīng)用層可以理解的形式,并且跨過網(wǎng)絡(luò)發(fā)送來自應(yīng)用程序的格式和加密數(shù)據(jù)。
      [0037]層5:會話層。該層控制計(jì)算機(jī)之間的連接。它建立、管理和終止應(yīng)用程序之間的連接。會話層通常明確實(shí)施在使用RPC的應(yīng)用程序環(huán)境中。
      [0038]層4:傳輸層。該層提供網(wǎng)絡(luò)代理之間的透明數(shù)據(jù)傳送,并且用于端對端錯誤恢復(fù)、分割和重組(de-segmentat1n)以及流程控制。流程控制包括確定數(shù)據(jù)是否來自多于一個應(yīng)用程序,并且將每個應(yīng)用程序的數(shù)據(jù)整合成單個流用于物理網(wǎng)絡(luò)。傳輸層確保完整的數(shù)據(jù)傳送。
      [0039]層3:網(wǎng)絡(luò)層。該層提供將可變長度數(shù)據(jù)序列從一個網(wǎng)絡(luò)上的源主機(jī)傳送至不同網(wǎng)絡(luò)上的目標(biāo)主機(jī)而同時保持傳輸層請求的服務(wù)質(zhì)量的功能和程序構(gòu)件。它產(chǎn)生邏輯路徑用于將數(shù)據(jù)從節(jié)點(diǎn)傳遞至節(jié)點(diǎn)。它提供交換、路由、轉(zhuǎn)發(fā)、尋址、網(wǎng)絡(luò)互連、錯誤處理、擁塞控制和數(shù)據(jù)包排序功能。網(wǎng)絡(luò)層確定向接受代理發(fā)送數(shù)據(jù)的方式。
      [0040]層2:數(shù)據(jù)鏈路層。該層提供功能和程序構(gòu)件以在網(wǎng)絡(luò)代理之間傳送數(shù)據(jù)以及檢測并可能校正在物理層中發(fā)生的錯誤。數(shù)據(jù)鏈路層編碼和解碼數(shù)據(jù)包、提供傳輸協(xié)議只是和管理并且處理在物理層中的錯誤,以及流程控制和幀同步。它將適當(dāng)?shù)奈锢韰f(xié)議分配給數(shù)據(jù),并且定義網(wǎng)絡(luò)和數(shù)據(jù)包排序的類型。數(shù)據(jù)鏈路層細(xì)分為媒體訪問控制(MAC)層和邏輯鏈路控制(LLC)層。MAC層控制網(wǎng)絡(luò)代理如何獲得對于數(shù)據(jù)的訪問以及傳送數(shù)據(jù)的許可。LLC層控制幀同步、流程控制和錯誤檢查。
      [0041]層1:物理層。該層定義用于裝置的電氣和物理規(guī)格。它在電氣和/或機(jī)械層級通過網(wǎng)絡(luò)傳送位流(例如經(jīng)由電、光、或無線信號)。物理層提供發(fā)送和接收在載體上的數(shù)據(jù)的硬件構(gòu)件,包括界定電纜、卡、電壓電平、定時和其它物理方面。
      [0042]系統(tǒng)概沭
      [0043]圖1圖示根據(jù)實(shí)施方案的用于捕獲和分析兩個或多個網(wǎng)絡(luò)代理之間的交互的實(shí)例系統(tǒng)。該系統(tǒng)可包括一組一個或多個捕獲和分析裝置(例如服務(wù)器)107,其容納和/或執(zhí)行本文所述的各種功能、過程和/或軟件模塊中的一個或多個。另外,裝置107經(jīng)由通信路徑106通信地連接至諸如網(wǎng)絡(luò)交換機(jī)101的裝置。網(wǎng)絡(luò)交換機(jī)101定位在第一網(wǎng)絡(luò)代理102與第二網(wǎng)絡(luò)代理103之間的網(wǎng)絡(luò)路徑104/105上。包括網(wǎng)絡(luò)路徑104/105的網(wǎng)絡(luò)可包括任何類型的網(wǎng)絡(luò),這包括內(nèi)聯(lián)網(wǎng)和/或互聯(lián)網(wǎng),并且網(wǎng)絡(luò)代理102和103可使用任何標(biāo)準(zhǔn)和/或?qū)S袇f(xié)議來通信。例如,網(wǎng)絡(luò)代理102和103可使用諸如HTTP、安全HTTP(HTTPS)、文件傳送協(xié)議(FTP)及其類似物的傳輸協(xié)議通過互聯(lián)網(wǎng)彼此通信。
      [0044]在實(shí)施方案中,捕獲和分析裝置107可以不是專屬裝置,并且反而可以是利用一個或多個服務(wù)器的共享資源的云實(shí)例。應(yīng)理解的是網(wǎng)絡(luò)代理102和103以及捕獲和分析裝置107可包括能夠有線和/或無線通信的任何類型的計(jì)算裝置,這包括但不限于臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、智能電話或其它移動電話、服務(wù)器、游戲控制臺、電視、機(jī)頂盒、電子廣告亭、自動柜員機(jī)及其類似物。網(wǎng)絡(luò)代理102、網(wǎng)絡(luò)代理103和/或裝置107還可包括或通信地與一個或多個數(shù)據(jù)庫連接,諸如MySQL、Oracle?、IBM?、Microsoft? SQL、Sybase?, Access?或包括基于云的數(shù)據(jù)庫實(shí)例的其它類型的數(shù)據(jù)庫。另外,雖然僅圖示了兩個代理102和103、一個交換機(jī)101以及一組捕獲和分析裝置107,但是應(yīng)理解的是網(wǎng)絡(luò)可包括任何數(shù)量的代理、交換機(jī)以及捕獲和分析裝置。
      [0045]圖2圖示根據(jù)實(shí)施方案的用于捕獲和分析裝置107的實(shí)例硬件架構(gòu)。內(nèi)部硬件架構(gòu)可包括標(biāo)準(zhǔn)、市售部件。在網(wǎng)絡(luò)代理102與103之間發(fā)送的流量的拷貝或鏡像,其包括網(wǎng)絡(luò)數(shù)據(jù)包,可由網(wǎng)絡(luò)接口控制器(NIC) 201經(jīng)由接口 106(例如1000BASE-T鏈路)從網(wǎng)絡(luò)交換機(jī)101接收??偩€控制器203可將數(shù)據(jù)包數(shù)據(jù)從NIC201經(jīng)由總線202 (例如外部控制器接口(PCI)總線)通過存儲器控制器204傳送至主存儲器205中。
      [0046]存儲器控制器204為CPU207提供路徑以經(jīng)由緩沖存儲器206從主存儲器205讀取數(shù)據(jù)并將數(shù)據(jù)寫入主存儲器205。CPU207可執(zhí)行包括存儲在主存儲器205中的實(shí)施本文所述的過程的軟件指令的程序。
      [0047]存儲控制器207可經(jīng)由總線210連接至總線控制器203。存儲控制器207可經(jīng)由鏈路208讀取和寫入數(shù)據(jù)(例如語義模型)和程序指令至永久存儲裝置209。例如,存儲裝置209可包括商業(yè)一兆兆字節(jié)串行高級技術(shù)附件(SATA)硬盤,并且鏈路208可包括SATA-1I鏈路。然而,應(yīng)理解的是可使用任何存儲裝置和相關(guān)聯(lián)的接口。
      [0048]圖3圖示根據(jù)實(shí)施方案的用于捕獲和分析裝置107的實(shí)例高級別軟件架構(gòu)。在該實(shí)例中,架構(gòu)包括管理上文所述的物理硬件架構(gòu)的操作系統(tǒng)內(nèi)核301 (例如Linux3.1)和相關(guān)設(shè)備。軟件程序或模塊304,其包括本文所述的捕獲和分析過程,由操作系統(tǒng)內(nèi)核301拷貝至存儲器中。然后,這些模塊304可由CPU207執(zhí)行以分析和處理所接收的數(shù)據(jù)包,并且產(chǎn)生在網(wǎng)絡(luò)代理102與103之間發(fā)生的操作的語義模型。
      [0049]網(wǎng)絡(luò)接口控制器驅(qū)動器302控制NIC201并且將網(wǎng)絡(luò)鏈路106上接收的數(shù)據(jù)包引入數(shù)據(jù)包緩沖器303到主存儲器205中。數(shù)據(jù)包過濾器引擎305可在捕獲和分析模塊304的指引下放棄一些數(shù)據(jù)包。例如,數(shù)據(jù)包過濾器引擎305可放棄與模塊304的模型建立機(jī)構(gòu)感興趣的特定協(xié)議無關(guān)的數(shù)據(jù)包,諸如管理流量(例如地址解析協(xié)議(ARP))或者網(wǎng)絡(luò)代理之間的其它廣播或流量而非感興趣的那些。然后,原始數(shù)據(jù)包捕獲模塊306可將所保留的數(shù)據(jù)包拷貝至入口數(shù)據(jù)包緩沖器307由捕獲和分析模塊304使用。
      [0050]捕獲和分析模塊304在置于數(shù)據(jù)包緩沖器307中的入口數(shù)據(jù)包流量上執(zhí)行處理308(如本文別處所述)以產(chǎn)生在網(wǎng)絡(luò)代理102與103之間發(fā)生的操作的語義模型。該模型可被遞增地放入模型記錄緩沖器309,并且然后有文件系統(tǒng)驅(qū)動器310 (例如在Linux操作系統(tǒng)環(huán)境中的Ext4文件系統(tǒng)驅(qū)動器)和存儲控制器驅(qū)動器311寫入永久存儲裝置209。
      [0051]內(nèi)核301可提供定時設(shè)施312給捕獲和分析模塊304,使其可在處理308期間翻譯緩沖器307中的數(shù)據(jù)包流量。定時設(shè)施312可包括呈高分辨率(例如微秒或更高)檢索一天的當(dāng)前時間的機(jī)構(gòu)。模塊304可比較從定時設(shè)施312檢索的時間與網(wǎng)絡(luò)接口控制器驅(qū)動器302如所述時間被接收的寫入數(shù)據(jù)包的時間戳。例如,這些時間戳可用于通過重組和協(xié)議分析代碼確定何時所期望的數(shù)據(jù)包被認(rèn)為丟失。
      [0052]數(shù)據(jù)包捕獲機(jī)構(gòu)
      [0053]在實(shí)施方案中,在網(wǎng)絡(luò)代理102與103之間的數(shù)據(jù)包流量由網(wǎng)絡(luò)反射鏡或交換端口分析器(SPAN)分流器機(jī)構(gòu)拷貝。例如,網(wǎng)絡(luò)交換機(jī)101可置于網(wǎng)絡(luò)代理102與103之間的路徑104/105中,使得由網(wǎng)絡(luò)代理102向網(wǎng)絡(luò)代理103傳遞的所有數(shù)據(jù)包(反之亦然)經(jīng)由通信鏈路104和105通過交換機(jī)101傳遞。在實(shí)施方案中,網(wǎng)絡(luò)交換機(jī)101可為層2(即數(shù)據(jù)鏈路層)網(wǎng)絡(luò)交換機(jī)。交換機(jī)101可被配置成將分別經(jīng)由網(wǎng)絡(luò)鏈路104和105從網(wǎng)絡(luò)代理102和103接收的所有數(shù)據(jù)包的拷貝經(jīng)由通信鏈路106傳遞至捕獲和分析裝置107。網(wǎng)絡(luò)鏈路104、105和/或106中的每個可符合電氣與電子工程師協(xié)會(IEEE)802.3ab(1000BASE-T)以太網(wǎng)標(biāo)準(zhǔn)。
      [0054]另外,可提供一個或多個檢測器108,其對于捕獲和分析裝置107可為本地的(例如在相同機(jī)器上執(zhí)行)或遠(yuǎn)程的(例如在經(jīng)由一個或多個網(wǎng)絡(luò)通信地連接至捕獲和分析裝置107的單獨(dú)機(jī)器上執(zhí)行)。檢測器108可處理捕獲和分析裝置107的輸出。例如,檢測器108可利用由捕獲和分析裝置107產(chǎn)生的網(wǎng)絡(luò)代理102與103之間的操作的語義描述來建立一個或多個較高級別模型,這包括多層較高級別模型和不同類型的較高級別模型(例如專用于安全應(yīng)用程序、性能應(yīng)用程序和/或其它類型的應(yīng)用程序的模型)。捕獲和分析裝置107的模塊可經(jīng)由一個或多個應(yīng)用程序接口(API)與檢測器108交互。
      [0055]圖7圖示根據(jù)實(shí)施方案的在兩個網(wǎng)絡(luò)代理102與103之間的實(shí)例請求和響應(yīng)交互。在交互中交換的數(shù)據(jù)包可包括以太網(wǎng)報(bào)頭、互聯(lián)網(wǎng)協(xié)議(IP)報(bào)頭和TCP報(bào)頭。請求701可在一個或多個數(shù)據(jù)包中包括完整的層7請求有效負(fù)載、可以經(jīng)由鏈路104從網(wǎng)絡(luò)代理102傳遞至交換機(jī)101。請求701可被定址到網(wǎng)絡(luò)代理103。因此,交換機(jī)101在鏈路105上將請求701的拷貝702傳遞至網(wǎng)絡(luò)代理103。然而,交換機(jī)101還在鏈路106上將請求701的拷貝703傳遞至捕獲和分析裝置107。
      [0056]網(wǎng)絡(luò)代理103可經(jīng)由鏈路105向網(wǎng)絡(luò)代理102發(fā)送確認(rèn)704。在網(wǎng)絡(luò)代理103與102之間的通信路徑105/104上的交換機(jī)101處接收確認(rèn)704。交換機(jī)101在鏈路104上向網(wǎng)絡(luò)代理102發(fā)送確認(rèn)704的拷貝705,并且還在鏈路106上向捕獲和分析裝置107傳遞確認(rèn)704的拷貝706。確認(rèn)704可包括一個或多個數(shù)據(jù)包,其向網(wǎng)絡(luò)代理102指示請求701被接收。
      [0057]網(wǎng)絡(luò)代理103可經(jīng)由鏈路105向網(wǎng)絡(luò)代理102發(fā)送響應(yīng)707。在鏈路104上向網(wǎng)絡(luò)代理102發(fā)送響應(yīng)707的拷貝708的交換機(jī)101處接收響應(yīng)707。交換機(jī)101還在鏈路106上向捕獲和分析裝置107傳遞響應(yīng)707的拷貝709。響應(yīng)707包括一個或多個數(shù)據(jù)包,其形成請求701的響應(yīng)。
      [0058]網(wǎng)絡(luò)代理102可經(jīng)由鏈路104向網(wǎng)絡(luò)代理103發(fā)送確認(rèn)710。在網(wǎng)絡(luò)代理102與103之間的通信路徑104/105上的交換機(jī)101處接收確認(rèn)710。交換機(jī)101在鏈路105上向網(wǎng)絡(luò)代理103發(fā)送確認(rèn)710的拷貝711。交換機(jī)101還在鏈路106上向捕獲和分析裝置107傳遞確認(rèn)710的拷貝712。由網(wǎng)絡(luò)代理103接受的確認(rèn)拷貝711完成開始于網(wǎng)絡(luò)代理102傳輸請求701的單個應(yīng)用程序級別請求和響應(yīng)循環(huán)。
      [0059]圖4圖示根據(jù)實(shí)施方案的用于捕獲數(shù)據(jù)包的實(shí)例過程。在實(shí)施方案中,在捕獲和分析裝置107種的數(shù)據(jù)包的處理開始于經(jīng)由可為以太網(wǎng)鏈路的鏈路106在NIC416或302處接收的來自網(wǎng)絡(luò)交換機(jī)101的數(shù)據(jù)包。例如,在網(wǎng)絡(luò)鏈路106上使用的電信號可通過以太網(wǎng)物理接收器(PHY)401的媒介獨(dú)立接口(MII)解調(diào)。MII/PHY401還可恢復(fù)數(shù)據(jù)和時鐘信息。所解調(diào)的數(shù)據(jù)和時鐘信息可作為數(shù)字位流402傳送至網(wǎng)絡(luò)MAC403,其將流分成離散數(shù)據(jù)包并且施加錯誤校正代碼以驗(yàn)證數(shù)據(jù)包未在傳輸期間損壞??稍谠撾A段期間放棄損壞的數(shù)據(jù)包。在實(shí)施方案中,網(wǎng)絡(luò)PHY401和MAC403以及其伴隨的接口可由IEEE803.3ab (1000BASE-T)和/或相關(guān)的以太網(wǎng)標(biāo)準(zhǔn)定義,并且可實(shí)施為市售NIC的部分。
      [0060]在實(shí)施方案中,在NIC416中的緩沖器引擎405將數(shù)據(jù)從MAC403匯編至數(shù)據(jù)包的表示中,并且將表示存儲在數(shù)據(jù)包緩沖器407中??刂破黩?qū)動器409 (其可對應(yīng)于圖3中的驅(qū)動器302)通過數(shù)據(jù)包過濾器引擎411傳送存儲在數(shù)據(jù)包緩沖器407中的所接收的數(shù)據(jù)包。數(shù)據(jù)包過濾器引擎411可包括或利用由程序產(chǎn)生的指令,其從高級別網(wǎng)絡(luò)描述編譯最佳數(shù)據(jù)包過濾器。所得數(shù)據(jù)包過濾器放棄模型建立處理308不感興趣的數(shù)據(jù)包。留下的是TCP/IP數(shù)據(jù)包,其旨在用于網(wǎng)絡(luò)代理感興趣(例如網(wǎng)絡(luò)代理102和103)的接收和/或用于特定TCP端口。過濾器(例如感興趣的特定代理和/或TCP端口)可由系統(tǒng)的用戶配置。
      [0061]在實(shí)施方案中,過濾器可包括一個或多個規(guī)格或標(biāo)準(zhǔn)的組,這可經(jīng)由用戶接口和/或配置文件中的文本行指定。例如,規(guī)格可包括但不限于一個或多個IP地址(例如定義為單一或范圍)、一個或多個TCP端口號(例如定義為單一或范圍)和/或一個或多個虛擬局域網(wǎng)(VLAN)標(biāo)簽。另外,規(guī)格中的每個可為正的或負(fù)的。正規(guī)格將保持或允許數(shù)據(jù)包滿足規(guī)格,而負(fù)規(guī)格將放棄或拒絕數(shù)據(jù)包滿足規(guī)格。隱式規(guī)格也可存在。例如,完全空的或非TCP數(shù)據(jù)包可被放棄而無需建立明確規(guī)格。對于每個數(shù)據(jù)包,依序處理規(guī)格組直至其中一個匹配所考慮的數(shù)據(jù)包。一旦數(shù)據(jù)包匹配規(guī)格中的一個,就執(zhí)行指定動作(例如允許或拒絕)。被拒絕的數(shù)據(jù)包被放棄,而被允許的數(shù)據(jù)包被傳送至分析鏈中的下一個模塊。
      [0062]操作系統(tǒng)捕獲機(jī)構(gòu)或設(shè)施413 (例如在Linux操作系統(tǒng)環(huán)境中的AF_PACKET,版本2)可將在第一階過濾器411后留下的數(shù)據(jù)包拷貝至原始數(shù)據(jù)包緩沖器415中。原始數(shù)據(jù)包緩沖器415可與捕獲和分析地址空間304共享或由其訪問。
      [0063]數(shù)據(jù)包分析
      [0064]由操作系統(tǒng)捕獲機(jī)構(gòu)413置于原始緩沖器415中的數(shù)據(jù)包由駐留在捕獲和分析地址空間304中的程序或模塊處理或分析。在實(shí)施方案中,該分析的結(jié)果是在層7處(即應(yīng)用程序?qū)?的兩個網(wǎng)絡(luò)代理之間的操作的語義模型。例如,該模型可依據(jù)事件及數(shù)據(jù)庫客戶端和數(shù)據(jù)庫服務(wù)器的周圍環(huán)境描述在數(shù)據(jù)庫客戶端與數(shù)據(jù)庫服務(wù)器之間的數(shù)據(jù)庫操作。
      [0065]在圖5中所示的實(shí)施方案中,數(shù)據(jù)包在由操作系統(tǒng)捕獲機(jī)構(gòu)413置于原始數(shù)據(jù)包緩沖器415中后由捕獲和分析模塊304處理。第二階數(shù)據(jù)包過濾器501可用于放棄先前未被內(nèi)核中第一階過濾器411放棄的非TCP數(shù)據(jù)包。過濾器501還可放棄未使用或?qū)χ亟M過程有害但是不可以被第一階過濾器411輕易去除的TCP控制數(shù)據(jù)包(例如所有標(biāo)志都被設(shè)置的數(shù)據(jù)包)。值得注意的是在實(shí)施方案中,第一階過濾器411旨在用非常少的狀態(tài)或配置信息運(yùn)行,而第二階過濾器501具有對于較高層提供的寬泛實(shí)時狀態(tài)的訪問。
      [0066]可為有害的數(shù)據(jù)包的實(shí)例包括指示在TCP狀態(tài)中的異常或不期望的情況的那些。例如,所有控制位都被設(shè)置的“圣誕樹”數(shù)據(jù)包可使TCP堆疊的內(nèi)部狀態(tài)機(jī)誤譯數(shù)據(jù)包并使用其中的數(shù)據(jù)。該數(shù)據(jù)可潛在隱藏大約同時接收的適當(dāng)格式化的數(shù)據(jù)包中的攻擊。作為另一個實(shí)例,有害的數(shù)據(jù)包可包括重復(fù)先前數(shù)據(jù)包的TCP序列空間的數(shù)據(jù)包。將兩組數(shù)據(jù)都發(fā)送用于較高層的處理將使較高層看到無效數(shù)據(jù)。有害數(shù)據(jù)包的另一個實(shí)例是具有無效校驗(yàn)和或長度字段的數(shù)據(jù)包。這些可由較高層誤譯使其讀取未初始化的存儲空間(例如緩存器過載類型的攻擊)。作為又一個實(shí)例,較高層視作不感興趣的數(shù)據(jù)包可為有害的。此類數(shù)據(jù)包可通過其源/目標(biāo)IP/端口和VLAN元祖來識別,并且該識別動態(tài)改變。因?yàn)閷?shí)際上不能在每次較高層將TCP連接識別為“不感興趣的”時再編譯特定過濾器,所以過濾在可獲得動態(tài)狀態(tài)的地方完成。
      [0067]在實(shí)施方案中,以太網(wǎng)報(bào)頭解釋器502確定以太網(wǎng)報(bào)頭的末端。然后,以太網(wǎng)報(bào)頭解釋器502可放棄未標(biāo)記為IP單播或VLAN的數(shù)據(jù)包(例如根據(jù)IEEE802.1Q)。例如,多播數(shù)據(jù)包可為不感興趣的并且可以汲取處理高負(fù)載情況所需的資源,從而VLAN標(biāo)記的數(shù)據(jù)包可需要被保持使得可以從其中提取下層“單播”報(bào)頭和其它報(bào)頭以便決定是否應(yīng)將其保持。VLAN報(bào)頭解釋器503可提取VLAN標(biāo)識符作為最終模型上用于具有VLAN報(bào)頭的數(shù)據(jù)包的標(biāo)示符屬性。所提取的VLAN報(bào)頭可用于關(guān)聯(lián)數(shù)據(jù)包與TCP連接。在該情況下,TCP連接可由源IP、目標(biāo)IP源TCP端口、目標(biāo)TCP端口、VLAN標(biāo)識符和/或物理接收端口的元組識另O。使用VLAN標(biāo)識符和接收端口允許系統(tǒng)區(qū)分在可使用克隆、同等IP配置的不同的虛擬或真實(shí)網(wǎng)絡(luò)上所見的流量。VLAN報(bào)頭解釋器503還可放棄不是IP的任何VLAN標(biāo)記的數(shù)據(jù)包。
      [0068]在實(shí)施方案中,IP解釋器和重組器504(其可順應(yīng)請求注解(RFC791))從數(shù)據(jù)包提取源地址和目標(biāo)地址,并且在IP數(shù)據(jù)包緩沖器505中將分片的IP數(shù)據(jù)包的序列重組成單個IP數(shù)據(jù)包。IP數(shù)據(jù)包片段可保持在重組緩沖器510中直至接收IP數(shù)據(jù)包的任一所有其它片段或發(fā)生超時。如果發(fā)生超時,那么可放棄IP數(shù)據(jù)包的所有片段或替代地組裝為不完整的并選擇性地標(biāo)記為不完整的。在保持用于重組的數(shù)據(jù)包上的短暫超時可以確保在具有高數(shù)據(jù)包丟失的分片環(huán)境中保持檢查存儲器使用。
      [0069]在IP數(shù)據(jù)包緩沖器505中的完整的IP數(shù)據(jù)包可由TCP報(bào)頭解釋器和流重組器507 (其可順應(yīng)RFC793)處理。TCP報(bào)頭解釋器和流重組器507可將IP數(shù)據(jù)包分類成數(shù)據(jù)流每TCP連接和數(shù)據(jù)方向(例如從代理102至代理103或從代理103至代理102),并且將分類的IP數(shù)據(jù)包存儲在字節(jié)流緩沖器506中。換句話說,TCP報(bào)頭解釋器和流重組器507可為每個TCP流方向保持字節(jié)流緩沖器506。失序數(shù)據(jù)可保持在待決數(shù)據(jù)緩沖器511中。在識別了用于給定TCP流方向的有序數(shù)據(jù)時,其可附接至對應(yīng)的字節(jié)流緩沖器506。在字節(jié)流緩沖器506中的數(shù)據(jù)保持在每個特定方向的每個特定TCP會話的按序的、持續(xù)的和非重復(fù)的有效負(fù)載數(shù)據(jù)。在按序的TCP數(shù)據(jù)被增加至連接專用字節(jié)流緩沖器506時,可通知集束器(bundler)508。集束器508還在檢測到(例如從控制數(shù)據(jù)包、從流量方向的改變或從指示預(yù)定時間段在流上沒有接收到額外數(shù)據(jù)的超時)消息邊界時被通知。
      [0070]因此,層7前的處理開始于原始以太網(wǎng)數(shù)據(jù)包,并且結(jié)束于字節(jié)流緩沖器和描述會話中的顯著事件的事件流。例如,在TCP會話中的顯著事件可包括已經(jīng)將按序的TCP數(shù)據(jù)增加至對應(yīng)于TCP會話的字節(jié)流緩沖器的指示、在超時時期后已經(jīng)沒有增加額外數(shù)據(jù)的指示或者已經(jīng)接收到關(guān)閉會話的TCP控制消息的指示。字節(jié)和事件流可傳送至集束器508,其開始分析過程的層7部分。
      [0071]應(yīng)用層處理
      [0072]A.集束
      [0073]“束”是在應(yīng)用層的完整請求消息或完整響應(yīng)消息。集束器508可使用若干策略來確定束的邊界(例如使用控制數(shù)據(jù)包、數(shù)據(jù)方向或超時)并將數(shù)據(jù)束發(fā)送至協(xié)議分析模塊。例如,邊界確定方法可包括下列中的一個或多個:
      [0074]數(shù)據(jù)方向:從重組器接收的用于單個會話的有序數(shù)據(jù)將在例如請求消息與響應(yīng)消息之間的邊界處改變方向。該方向的改變可用于指示消息結(jié)束邊界。例如,方向的改變可用于指示請求消息701的結(jié)束和/或確認(rèn)消息704或響應(yīng)消息707的開始。因此,請求和響應(yīng)交互的性質(zhì)可用于在數(shù)據(jù)流中放置標(biāo)記以指示在沒有完美知識和捕獲的情況下不能另外被導(dǎo)出的消息邊界(或另外指示消息邊界)。
      [0075]重組行動超時:在消息結(jié)束時,其中沒有額外流量立即到來(例如通常為響應(yīng)),來自重組器的報(bào)時信號或計(jì)時器的期滿可用于指示消息結(jié)束邊界。例如,接著接受響應(yīng)消息707的數(shù)據(jù)包的超時的發(fā)生可用于指示響應(yīng)消息707的結(jié)束。
      [0076]重組器丟失段:如果信息段丟失,那么超時可用于指示消息邊界。丟失的消息段可表示應(yīng)從請求或響應(yīng)流的中間與有效負(fù)載一起接收的TCP數(shù)據(jù)包。不完整的消息可被標(biāo)記為不完整。在許多情況下,協(xié)議處理器仍可以從不完整的消息中提取足夠的數(shù)據(jù)來建立模型。例如,接著接受現(xiàn)有段或丟失段的期望中所得的其它事件的計(jì)時器的期滿或超時的發(fā)生可用于指示請求或響應(yīng)消息的結(jié)束。不完整的請求或響應(yīng)消息可被標(biāo)記為不完整。解釋器(例如TNS協(xié)議解釋器601和/或TTC協(xié)議解釋器602)可使用從數(shù)據(jù)包丟失所得的檢測到的間隙來確定其是否可以提取數(shù)據(jù),并且可以從其具有的數(shù)據(jù)中提取多少數(shù)據(jù)而無需接收所有數(shù)據(jù)。
      [0077]在實(shí)施方案中,集束器508給應(yīng)用協(xié)議解釋器(例如解釋器601)提供有序單向應(yīng)用程序流量和相關(guān)聯(lián)的描述性數(shù)據(jù)的束。集束器508不需要應(yīng)用協(xié)議規(guī)格的知識,并且如果丟失段或數(shù)據(jù)包,那么可向應(yīng)用協(xié)議解釋器傳送不完整的流量(即具有丟失有序數(shù)據(jù)的一個或多個區(qū)域的束)。
      [0078]圖8圖示用于集束來自由內(nèi)核301置于原始數(shù)據(jù)包緩沖器415的原始數(shù)據(jù)包的請求消息和響應(yīng)消息的過程的實(shí)例。呈現(xiàn)給分析模塊的數(shù)據(jù)包是由交換機(jī)101發(fā)送的那些。(返回參照用于外部數(shù)據(jù)包處理的實(shí)例的圖7的描述。)在圖8中所示的實(shí)例中,第一請求要求連個有效負(fù)載數(shù)據(jù)包(編號為1.1和1.2)和三個響應(yīng)數(shù)據(jù)包(編號為1.1、1.2和
      1.3)。
      [0079]在實(shí)施方案中,在圖8中所示的TCP重組階段包括由第二階數(shù)據(jù)包過濾器501、以太網(wǎng)報(bào)頭解釋器502、VLAN報(bào)頭解釋器503、IP報(bào)頭解釋器和重組器504以及TCP報(bào)頭解釋器和重組器507的處理。示出由TCP重組器507提供給集束器508的請求和響應(yīng)數(shù)據(jù)的箭頭表示字節(jié)流緩沖器506。從集束器508所得的完全請求和響應(yīng)數(shù)據(jù)包括束描述符和緩沖器509。束描述符和緩沖器509給層7協(xié)議解釋(例如在Oracle?專用環(huán)境中的TNS協(xié)議解釋器601)的第一階段提供集束器508的輸出。
      [0080]在圖8中所示的消息流程中,接收傳遞自網(wǎng)絡(luò)代理102的請求的第一請求段801和傳遞自網(wǎng)絡(luò)代理103的確認(rèn)(ACK)的第一段802。重組將第一段801的有效負(fù)載呈現(xiàn)為到集束器508的請求數(shù)據(jù)803的流。這種提供的第一段801的有效負(fù)載可在接受ACK802之前提供,或在接受ACK802之后提供,這指示第一請求段801由網(wǎng)絡(luò)代理103成功接收。另外,ACK消息可由重組器使用以短接超時過程。例如,如果ACK消息被看見用于沒有觀察到的有效負(fù)載數(shù)據(jù)包,有可能丟失的數(shù)據(jù)包在捕獲路徑中丟失。在任一情況下,當(dāng)集束器508接收第一請求數(shù)據(jù)803時,還沒有指示消息是完整的。因此,集束器508將第一請求數(shù)據(jù)803加入隊(duì)列。
      [0081]然后,重組器接收來自網(wǎng)絡(luò)代理102的請求的第二和最終請求段804以及來自網(wǎng)絡(luò)代理103的對應(yīng)的ACK805。重組器將該第二請求段804有序附接至道集束器508的當(dāng)前的請求數(shù)據(jù)流,并且給集束器508提供第二請求段804的有效負(fù)載數(shù)據(jù)806。由于集束器508仍沒有消息是完整的指示,所以集束器508將第二請求數(shù)據(jù)806加入隊(duì)列。換句話說,集束器508將第二請求數(shù)據(jù)806附接至第一請求數(shù)據(jù)803。
      [0082]在所示的實(shí)例中,網(wǎng)絡(luò)代理103為來自網(wǎng)絡(luò)代理102的請求形成三段響應(yīng)。來自網(wǎng)絡(luò)代理103的響應(yīng)的第一段807和來自網(wǎng)絡(luò)代理102的對應(yīng)的ACK808被接收。重組器給集束器508提供第一響應(yīng)段807的有效負(fù)載數(shù)據(jù)809。集束器508檢測流量的方向已經(jīng)改變,并且確定其整理的先前的消息束現(xiàn)在完成。因此,集束器508向?qū)?協(xié)議解釋器發(fā)送該消息束810 (即包括請求數(shù)據(jù)803和806的從網(wǎng)絡(luò)代理102到網(wǎng)絡(luò)代理103的完全請求)用于進(jìn)一步分析。
      [0083]從網(wǎng)絡(luò)代理103到網(wǎng)絡(luò)代理102的響應(yīng)的額外的兩個段811和814,以及對應(yīng)的ACK消息812和815倍接收。第二響應(yīng)段811和第三響應(yīng)段814分別被處理成數(shù)據(jù)流813和816,并且提供給集束器508。集束器508管理第一響應(yīng)數(shù)據(jù)813和第二響應(yīng)數(shù)據(jù)816 (即附接數(shù)據(jù)813和816至數(shù)據(jù)809),但是不將其傳送至層7協(xié)議解釋器。
      [0084]接下來,接收從網(wǎng)絡(luò)代理102到網(wǎng)絡(luò)代理103的第二、新的請求的第一段817以及對應(yīng)的ACK818。重組器向集束器508發(fā)送來自請求段817的請求數(shù)據(jù)819。集束器508檢測數(shù)據(jù)傳輸?shù)姆较蛞呀?jīng)改變,并且向?qū)?協(xié)議解釋器發(fā)出對應(yīng)于第一請求的完整響應(yīng)820 (即包括響應(yīng)數(shù)據(jù)809、813和816)。
      [0085]B.應(yīng)用協(xié)議解碼
      [0086]表示請求和響應(yīng)的束509由較高級別協(xié)議處理來處理以建立在兩個網(wǎng)絡(luò)代理102與103之間發(fā)生的操作的語義模型。雖然該較高級別協(xié)議處理在本文中有時可在Oracle?客戶端-服務(wù)器連接的環(huán)境中描述,但是應(yīng)理解的是該描述僅僅是說明性的。本文公開的系統(tǒng)和方法可用于或通用于其它應(yīng)用程序以及環(huán)境。
      [0087]在專用于Oracle?客戶端-服務(wù)器連接的實(shí)例實(shí)施方案中,可提供交易網(wǎng)絡(luò)服務(wù)(TNS)協(xié)議解釋器601以解包程序調(diào)用和響應(yīng)有效負(fù)載并且異步來自束509中發(fā)現(xiàn)的TNS包裝結(jié)構(gòu)的消息。TNS是由Oracle?客戶端-服務(wù)器協(xié)議使用的多路復(fù)用和異步消息包裝協(xié)議。應(yīng)理解的是可使用替代或其它解釋器用于其它協(xié)議。例如,Microsoft? SQL使用表格格式數(shù)據(jù)流(TDS)和對稱多線程處理(SMP)包裝協(xié)議,其可類似于TNS歸納。LDAP、MySQL和Postgresql每個使用報(bào)頭包裝協(xié)議。另外,HTTP是用于可擴(kuò)展標(biāo)示語言(XML)流量或超文本標(biāo)示語言(HTML)流量的報(bào)頭/包裝協(xié)議。解釋器可以被構(gòu)建用于這些協(xié)議中的任何一個或多個并且用作解釋器601的替代物或附加物。
      [0088]另外,在實(shí)施方案中,兩項(xiàng)任務(wù)共同(TTC)協(xié)議解碼器或解釋器602可從每個請求束河響應(yīng)束提取遠(yuǎn)程程序動詞、參數(shù)和所得有效負(fù)載。TTC協(xié)議提供在客戶端和服務(wù)器上的不同字符集或格式之間變換的字符集和數(shù)據(jù)類型。
      [0089]現(xiàn)在將參考圖9描述協(xié)議解釋器匹配的協(xié)議模板(例如TTC協(xié)議解釋器602匹配的TTC協(xié)議模板)。由協(xié)議解釋器處理的消息由元素901 (例如RPC動詞、RPC參數(shù)、RPC結(jié)果等)的序列組成,這由解釋器解碼成數(shù)據(jù)形式910有助于靜安里模型。從元素901到數(shù)據(jù)910的轉(zhuǎn)換由可專用于每個元素的屬性908和/或909組控制。每個消息可含有不同數(shù)量的元素。例如,圖9圖示四個元素902,903,904和905。
      [0090]屬性模板的庫906可由協(xié)議解釋器(例如TNS協(xié)議解釋器601和/或TTC協(xié)議解釋器602)生成用于每個新協(xié)議會話。庫906可使用所考慮的協(xié)議的預(yù)編碼的知識而生成,并且可被選作屬性模板的較大庫(例如可用于所有會話的一個或多個協(xié)議)的子集。對于新發(fā)現(xiàn)或識別的會話,模板庫906最初可由匹配寬泛的協(xié)議消息組的相對小的模板集填充并且指代跟特定的模板組。在屬性模板庫中的多個模板可匹配任何給定消息。因此,在實(shí)施方案中,可在庫中對模板排序使得協(xié)議解釋器在較不確切的匹配之前檢查更確切的那些。更確切的匹配比較不確切的匹配將更全面地描述消息。
      [0091]在實(shí)施方案中,模板提供所協(xié)商的數(shù)據(jù)類型、RPC選項(xiàng)和客戶端-服務(wù)器架構(gòu)的特性描述。這些特性描述可全部用于解碼特定RPC的各自字段。這在協(xié)議未被完全指定或保密時或在觀察不到用于會話的初始協(xié)商時可以是特別有用的。除此之外,模板匹配可以用于確定連接(例如TCP連接)的哪一側(cè)是客戶端和連接的哪一側(cè)是服務(wù)器、何時觀察不到通信的開始。
      [0092]在庫906中的每個模板含有一個或多個屬性的列表,其可用于消息的兀素(例如RPC請求或響應(yīng)消息)。例如,匹配實(shí)例消息901的模板將施加至消息901的元素902、903、904和905。匹配模板可以用于將消息901解碼成可由模型生成器604使用的數(shù)據(jù)910。在庫906中的每個模板還可含有額外模板的一個或多個參考或額外模板的列表的參考。
      [0093]在實(shí)施方案中,模板可包括一組動態(tài)運(yùn)行時間類別(例如用C++代碼編寫的)。模板或“模板參數(shù)(marshaller) ”被配置成從流中拉出數(shù)據(jù)的特定圖案并且構(gòu)成有效數(shù)據(jù)。一個實(shí)例是字符串模板,其被配置成識別由一個字節(jié)長度字段接著最后的數(shù)據(jù)塊具有零字節(jié)長度字段的一個或多個數(shù)據(jù)塊的字符串。此類模塊可以通過試圖使用模板將字符串串行化來測試。例如,如果在讀取字符串時解釋器終止試圖讀過束中可用數(shù)據(jù)的末端,那么模板匹配失敗。然而,應(yīng)理解的是這僅僅是一個說明性的實(shí)例。其它模板可因?yàn)楦唵蔚脑蚱ヅ涫?。例如,如果從不希望將高位以?shù)字格式設(shè)置在特定字節(jié)位置中,那么可確定如果在特定字節(jié)位置檢測到高位則被配置成檢測數(shù)字格式的數(shù)字的模板匹配失敗。
      [0094]一個或多個可觀察的屬性908 (例如RPC字段類型和常見標(biāo)記)可由元素的直接測試來確定。模板907可通過匹配一個或多個其屬性與可觀察的屬性908來選擇。換句話說,可比較可觀察的屬性908與庫906中的一個或多個模板的屬性以識別來自庫906的最佳匹配模板907。一旦已經(jīng)基于從元素902觀察的屬性識別匹配模板907,就可使用模板907推斷其它屬性909。
      [0095]圖10圖示可由協(xié)議解釋器(例如TNS協(xié)議解釋器601和/或TTC協(xié)議解釋器602)使用以從模板庫906找到匹配模板907并且將消息901解碼成一組有用數(shù)據(jù)910的過程的實(shí)施方案。在處理消息901的開始1001處,在庫906中的所有模板在被考慮的模板組中。協(xié)議解釋器重復(fù)穿過在庫906中的模板并且將非匹配模板從進(jìn)一步考慮中去除。因此,在步驟1002中,確定是否留有用于考慮的任何模板。如果是,在步驟1003中選擇先前未考慮的模板。
      [0096]每個模板包括一組可觀察的屬性。可觀察的屬性可為來自消息901 (例如來自元素902)的明顯的或可確定的或者已知關(guān)于消息901的那些屬性。隨著在步驟1003中選擇每個新的模板用于考慮,可將該模板的每個屬性置于針對消息901檢查或觀察的屬性組中。這些屬性可包括推斷的屬性,即還沒有從消息901確定的或先前已知關(guān)于消息901而無需首先識別包括推斷的屬性的模板的屬性。在步驟1004,確定是否留有要檢查的任何屬性。如果是,在步驟1005選擇未檢查的屬性。
      [0097]模板指示模板內(nèi)的每個屬性施用于消息的哪一個元素。在步驟1006處,在步驟1005中所選擇的屬性施用于的元素的開始位于消息901中。元素的開始可通過使用來自所選擇的模板的先前驗(yàn)證的可觀察的或推斷的屬性來定位。例如,先前元素的尺寸可為推斷的活觀察的屬性,并且該尺寸可用于定位消息中的下一個元素。
      [0098]在步驟1007中,針對定位的元素(例如元素902)檢查所選擇的屬性(例如屬性911)。如果該檢查成功(例如定位的元素滿足或?qū)?yīng)于所選擇的屬性),那么選擇和檢查再所選擇的模板中的下一個可觀察的屬性。步驟1004、1005、1006和1007的過程可重復(fù)直至已經(jīng)檢查所有可觀察的屬性。
      [0099]如果在步驟1007中針對消息901的元素的屬性檢查失敗,那么過程可返回至步驟1002。該過程可重復(fù)直至已經(jīng)檢查再會話的庫906中的所有模板,和/或直至另外確定沒有必須檢查的模板。例如,如果元素不存在(例如由于數(shù)據(jù)包丟失,或由于模板不是消息901的適當(dāng)匹配)或如果元素不適合屬性的形式(例如數(shù)據(jù)類型或值范圍),那么檢查可為不成功的。此外,如果沒有找到針對消息901成功檢查的庫模板,那么可在步驟1008中將消息901標(biāo)記為完全不可解碼的。另一方面,如果在模板中的所有可觀察的和/或推斷的屬性針對消息901成功檢查,那么在步驟1009中將模板增加至一組匹配的模板或?qū)⒛0宓膶傩栽黾又烈唤M屬性。
      [0100]如果在步驟1009中基于所匹配的屬性選擇模板用于匹配模板組,那么在步驟1010中確定所選擇的模板是否含有參考額外的一個或多個模板的組的推斷的屬性。例如,該額外的一個或多個模板的組可包括更特定的模板。在步驟1011中將額外的一個或多個模板的組增加至模板庫906用于會話,并且消息901的處理在步驟1002中基于補(bǔ)充模板庫906繼續(xù)。
      [0101]一旦已經(jīng)相對于消息901的元素考慮了在模板庫906中的所有模板包括在步驟1011中增加的任何參考的模板,就在步驟1012中使用一個或多個匹配的模板解碼消息901。在步驟1012中,可通過施加從所選擇的模板907到消息901的元素(例如元素902、903,904和905)的所有屬性(例如可觀察的屬性908和推斷的屬性909)將消息901解碼成數(shù)據(jù)910。以此方式,在消息901中找到的可觀察的屬性908的圖案通過匹配可觀察的屬性908與模板庫906中的模板(可觀察的和推斷的屬性都比較)得到推斷屬性909的組的識別。
      [0102]所有這些屬性,即可觀察的屬性908和推斷的屬性909,在步驟1012中一起施加至消息901以在步驟1013中產(chǎn)生解碼的消息。例如,在步驟1012中用于解碼消息901的元素902的過程包括將組合的可觀察的屬性(例如屬性911和912)和推斷的屬性(例如屬性913)施加至元素902以產(chǎn)生數(shù)據(jù)914。消息901的其它元素(即元素903、904和905)可以類似方式解碼。
      [0103]屬性的每個類型可表示或指示其自身形式的轉(zhuǎn)換。作為說明性、非限制性實(shí)例,在Oracle? TTC協(xié)議解釋的環(huán)境中,可應(yīng)用的屬性的一些實(shí)例包括基本類型的數(shù)據(jù)(例如字符串、數(shù)字、日期、間隔等)、值的可接受的范圍、特定值或位模式(例如操作代碼)、值的動態(tài)范圍(例如需要多少位來表示全范圍的值)、可在消息中包括多少填充位及其可能的值和位置、值的編碼(例如字節(jié)順序、字符集、位寬度等)和/或值的內(nèi)部結(jié)構(gòu)(例如具有單個長度的簡單字符陣列、在每個字符之間具有長度字段的字符組等)。
      [0104]消息的一些元素可含有不感興趣的大量數(shù)據(jù)。因此,在實(shí)施方案中,在步驟1012中從元素到數(shù)據(jù)的轉(zhuǎn)換(例如從元素902到數(shù)據(jù)914)可包括省略或忽略一些或所有實(shí)際數(shù)據(jù),僅留下數(shù)據(jù)的描述(例如所選擇的屬性)用于建立模型。集束機(jī)構(gòu)(在本文別處更詳細(xì)描述)確保高級別消息邊界是可辨別的,即使這樣跳過或忽略了消息的部分。
      [0105]在實(shí)施方案中,用于解碼消息的模板庫906持續(xù)以每個會話為基礎(chǔ)。這允許在會話中的稍早的消息通知會話中的稍后的消息解碼。例如,該特征在解碼初始連接設(shè)置消息丟失的會話中的消息中可為特別重要的。
      [0106]雖然在圖6中所示的實(shí)施方案中使用TNS協(xié)議解釋器601和TTC協(xié)議解釋其602,但是應(yīng)理解的是可根據(jù)被解釋的具體協(xié)議使用不同的解釋器(例如用于不是TNS和/或TTC的協(xié)議)附加至或取代所示的解釋器和/或可使用不同數(shù)量的解釋器(例如一個、兩個、三個、四個等)。
      [0107]在實(shí)施方案中,可將從TNS協(xié)議解釋器601和/或TTC協(xié)議解釋器602或者在其它的情況下從一個或多個其它解釋器提取的數(shù)據(jù)傳送至操作過濾器603。操作過濾器603可使用應(yīng)用程序級別語義數(shù)據(jù)來過濾不感興趣的操作。感興趣的操作或不感興趣的操作可由用戶定義或配置。作為說明性的實(shí)例,應(yīng)用程序級別語義數(shù)據(jù)可包括數(shù)據(jù)庫的服務(wù)名稱。例如,稱為CRMPR0D和CRMDEV的兩個數(shù)據(jù)庫實(shí)例可在相同的服務(wù)器上呈現(xiàn)或另外可從相同的服務(wù)器獲得并使用相同的TCP端口(例如端口 1521)用于RPC流量。用戶可指定操作僅包括感興趣的CRMPR0D或操作包括不感興趣的CRMDEV。在任一情況下,操作過濾器603可在模型生成器604分析之前考慮過濾包括CRMDEV的操作。
      [0108]在引致模型生成器604的任何解釋器或過濾器階段(例如階段601、602和/或603),處理會話中的束或束組可被延遲,這留下成隊(duì)列的束直至接收用于會話的新束或事件。該機(jī)構(gòu)可在來自隨后束的信息可被任何階段或模塊需要以解釋稍早的束時使用。例如,TTC協(xié)議解釋器602可使用該排隊(duì)機(jī)構(gòu)來延遲會話中不可解碼的消息的處理直至其模板庫更精確或發(fā)達(dá)。另外,模型生成器604可使用該排隊(duì)機(jī)構(gòu)來保持束同時試圖確定連接的哪一側(cè)是服務(wù)器和連接的哪一側(cè)是客戶端。
      [0109]語義流暈?zāi)P?br> [0110]再次參照圖6,模型生成器604使用由一個或多個協(xié)議解釋器產(chǎn)生的數(shù)據(jù)和事件流(例如TNS協(xié)議解釋器601和TTC協(xié)議解釋器602)-并且在實(shí)施方案中由操作過濾器603過濾-以建立在網(wǎng)絡(luò)代理102與網(wǎng)絡(luò)代理103之間發(fā)生的操作的抽象語義流量模型605。模型605可包括關(guān)于單個會話(例如數(shù)據(jù)庫會話)的動詞和支持?jǐn)?shù)據(jù)序列。模型605保持用于每個會話和業(yè)務(wù)的狀態(tài)的集合,并且描述施加至該狀態(tài)的操作序列。
      [0111]其它模型,包括多個層的模型,可例如通過檢測器108從語義流量模型605建立。這些較高級別模型的細(xì)節(jié)可專用于被建立以使用模型605的數(shù)據(jù)的分析引擎,并且可基于將使用模型605的應(yīng)用程序的目的變化。換句話說,不同的用戶可根據(jù)手頭的任務(wù)建立不同的較高級別模型。例如,對于安全性應(yīng)用,較高級別模型可包括結(jié)構(gòu)化的和參數(shù)的數(shù)據(jù),其描述應(yīng)用程序的正常行為并暴露可表示攻擊的無關(guān)操作。作為另一個實(shí)例,對于性能應(yīng)用,較高級別模型可包括描述動詞及其參數(shù)的定時和尺寸的數(shù)據(jù)。作為又一個實(shí)例,數(shù)據(jù)庫防火墻可建立描述SQL語句及其周圍語義的執(zhí)行的較高級別模型。web應(yīng)用防火墻(WAF)或類似WAF的系統(tǒng)可從模型605建立示出統(tǒng)一資源標(biāo)識符(URI)和POST參數(shù)的較高級別模型。
      [0112]模型605可在主存儲器205和/或緩存存儲器206中建立,并且由文件系統(tǒng)驅(qū)動器310和存儲控制器驅(qū)動器311 (例如經(jīng)由存儲器控制器210、總線控制器203和存儲控制器207)寫至永久存儲裝置209。具體來說,在實(shí)施方案中,模型605的數(shù)據(jù)(例如事件和元數(shù)據(jù))可排隊(duì)至模型記錄緩沖器606,這可被寫至永久存儲裝置209。
      [0113]早模型記錄緩沖器606中排隊(duì)的模型605的數(shù)據(jù)可包括輸入API的一側(cè)的饋送以由特定較高級別應(yīng)用使用(例如檢測器108),例如提供API以構(gòu)建較高級別模型。例如,對于安全性應(yīng)用,在監(jiān)視會話中使用的RPC和在RPC中使用的參數(shù)、和/或所使用的SQL操作和SQL操作修改的行和列可經(jīng)由模型記錄緩沖器606從模型605經(jīng)由安全性應(yīng)用定義的API提供給安全性應(yīng)用。對于性能應(yīng)用,在監(jiān)視會話中使用的操作的類型可經(jīng)由模型記錄緩沖器606從模型605經(jīng)由性能應(yīng)用定義的API提供給性能應(yīng)用?;蛘?,應(yīng)理解的是捕獲和分析模塊304可定義API和一個或多個應(yīng)用(例如可包括安全性應(yīng)用、性能應(yīng)用和/或其它類型應(yīng)用的檢測器108)、可經(jīng)由捕獲和分析模塊304定義的API訪問模型605的數(shù)據(jù)(例如存儲在模型記錄緩沖器606中)。
      [0114]
      [0115]所公開的系統(tǒng)和方法可用于會話同步的任何應(yīng)用程序級別協(xié)議。此類協(xié)議包括但不限于 Oracle?、Microsoft? SQL、Sybase?、IBM? DB2、PostgreSQL、MySQL、MongoDB 和其它數(shù)據(jù)庫使用的數(shù)據(jù)庫客戶端-服務(wù)器協(xié)議。此類協(xié)議還包括非數(shù)據(jù)庫服務(wù)器協(xié)議,諸如HTTP、HTTPS、網(wǎng)絡(luò)文件系統(tǒng)(NFS)、蘋果文件協(xié)議(AFP)、服務(wù)器信息塊(SMB)、域名系統(tǒng)(DNS)、簡單郵件傳輸協(xié)議(SMTP)、互聯(lián)網(wǎng)信息訪問協(xié)議(IMAP)、郵局協(xié)議(POP)和自定義或?qū)S袘?yīng)用程序協(xié)議。另外,應(yīng)用程序協(xié)議可通過傳輸機(jī)構(gòu)運(yùn)載除了通過IP版本4 (IPv4)的TCP,這包括但不限于通過IPv4的用戶數(shù)據(jù)包協(xié)議(UDP)、通過IP版本6 (IPv6)的UDP、通過IPv6的TCP、通過IPv4的遠(yuǎn)程桌面協(xié)議(RDP)、互聯(lián)網(wǎng)數(shù)據(jù)包交換/按序數(shù)據(jù)包交換(IPX/SPX)、通過IPv4的互聯(lián)網(wǎng)控制報(bào)文協(xié)議(ICMP)和通過IPv6的ICMP。協(xié)議可以任何組合被運(yùn)載通過布置在非非統(tǒng)一內(nèi)存訪問(NUMA)和統(tǒng)一內(nèi)存訪問(UMA)架構(gòu)上的層2橋接器、網(wǎng)絡(luò)地址交換(NAT)裝置、虛擬專用網(wǎng)絡(luò)(VPN)通道、VLAN技術(shù)和存儲器中進(jìn)程間通信(IPC)。
      [0116]所公開的系統(tǒng)和方法還可用于任何基于數(shù)據(jù)包或基于流的物理層,這包括在相同系統(tǒng)中的此類層的任意組合。這些包括通過任何支持的媒介的物理傳輸,這包括但不限于光纖分布式數(shù)據(jù)接口(FDDI)、令牌環(huán)、100兆位以太網(wǎng)、通過同軸電纜的10兆位以太網(wǎng)、10千兆位以太網(wǎng)和數(shù)字信號I(DSl)/數(shù)字信號3(DS3)信號傳遞。
      [0117]所公開的系統(tǒng)和方法可利用可以制造在網(wǎng)絡(luò)代理之間的流量的拷貝并且將這些拷貝提供給所公開的捕獲和分析裝置107或模塊304的任何捕獲機(jī)構(gòu)。此類捕獲機(jī)構(gòu)包括但不限于電平分流器、MII代理分流器、在網(wǎng)絡(luò)代理之間路由流量并透明捕獲所路由的流量的NAT裝置、可為虛擬機(jī)(VM)管理器或管理程序的部分的虛擬SPAN或鏡像設(shè)施、在任何涉及的網(wǎng)絡(luò)代理上運(yùn)行的TCP或IPC代理和先前從存儲裝置捕獲的流量(例如記錄)的回放
      >j-U ρ?α裝直。
      [0118]所公開的系統(tǒng)和方法不受限于為一對網(wǎng)絡(luò)代理分析流量和建立模型。相反,該系統(tǒng)和方法能夠同時監(jiān)視許多對網(wǎng)絡(luò)代理之間的許多會話。此外,可同時從多個捕獲機(jī)構(gòu)實(shí)時或從回放中捕獲流量。該系統(tǒng)和方法可基于傳輸?shù)刂罚约爸T如MAC地址、IP地址、TCP端口編號、VLAN標(biāo)簽、應(yīng)用程序?qū)犹囟?biāo)識符(例如服務(wù)名稱、用于Oracle?協(xié)議的SID等)和/或物理入口端口標(biāo)簽的其它屬性,在網(wǎng)絡(luò)代理之間進(jìn)行區(qū)分。
      [0119]應(yīng)理解的是捕獲和分析裝置107和/或鏡像分流器可完全在VM環(huán)境中執(zhí)行的軟件中實(shí)施。該系統(tǒng)的部件-包括但不限于捕獲裝置或機(jī)構(gòu)-可以分布的方式在多個虛擬或物理設(shè)備和/或操作系統(tǒng)過程或驅(qū)動器上運(yùn)行。此外,該系統(tǒng)和方法可在支持基本網(wǎng)絡(luò)和文件系統(tǒng)能力的任何操作系統(tǒng)上實(shí)施。或者,該系統(tǒng)和方法可在物理或虛擬裝置上實(shí)施而無需操作系統(tǒng)(例如將所需的硬件驅(qū)動器并入應(yīng)用程序,這體現(xiàn)了系統(tǒng)和方法本身)。
      [0120]不同的硬件架構(gòu)可用作鏡像分流器或捕獲和分析裝置107的基礎(chǔ)。這些架構(gòu)包括但不限于多CPU核系統(tǒng)和支持系統(tǒng)的性能要求的任何支持的網(wǎng)絡(luò)或存儲外圍設(shè)備和控制器。任何存儲的程序或CPU架構(gòu)(例如哈佛CPU架構(gòu))可支持所公開的系統(tǒng)和方法。
      [0121]本文所述的重組和協(xié)議解碼或解釋系統(tǒng)和方法可用與所述不同的分層來實(shí)施。例如,以太網(wǎng)、VLAN、IP和/或TCP重組模塊可為單個模塊或?qū)嶓w,并且可不支持諸如IP片段或VLAN報(bào)頭分析的項(xiàng)目。重組器可使用控制標(biāo)志(例如ACK、“完成”(FIN)、“復(fù)位”(RST)等)以幫助確定消息邊界和其它異常條件。
      [0122]語義模型605可存儲在不同存儲架構(gòu)的永久存儲上。此類存儲架構(gòu)包括但不限于網(wǎng)絡(luò)文件系統(tǒng)、存儲區(qū)域網(wǎng)(SAN)存儲、獨(dú)立磁盤冗余陣列(RAID)存儲和/或閃速存儲器?;蛘?,模型605可完全不存儲在永久存儲中。相反,模型605可由終極、目標(biāo)應(yīng)用程序消耗(例如經(jīng)由API)并且被放棄。
      [0123]應(yīng)理解的是語義模型605的目標(biāo)應(yīng)用程序可使用模型605的流量以執(zhí)行除了本文別處所論述的那些任務(wù)之外的其它任務(wù)。此類任務(wù)可包括但不限于通知塊代理何時保持和何時釋放流量流過捕獲和分析裝置107使其類似于入侵防御系統(tǒng)(IPS),并且用作應(yīng)用程序級別代理并修改或局部滿足用于性能或安全性目的的操作(例如實(shí)施數(shù)據(jù)庫加速計(jì))。
      [0124]所公開的系統(tǒng)和方法可處理極端的情況。此類情況可包括但不限于由于所使用的捕獲架構(gòu)接收到的完美的多個流量拷貝、在一對網(wǎng)絡(luò)代理之間完全丟失一個方向上的流量以及新版本的應(yīng)用程序協(xié)議完全未被指定。
      [0125]在實(shí)施方案中,可存在講數(shù)據(jù)、通知、指示或其它信息“反向”推送回分析鏈的通信信道。此類信道可包括但不限于從TTC層到TNS層關(guān)于消息邊界的通知或異步信號通知、和/或從TNS協(xié)議解釋器601到集束器508和/或重組器507和/或506以消除確定消息結(jié)束所需的超時的消息(例如到集束器508或者重組器507或506的消息包括已經(jīng)確定消息結(jié)束的指示)。此類信道可被實(shí)施以允許模塊(例如解釋器、過濾器等)進(jìn)一步沿著分析鏈“監(jiān)看”數(shù)據(jù)并且協(xié)助分析鏈中較早的模塊。例如,由分析鏈中稍后的模塊提供給較早的模塊的該協(xié)助可包括確定消息邊界。
      [0126]在實(shí)施方案中,在分析期間,集束器508和/或重組器506和507中的一個或兩個都可省略對于應(yīng)用程序?qū)訜o用的數(shù)據(jù)塊。所省略的數(shù)據(jù)在一些實(shí)例中可為明顯的,并且可包括但不限于大量原始數(shù)據(jù)和結(jié)合的參數(shù)。例如,可省略或截取手頭的應(yīng)用程序不需要的所有數(shù)據(jù)。所省了的數(shù)據(jù)可為預(yù)定的(例如通過存儲在配置文件中的用戶定義的參數(shù))。例如,對于不處理返回的行數(shù)據(jù)的內(nèi)容的數(shù)據(jù)庫防火墻,應(yīng)用程序可省略所得行有效負(fù)載和/或所有參數(shù)數(shù)據(jù)。
      [0127]在實(shí)施方案中,集束器508和/或重組器506和507中的一個或兩個都可實(shí)施流式協(xié)議使得數(shù)據(jù)可被傳送至協(xié)議解釋器而無需緩沖數(shù)據(jù)或完全緩沖數(shù)據(jù)。
      [0128]用于協(xié)議消息元素的屬性,諸如TTC協(xié)議消息元素,可直接從消息固有的線索或從其它線索推斷。這些其它線索可包括但不限于包括在交互中的網(wǎng)絡(luò)代理的已知架構(gòu)和/或版本編號。例如,這些架構(gòu)和/或版本編號可經(jīng)由來自先前消息或會話的配置或緩存數(shù)據(jù)得知。
      [0129]在實(shí)施方案中,搜索屬性元素、諸如TTC屬性元素,可被省略用于一個或多個元素的子集。例如,在實(shí)施方案中,如果從連接建立協(xié)議的稍早部分提供的線索指示某些模板是不需要的,那么其可應(yīng)為性能的原因被從考慮中排除。作為說明性實(shí)例,某些RPC結(jié)構(gòu)不可在給定版本的Oracle?客戶端庫之后使用。因此,如果連接建立確定正在使用較新的庫版本,那么解釋器可以避免試圖匹配僅僅支持較老的庫版本的任何模板。另外,可緩存搜索屬性元素的結(jié)構(gòu)以改進(jìn)性能。
      [0130]每個會話模板庫906的產(chǎn)生可由相關(guān)會話的結(jié)果通知。例如,如果選擇模板庫用于從客戶端A到服務(wù)器B的第一連接,該先前選擇的庫可再用作從客戶端A到服務(wù)器B的第二和隨后連接的起始點(diǎn),因?yàn)榇嬖诤艽罂赡艿诙B接與第一連接來自相同的應(yīng)用程序。此外,可基于即時協(xié)議消息之外的屬性,諸如TNS協(xié)議報(bào)頭、配置輸入(例如由用戶手動定義)、IP報(bào)頭字段、行或結(jié)合有效負(fù)載數(shù)據(jù)、TCP報(bào)頭字段、傳輸層報(bào)頭字段等,將協(xié)議屬性模板不包括或包括在庫906中。
      [0131 ] 在實(shí)施方案中,除了本文別處所述的方法之外的額外或替代的啟發(fā)式方法可用于確定用于給定消息的數(shù)據(jù)元素的屬性中的至少一些和/或在特定會話范圍中的一組模板。例如,從會話設(shè)置協(xié)商獲取的信息可用于直接確定一個或多個屬性。例如,用于給定服務(wù)器版本編號或客戶端庫版本和服務(wù)器類型的模板的“書冊”可用于提供模板庫搜索的起始點(diǎn)。搜索模板的所有可能組合的時間可以是明顯的。因此,減少搜索空間可以是有價(jià)值的,例如以改進(jìn)性能。另外,所公開的集束機(jī)構(gòu)可為通用的并用于除了本文別處所述的目的的其它目的。例如,集束機(jī)構(gòu)可用于確定TNS標(biāo)記消息的語義、確定在模型生成器中的性能相關(guān)的統(tǒng)計(jì)、解碼行數(shù)據(jù)、描述行數(shù)據(jù)特性等。
      [0132]實(shí)例處理裝置
      [0133]圖11是圖示可與本文所述的各種實(shí)施方案結(jié)合使用的實(shí)例有線或無線系統(tǒng)550的框圖。例如,系統(tǒng)550可用作或結(jié)合上文所述的一個或多個機(jī)構(gòu)或過程,并且可表示捕獲和分析裝置107、網(wǎng)絡(luò)代理102和/或103、網(wǎng)絡(luò)交換機(jī)101和/或本文所述的其它裝置的部件。系統(tǒng)550可以是服務(wù)器或任何常規(guī)個人計(jì)算機(jī)、或者能夠有線或無線數(shù)據(jù)通信的任何其它處理器啟用的裝置。如對于本領(lǐng)域的那些技術(shù)人員來說將是明顯的,還可使用其它計(jì)算機(jī)系哦太難搞和/或架構(gòu)。
      [0134]系統(tǒng)550優(yōu)選地包括一個或多個處理器,諸如處理器560。額外的處理器可被提供,諸如管理輸入/輸出的輔助處理器、執(zhí)行浮點(diǎn)數(shù)學(xué)運(yùn)算的輔助處理器、具有適合快速執(zhí)行信號處理算法的架構(gòu)的專用微處理器(例如數(shù)字信號處理器)、從屬于主處理系統(tǒng)的從處理器(例如后端處理器)、用于多處理器系統(tǒng)的額外的微處理器或控制器或協(xié)處理器。此類輔助處理器可謂離散的處理器或可與處理器560集成??膳c系統(tǒng)550 —起使用的處理器的實(shí)例包括但不限于Pentium?處理器、Core ι7?處理器和Xeon?處理器,所有這些可從加利福尼亞圣克拉拉的英特爾公司獲得。
      [0135]處理器560優(yōu)選連接至通信總線555。通信總線555可包括用于促進(jìn)在系統(tǒng)550的存儲與其它外圍部件之間的信息傳送的數(shù)據(jù)信道。通信總線555還可提供用于與處理器560通信的一組信號、包括數(shù)據(jù)總線、地址總線和控制總線(未示出)。通信總線555可包括任何標(biāo)準(zhǔn)或非標(biāo)準(zhǔn)總線架構(gòu),諸如例如符合工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)的總線架構(gòu)、擴(kuò)展工業(yè)標(biāo)準(zhǔn)架構(gòu)(EISA)、微通道架構(gòu)(MCA)、外圍設(shè)備互連(PCI)本地總線、或由電器和電子工程師協(xié)會(IEEE)公布的標(biāo)準(zhǔn)包括IEEE488通用接口總線(GPIB)、IEEE696/S-100及其類似物。
      [0136]系統(tǒng)550優(yōu)選包括主存儲器565并且還可包括次存儲器570。主存儲器565提供存儲的指令和數(shù)據(jù)用于在處理器560上執(zhí)行的程序,諸如上文所論述的一個或多個功能和/或模塊。應(yīng)理解的是存儲在存儲器中并有處理器560執(zhí)行的程序可根據(jù)任何適合的語言(包括但不限于 C/C++、Java、JavaScript、Perl、Visual Basic、.NET 及其類似物)來編寫和/或編譯。主存儲器565通常為基于半導(dǎo)體的存儲器,諸如動態(tài)隨機(jī)訪問存儲器(DRAM)和/或固態(tài)隨機(jī)訪問存儲器(SRAM)。其它基于半導(dǎo)體的存儲器類型包括,例如同步動態(tài)隨機(jī)訪問存儲器(SDRAM)、存儲器總線式動態(tài)隨機(jī)訪問存儲器(RDRAM)、鐵電隨機(jī)訪問存儲器(FRAM)及其類似物,這包括只讀存儲器(ROM)。
      [0137]次存儲器570可選地包括內(nèi)部存儲器575和/或可移動介質(zhì)580,例如軟盤驅(qū)動器、磁盤驅(qū)動器、光盤(⑶)驅(qū)動器、數(shù)字通用光盤(DVD)驅(qū)動器、其它光學(xué)驅(qū)動器、閃存驅(qū)動器等??梢苿咏橘|(zhì)580以熟知的方式讀取和/或?qū)懭?。例如,可移動存儲介質(zhì)580可為軟盤、磁帶、⑶、DVD、SD卡等。
      [0138]可移動存儲介質(zhì)580是非瞬時性計(jì)算機(jī)可讀介質(zhì),其上具有存儲的計(jì)算機(jī)可執(zhí)行代碼(即軟件)和/或數(shù)據(jù)。存儲在可移動存儲介質(zhì)580上的計(jì)算機(jī)軟件或數(shù)據(jù)被讀入系哦太難搞550用于由處理器560執(zhí)行。
      [0139]在替代實(shí)施方案中,次存儲器570可包括其它類似構(gòu)件用于允許將計(jì)算機(jī)程序或其它數(shù)據(jù)或指令加載至系統(tǒng)550。例如,此類構(gòu)件可包括外部存儲介質(zhì)595和接口 590。外部存儲介質(zhì)595的實(shí)例可包括外部硬盤驅(qū)動器或外部光學(xué)驅(qū)動器、或/和外部磁光驅(qū)動器。
      [0140]次存儲器570的其它實(shí)例可包括基于半導(dǎo)體的存儲器,諸如可編程的只讀存儲器(PROM)、可擦可編程只讀存儲器(EPROM)、電可擦只讀存儲器(EEPROM)或閃速存儲器(類似于EEPROM的分塊的存儲器)。還可包括任何其它可移動存儲媒介580和通信接口 590,這允許將軟件和數(shù)據(jù)從外部媒介595傳送系統(tǒng)550。
      [0141]系統(tǒng)550可包括通信接口 590。通信接口 590允許軟件和數(shù)據(jù)在系統(tǒng)550與外部裝置(例如打印機(jī))、網(wǎng)絡(luò)或信息源之間傳送。例如,可經(jīng)由通信接口 590將計(jì)算機(jī)軟件或可執(zhí)行的代碼從網(wǎng)絡(luò)服務(wù)器傳送至系統(tǒng)550。通信接口 590的實(shí)例包括內(nèi)置網(wǎng)絡(luò)適配器、網(wǎng)絡(luò)接口卡(NIC)、個人計(jì)算機(jī)存儲器卡國際協(xié)會(PCMCIA)網(wǎng)絡(luò)卡、卡總線網(wǎng)絡(luò)適配器、無線網(wǎng)絡(luò)適配器、通用串行總線(USB)網(wǎng)絡(luò)適配器、調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(NIC)、無線數(shù)據(jù)卡、通信端口、紅外線接口、IEEE1394火線或能夠使系統(tǒng)550與網(wǎng)絡(luò)或另一個計(jì)算裝置交互的任何其它裝置。
      [0142]通信接口 590優(yōu)選實(shí)施公布的工業(yè)協(xié)議標(biāo)準(zhǔn),諸如以太網(wǎng)IEEE802標(biāo)準(zhǔn)、光纖信道、數(shù)字用戶線(DSL)、非對稱數(shù)字用戶線(ADSL)、幀中繼、異步傳輸模式(ATM)、綜合數(shù)字業(yè)務(wù)網(wǎng)(ISDN)、個人通信業(yè)務(wù)(PCS)、傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)、串行線路互聯(lián)網(wǎng)協(xié)議/點(diǎn)對點(diǎn)協(xié)議(SLIP/PPP)等等,但也可實(shí)施自定義或非標(biāo)準(zhǔn)接口協(xié)議。
      [0143]經(jīng)由通信接口 590傳送的軟件和數(shù)據(jù)一般以電通信信號605的形式。這些信號605經(jīng)由通信信道600優(yōu)選提供給通信接口 590。在一個實(shí)施方案中,通信信道600可為有線或無線網(wǎng)絡(luò),或任何多樣的其它通信鏈路。通信信道600運(yùn)載信號605并可以使用多樣的有線或無線通信構(gòu)件包括導(dǎo)線或電纜、光纖、常規(guī)電話線、蜂窩電話鏈路、無線數(shù)據(jù)通信鏈路、無線電頻率(“RF”)鏈路或紅外線鏈路等等來實(shí)施。
      [0144]計(jì)算機(jī)可執(zhí)行代碼(即計(jì)算機(jī)程序或軟件)存儲在主存儲器565和/或次存儲器570中。計(jì)算機(jī)程序也可以經(jīng)由通信接口 590接收并存儲在主存儲器565和/或次級存儲器570中。此類計(jì)算機(jī)程序在執(zhí)行時使系統(tǒng)550能夠執(zhí)行先前所述的本發(fā)明的各種功能。
      [0145]在該描述中,術(shù)語“計(jì)算機(jī)可讀介質(zhì)”用于指代任何非瞬時性計(jì)算機(jī)可讀存儲介質(zhì),其用于給系統(tǒng)550提供計(jì)算機(jī)可執(zhí)行的代碼(例如軟件和計(jì)算機(jī)程序)。這些媒介的實(shí)例包括通信地與通信接口 590連接的主存儲器565、次存儲器570 (包括內(nèi)部存儲器575、可移動的介質(zhì)580和外部存儲介質(zhì)595)和任何外圍裝置(包括網(wǎng)絡(luò)信息服務(wù)器或其它網(wǎng)絡(luò)裝置)。這些非瞬時性計(jì)算機(jī)可讀介質(zhì)是用于給系統(tǒng)550提供可執(zhí)行的代碼、編程指令和軟件的構(gòu)件。
      [0146]在使用軟件實(shí)施的實(shí)施方案中,軟件可通過可移動介質(zhì)580、I/O接口 585或通信接口 590的方式存儲在計(jì)算機(jī)可讀介質(zhì)上并且加載至系統(tǒng)550中。在此類實(shí)施方案中,軟件以電通信信號605的形式被加載至系統(tǒng)550中。軟件在由處理器560執(zhí)行時優(yōu)選使處理器560執(zhí)行本文先前所述的發(fā)明特征和功能。
      [0147]在實(shí)施方案中,I/O接口 585在系統(tǒng)550的一個或多個部件與一個或多個輸入和/或輸出裝置之間提供接口。實(shí)例輸入裝置包括但不限于鍵盤、觸摸屏或其它觸敏裝置、生物傳感裝置、計(jì)算機(jī)鼠標(biāo)、跟蹤球、基于觸控筆的點(diǎn)觸裝置及其類似物。輸出裝置的實(shí)例包括但不限于陰極射線管(CRT)、等離子顯示屏、發(fā)光二極管(LED)顯示器、液晶顯示器(LCD)、打印機(jī)、真空熒光顯示器(VFD)、表面?zhèn)鲗?dǎo)電子發(fā)射顯示器(SED)、場發(fā)射顯示器(FED)及其類似物。
      [0148]系統(tǒng)550還包括促進(jìn)通過聲音和通過數(shù)據(jù)網(wǎng)絡(luò)的無線通信的可選的無線通信部件。無線通信部件包括天線系統(tǒng)610、無線電系統(tǒng)615和基帶系統(tǒng)620。在系統(tǒng)550中,無線電頻率(RF)信號通過空氣由無線電系哦太難搞615的管理下的天線系統(tǒng)610發(fā)送和接收。
      [0149]在一個實(shí)施方案中,天線系統(tǒng)610可包括一個或多個天線以及執(zhí)行切換功能以為天線系統(tǒng)610提供傳遞和接收信號路徑的一個或多個多路復(fù)用器(未示出)。在接收路徑中,所接收的RF信號可以從多路復(fù)用器連接至低噪聲放大器(未示出),其放大所接收的RF信號并將所放大的信號發(fā)送至無線電系哦太難搞615。
      [0150]在替代實(shí)施方案中,無線電系統(tǒng)615可包括被配置成在各種頻率上通信的一個或多個無線電。在一個實(shí)施方案中,無線電系統(tǒng)615可將解調(diào)器(未示出)和調(diào)制器(未示出)組合在一個集成電路(IC)中。解調(diào)器和調(diào)制器還可以是單獨(dú)的部件。在輸入路徑中,解調(diào)器去除RF載波信號留下基帶接收音頻信號,其被從無線電系統(tǒng)615發(fā)送至基帶系統(tǒng)620。
      [0151]如果所接收的信號含有音頻信息,則基帶系統(tǒng)620解碼信號并將其變換成模擬信號。然后,該信號被放大并發(fā)送至揚(yáng)聲器?;鶐到y(tǒng)620還從麥克風(fēng)接收模擬音頻信號。這些模擬音頻信號被變換為數(shù)字信號并由基帶系統(tǒng)620編碼?;鶐到y(tǒng)620還將用于傳輸?shù)臄?shù)字信號編碼并產(chǎn)生路由至無線電系統(tǒng)615的調(diào)制器部分的基帶發(fā)射音頻信號。調(diào)制器將基帶發(fā)射音頻信號與RF載波信號混合產(chǎn)生被路由至天線系統(tǒng)并通過功率放大器(未示出)的RF發(fā)射信號。功率放大器放大RF發(fā)射信號并且將其路由至天線系統(tǒng)610,其中信號被切換至天線端口用于傳輸。
      [0152]基帶系統(tǒng)620還與處理器560通信地連接。中央處理單元560可訪問數(shù)據(jù)存儲區(qū)域565和570。中央處理單元560優(yōu)選地被配置成執(zhí)行可以存儲在存儲器565或從存儲器570中的指令(即計(jì)算機(jī)程序或軟件)。計(jì)算機(jī)程序還可以從基帶處理器610接收并存儲在數(shù)據(jù)存儲區(qū)域565中或次存儲器570中、或者在接受時執(zhí)行。此類計(jì)算機(jī)程序在執(zhí)行時使系統(tǒng)550能夠執(zhí)行先前所述的本發(fā)明的各種功能。例如,數(shù)據(jù)存儲區(qū)域565可包括各種軟件模塊(未示出)。
      [0153]各種實(shí)施方案還可使用例如諸如特定用途集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)的部件主要在硬件中實(shí)施。能夠執(zhí)行本文所述的功能的硬件狀態(tài)機(jī)的實(shí)施對于相關(guān)領(lǐng)域的那些技術(shù)人員也是明顯的。各種實(shí)施方案還可使用硬件和軟件的組合來實(shí)施。
      [0154]此外,本領(lǐng)域的那些技術(shù)人員將了解與上文所述的附圖以及本文所公開的實(shí)施方案結(jié)合描述的各種說明性的邏輯塊、模塊、電路和方法步驟常??梢詫?shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。為了清楚說明硬件和軟件的可互換性,各種說明性的部件、塊、模塊、電路和步驟已經(jīng)按照其功能性在上文一般描述。將此類功能性實(shí)施為硬件還是軟件取決于施加于整個系統(tǒng)的特定應(yīng)用和設(shè)計(jì)限制。技術(shù)人員可以不同的方式實(shí)施每個特定應(yīng)用的所述的功能性,但是此類實(shí)施方式?jīng)Q定不應(yīng)被視作脫離本發(fā)明的范圍。除此之外,模塊、塊、電路或步驟內(nèi)的功能分組是為了便于描述。指定功能或步驟可以在不脫離本發(fā)明的情況下從一個模塊、塊或電路移動至另一個。
      [0155]此外,結(jié)合本文公開的實(shí)施方案所述的各種說明性邏輯塊、模塊、功能和方法可以使用經(jīng)設(shè)計(jì)以執(zhí)行本文所述的功能的通用處理器、數(shù)字信號處理器(DSP)、ASIC、FPGA或其它可編程邏輯裝置、離散門或晶體管邏輯、離散硬件部件或任何其組合來實(shí)施或執(zhí)行。通用處理器可以是微處理器,但是在替代方案中,處理器可以是任何處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可以實(shí)施為計(jì)算裝置的組合,例如DSP和微處理器、多個微處理器、一個或多個微處理器結(jié)合DSP核或任何其它此類配置的組合。
      [0156]另外,結(jié)合本文所公開的實(shí)施方案所述的方法或算法的步驟可以在硬件中、在處理器執(zhí)行的軟件模塊中或在兩者的組合中直接體現(xiàn)。軟件模塊可以駐留在RAM存儲器、閃速存儲器、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬盤、可移動磁盤、⑶-ROM或包括網(wǎng)絡(luò)存儲介質(zhì)的任何其它形式的存儲介質(zhì)中。示例性存儲介質(zhì)可以連接至處理器使得處理器可以從存儲介質(zhì)讀取信息并將信息寫入存儲介質(zhì)?;蛘撸鎯橘|(zhì)可以集成至處理器。處理器和存儲介質(zhì)還可以駐留在ASIC中。
      [0157]本文所述的軟件部件中的任何可采取多樣的形式。例如,部件可為獨(dú)立的軟件包,或可為作為“工具”并入較大的軟件產(chǎn)品中的軟件包。它可為從例如網(wǎng)站的網(wǎng)絡(luò)下載的獨(dú)立產(chǎn)品或用于在現(xiàn)有軟件應(yīng)用程序中安裝的插件包。它還可用作客戶端-服務(wù)器軟件應(yīng)用程序、web啟用軟件應(yīng)用程序和/或移動應(yīng)用程序。
      [0158]上述所公開的實(shí)施方案被提供以使本領(lǐng)域的任何技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對于這些實(shí)施方案的各種修改對于本領(lǐng)域的那些技術(shù)人員將是顯而易見的,并且可以在不脫離本發(fā)明的精神和范圍的情況下將本文所述的一般原理施加至其它實(shí)施方案。因此,要理解的是本文呈現(xiàn)的描述和附圖表示本發(fā)明當(dāng)前優(yōu)選的實(shí)施方案并且因此表示本發(fā)明廣泛考慮其主題。還應(yīng)理解的是本發(fā)明的范圍充分包括其它實(shí)施方案,這對于本領(lǐng)域的那些技術(shù)人員變得明顯并且使本發(fā)明的范圍因此不受限制。
      【權(quán)利要求】
      1.一種用于產(chǎn)生在網(wǎng)絡(luò)代理之間的操作的語義描述的方法,所述方法包括使用至少一個硬件處理器: 捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量; 將所述包級流量集束成一個或多個消息,其中所述一個或多個消息中的每個包括一個或多個元素; 對于所述一個或多個消息中的每個, 匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性,并且基于所匹配的一個或多個屬性將所述消息解碼成消息數(shù)據(jù);以及基于所述消息數(shù)據(jù)生成在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的操作的語義描述。
      2.根據(jù)權(quán)利要求1所述的方法,其中捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量包括從定位在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的通信路徑上的交換機(jī)接收數(shù)據(jù)包的拷貝。
      3.根據(jù)權(quán)利要求2所述的方法,其中所述交換機(jī)是虛擬交換機(jī)。
      4.根據(jù)權(quán)利要求1所述的方法,其中捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量包括從定位在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的通信路徑上的網(wǎng)絡(luò)分流器接收數(shù)據(jù)包的拷貝。
      5.根據(jù)權(quán)利要求4所述 的方法,其中所述網(wǎng)絡(luò)分流器是虛擬網(wǎng)絡(luò)分流器。
      6.根據(jù)權(quán)利要求1所述的方法,其中將所述包級流量集束成一個或多個消息包括對于一個或多個會話中的每個重復(fù)地: 接收在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間傳遞的數(shù)據(jù)包; 確定邊界條件是否已經(jīng)發(fā)生,其中所述邊界條件指示消息的結(jié)束; 如果確定所述邊界條件沒有發(fā)生,那么將所接收的數(shù)據(jù)包排隊(duì)在存儲器中;以及, 如果確定所述邊界條件已經(jīng)發(fā)生,那么將在所述存儲器中排隊(duì)的一個或多個數(shù)據(jù)包集束成消息數(shù)據(jù)。
      7.根據(jù)權(quán)利要求6所述的方法,其中確定邊界條件是否已經(jīng)發(fā)生包括下列中的一個或多個: 檢測指示消息結(jié)束的控制信息; 基于所述接收的數(shù)據(jù)包檢測在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的通信方向的改變;以及 檢測自從接受數(shù)據(jù)包已經(jīng)發(fā)生超時。
      8.根據(jù)權(quán)利要求1所述的方法,其中匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性包括對于在一個或多個模板的組中的每個模板: 選擇所述模板,其中所述模板包括一個或多個屬性; 比較所述模板的所述一個或多個屬性中的一個或多個與所述消息的所述一個或多個元素中的一個或多個;以及 基于所述比較確定所述模板是否匹配所述消息。
      9.根據(jù)權(quán)利要求8所述的方法,其還包括從多個模板選擇所述一個或多個模板的組。
      10.根據(jù)權(quán)利要求9所述的方法,其中基于所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的連接的啟動數(shù)據(jù)信息選擇所述一個或多個模板的組。
      11.根據(jù)權(quán)利要求9所述的方法,其中基于用于所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的現(xiàn)有連接的存儲的一個或多個模板的組選擇所述一個或多個模板的組。
      12.根據(jù)權(quán)利要求8所述的方法,其中所述消息的所述一個或多個元素包括多個元素,其中所述模板的所述一個或多個屬性包括多個屬性,并且其中匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性還包括對于在所述一個或多個模板的組中的每個模板,如果確定所述模板匹配所述消息,那么使用所述模板的所述多個屬性中的一個或多個推斷的屬性定位所述消息的所述多個元素中的一個或多個不匹配的元素。
      13.根據(jù)權(quán)利要求8所述的方法,其中匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性還包括對于在所述一個或多個模板的組中的每個模板: 如果確定所述模板匹配所述消息,那么確定所述模板是否包括其它模板的一個或多個參考;以及, 如果確定所述模板包括其它模板的一個或多個參考,那么將所述其它模板中的一個或多個添加至所述一個或多個模板的組。
      14.根據(jù)權(quán)利要求8所述的方法,其還包括對于所述一個或多個消息中的每個: 從所述一個或多個模板的組選擇匹配所述消息的一個或多個模板;以及 基于所述選擇的一個或多個模板的所述一個或多個屬性解碼所述消息。
      15.根據(jù)權(quán)利要求8所述的方法,其中所述一個或多個模板的組包括對應(yīng)于傳輸控制協(xié)議(TCP)、互聯(lián)網(wǎng)協(xié)議(IP)、超文本傳輸協(xié)議(HTTP)、文件傳輸協(xié)議(FTP)、按序數(shù)據(jù)包交換協(xié)議(SPX)、地址解析協(xié)議(ARP)、交易網(wǎng)絡(luò)服務(wù)協(xié)議(TNS)、表格格式數(shù)據(jù)流協(xié)議(TDS)、對稱多處理線程協(xié)議(SMP)、兩項(xiàng)任務(wù)共同協(xié)議(TTC)、網(wǎng)絡(luò)文件系統(tǒng)協(xié)議(NFS)、蘋果文件協(xié)議(AFP)、服務(wù)器消息塊協(xié)議(SMB)、域名系統(tǒng)協(xié)議(DNS)、簡單郵件傳輸協(xié)議(SMTP)、互聯(lián)網(wǎng)消息訪問協(xié)議(IMAP)和郵局協(xié)議(POP)中的一個或多個的一個或多個模板。
      16.根據(jù)權(quán)利要求1所述的方法,其還包括在產(chǎn)生操作的所述語義描述之前基于一個或多個過濾器放棄包級流量和消息數(shù)據(jù)中的一個或兩個的至少部分。
      17.根據(jù)權(quán)利要求1所述的方法,其中所述一個或多個消息包括用于遠(yuǎn)程程序調(diào)用(RPC)的請求消息和用于RPC的響應(yīng)消息中的一個或多個,并且其中將所述一個或多個消息解碼成消息數(shù)據(jù)包括提取動詞、參數(shù)和所得有效負(fù)載中的一個或多個用于RPC。
      18.根據(jù)權(quán)利要求1所述的方法,其中所述捕獲由捕獲模塊執(zhí)行,其中所述集束、匹配、解碼和生成由分析模塊執(zhí)行,并且其中所述方法還包括使用至少一個應(yīng)用程序接口(API)將所述包級流量從所述捕獲模塊傳送至所述分析模塊。
      19.根據(jù)權(quán)利要求18所述的方法,其中所述捕獲模塊和分析模塊在單獨(dú)的機(jī)器上執(zhí)行。
      20.根據(jù)權(quán)利要求18所述的方法,其中所述捕獲模塊和分析模塊在一個機(jī)器上執(zhí)行。
      21.一種用于產(chǎn)生在網(wǎng)絡(luò)代理之間的操作的語義描述的系統(tǒng),所述系統(tǒng)包括: 至少一個硬件處理器;以及 至少一個可執(zhí)行的軟件模塊,其在由所述至少一個硬件處理器執(zhí)行時, 捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量, 將所述包級流量集束成一個或多個消息,其中所述一個或多個消息中的每個包括一個或多個元素, 對于所述一個或多個消息中的每個, 匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性,并且基于所匹配的一個或多個屬性將所述消息解碼成消息數(shù)據(jù),以及基于所述消息數(shù)據(jù)生成在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的操作的語義描述。
      22.根據(jù)權(quán)利要求11所述的系統(tǒng),其中捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量包括從定位在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的通信路徑上的交換機(jī)接收數(shù)據(jù)包的拷貝。
      23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述交換機(jī)是虛擬交換機(jī)。
      24.根據(jù)權(quán)利要求21所述的系統(tǒng),其中捕獲在第一網(wǎng)絡(luò)代理與第二網(wǎng)絡(luò)代理之間的包級流量包括從定位在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的通信路徑上的網(wǎng)絡(luò)分流器接收數(shù)據(jù)包的拷貝。
      25.根據(jù)權(quán)利 要求24所述的系統(tǒng),其中所述網(wǎng)絡(luò)分流器是虛擬網(wǎng)絡(luò)分流器。
      26.根據(jù)權(quán)利要求21所述的系統(tǒng),其中將所述包級流量集束成一個或多個消息包括對于一個或多個會話中的每個重復(fù)地: 接收在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間傳遞的數(shù)據(jù)包; 確定邊界條件是否已經(jīng)發(fā)生,其中所述邊界條件指示消息的結(jié)束; 如果確定所述邊界條件沒有發(fā)生,那么將所接收的數(shù)據(jù)包排隊(duì)在存儲器中;以及, 如果確定所述邊界條件已經(jīng)發(fā)生,那么將在所述存儲器中排隊(duì)的一個或多個數(shù)據(jù)包集束成消息數(shù)據(jù)。
      27.根據(jù)權(quán)利要求26所述的系統(tǒng),其中確定邊界條件是否已經(jīng)發(fā)生包括下列中的一個或多個: 檢測指示消息結(jié)束的控制信息; 基于所述接收的數(shù)據(jù)包檢測在所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的通信方向的改變;以及 檢測自從接受數(shù)據(jù)包已經(jīng)發(fā)生超時。
      28.根據(jù)權(quán)利要求21所述的系統(tǒng),其中匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性包括對于在一個或多個模板的組中的每個模板: 選擇所述模板,其中所述模板包括一個或多個屬性; 比較所述模板的所述一個或多個屬性中的一個或多個與所述消息的所述一個或多個元素中的一個或多個;以及 基于所述比較確定所述模板是否匹配所述消息。
      29.根據(jù)權(quán)利要求28所述的方法,其中所述至少一個可執(zhí)行的軟件模塊從多個模板選擇所述一個或多個模板的組。
      30.根據(jù)權(quán)利要求29所述的系統(tǒng),其中基于所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的連接的啟動數(shù)據(jù)信息選擇所述一個或多個模板的組。
      31.根據(jù)權(quán)利要求29所述的系統(tǒng),其中基于用于所述第一網(wǎng)絡(luò)代理與所述第二網(wǎng)絡(luò)代理之間的現(xiàn)有連接的存儲的一個或多個模板的組選擇所述一個或多個模板的組。
      32.根據(jù)權(quán)利要求28所述的系統(tǒng),其中所述消息的所述一個或多個元素包括多個元素,其中所述模板的所述一個或多個屬性包括多個屬性,并且其中匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性還包括對于在所述一個或多個模板的組中的每個模板,如果確定所述模板匹配所述消息,那么使用所述模板的所述多個屬性中的一個或多個推斷的屬性定位所述消息的所述多個元素中的一個或多個不匹配的元素。
      33.根據(jù)權(quán)利要求28所述的系統(tǒng),其中匹配所述消息的所述一個或多個元素中的一個或多個與一個或多個屬性包括對于在所述一個或多個模板的組中的每個模板: 如果確定所述模板匹配所述消息,那么確定所述模板是否包括其它模板的一個或多個參考;以及, 如果確定所述模板包括其它模板的一個或多個參考,那么將所述其它模板中的一個或多個添加至所述一個或多個模板的組。
      34.根據(jù)權(quán)利要求28所述的系統(tǒng),其中所述至少一個可執(zhí)行的軟件模塊,對于所述一個或多個消息中的每個: 從所述一個或多個模板的組選擇匹配所述消息的一個或多個模板;以及 基于所述選擇的一個或多個模板的所述一個或多個屬性解碼所述消息。
      35.根據(jù)權(quán)利要求28所述的系統(tǒng),其中所述一個或多個模板的組包括對應(yīng)于傳輸控制協(xié)議(TCP)、互聯(lián)網(wǎng)協(xié)議(IP)、超文本傳輸協(xié)議(HTTP)、文件傳輸協(xié)議(FTP)、按序數(shù)據(jù)包交換協(xié)議(SPX)、地址解析協(xié)議(ARP)、交易網(wǎng)絡(luò)服務(wù)協(xié)議(TNS)、表格格式數(shù)據(jù)流協(xié)議(TDS)、對稱多處理線程協(xié)議(SMP)、兩項(xiàng)任務(wù)共同協(xié)議(TTC)、網(wǎng)絡(luò)文件系統(tǒng)協(xié)議(NFS)、蘋果文件協(xié)議(AFP)、服務(wù)器消息塊協(xié)議(SMB)、域名系統(tǒng)協(xié)議(DNS)、簡單郵件傳輸協(xié)議(SMTP)、互聯(lián)網(wǎng)消息訪問協(xié)議(IMAP)和郵局協(xié)議(POP)中的一個或多個的一個或多個模板。
      36.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述至少一個可執(zhí)行的軟件模塊在產(chǎn)生操作的所述語義描述之前基于一個或多個過濾器放棄包級流量和消息數(shù)據(jù)中的一個或兩個的至少部分。
      37.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述一個或多個消息包括用于遠(yuǎn)程程序調(diào)用(RPC)的請求消息和用于RPC的響應(yīng)消息中的一個或多個,并且其中將所述一個或多個消息解碼成消息數(shù)據(jù)包括提取動詞、參數(shù)和所得有效負(fù)載中的一個或多個用于RPC。
      38.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述捕獲由捕獲模塊執(zhí)行,其中所述集束、匹配、解碼和生成由分析模塊執(zhí)行,并且其中所述捕獲模塊使用至少一個應(yīng)用程序接口(API)將所述包級流量傳送至所述分析模塊。
      39.根據(jù)權(quán)利要求38所述的系統(tǒng),其中所述系統(tǒng)還包括第一機(jī)器和第二機(jī)器,并且其中所述捕獲模塊被容納在所述第一機(jī)器上且所述分析模塊被容納在所述第二機(jī)器上。
      40.根據(jù)權(quán)利要求39所述的系統(tǒng),其中所述系統(tǒng)還包括單個機(jī)器,所述單個機(jī)器包括所述至少一個硬件處理器、所述捕獲模塊和所述分析模塊。
      【文檔編號】H04L12/70GK104081730SQ201380006892
      【公開日】2014年10月1日 申請日期:2013年1月28日 優(yōu)先權(quán)日:2012年1月31日
      【發(fā)明者】T·W·魯?shù)峡? E·瓦爾三義, C·A·帕特森, D·A·羅森伯格 申請人:Db網(wǎng)絡(luò)公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1