一個 節(jié)點(diǎn)為空值,并且它的左右子節(jié)點(diǎn)均有值,則對其子節(jié)點(diǎn)進(jìn)行序列比對,并將比對結(jié)果序列 存儲到該節(jié)點(diǎn)中,同時將序列比對產(chǎn)生的空格插入操作方式記錄到對應(yīng)的邊上,如圖1所 不〇
[0036] 序列比對是一個在矩陣上進(jìn)行操作的動態(tài)規(guī)劃算法:
[0037] 步驟2. 1 :構(gòu)造一個行數(shù)為M+1,列數(shù)為K+1的矩陣,其中M為第一數(shù)據(jù)包序列的長 度,K為第二數(shù)據(jù)包序列的長度。
[0038] 步驟2. 2 :將第一數(shù)據(jù)包序列放置在矩陣左側(cè),且第一數(shù)據(jù)包序列中的每個字符 對應(yīng)矩陣的一行,第一數(shù)據(jù)包序列的所有字符依次對應(yīng)第2行至第M+1行;將第二數(shù)據(jù)包序 列放置在矩陣上方,且第二數(shù)據(jù)包序列中的每個字符對應(yīng)矩陣的一列,第二數(shù)據(jù)包序列的 所有字符依次對應(yīng)第2列至第K+1列。
[0039] 步驟2. 3 :將矩陣的第1行和第1列的元素全部賦0 ;矩陣中的其余元素值通過以 下公式得到:
[0040]
[0041] Qij為矩陣第i行第j列的元素值,i取2~M+l,j取2至K+l,Su為打分值,若矩 陣第i行對應(yīng)的第一數(shù)據(jù)包序列中的字符與矩陣第j列對應(yīng)的第二數(shù)據(jù)包序列中的字符相 同,則Su= 1,否則Sij= 0 ;賦值完成的矩陣如圖2所示。
[0042] 步驟2. 4 :對于步驟2. 3得到的賦值完成的矩陣,從矩陣中取值最大的元素開始, 反向跟蹤到矩陣的第1行第1列元素,得到一條從矩陣中取值最大的元素到矩陣第1行第 1列元素的路徑,如圖2所示。
[0043] 所述反向跟蹤的規(guī)則為:對于第i行第j列元素:比較第i_l行第j列元素、第i 行第j-1列元素、第i-1行第j-1列元素的元素值,第i行第j列元素的反向跟蹤方向?yàn)榈?i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素中元素值最大的元素位置, 若第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值相同,則第 i行第j列元素的反向跟蹤方向?yàn)榈趇-1行第j-1列元素位置。
[0044] 步驟2. 5 :為了完成序列的對齊,根據(jù)步驟2. 4得到的路徑,得到第一序列和第二 序列的空格插入操作方式:對于處于路徑中的第i行第j列元素:
[0045] 若反向跟蹤方向?yàn)榈趇-1行第j-1列元素位置,則不進(jìn)行操作;
[0046] 若反向跟蹤方向?yàn)榈趇行第j-1列元素位置,則在第一數(shù)據(jù)包序列中插入空格,空 格插入位置為矩陣第i行對應(yīng)的字符與矩陣第i+1行對應(yīng)的字符之間;
[0047] 若反向跟蹤方向?yàn)榈趇-1行第j列元素位置,則在第二數(shù)據(jù)包序列中插入空格,空 格插入位置為矩陣第j列對應(yīng)的字符與矩陣第j+1列對應(yīng)的字符之間。
[0048] 步驟2. 6 :將第一數(shù)據(jù)包序列和第二數(shù)據(jù)包序列按照步驟2. 5得到的空格插入操 作方式插入空格,得到比對結(jié)果序列,保存具有最少空格的結(jié)果序列以及空格插入操作方 式。
[0049] 步驟3 :將每個葉子節(jié)點(diǎn)從下到上訪問到根節(jié)點(diǎn),執(zhí)行每條向上邊的空格插入操 作,最終比對完全二叉樹的根節(jié)點(diǎn)中得到所有葉子節(jié)點(diǎn)對齊的結(jié)果,所述所有葉子節(jié)點(diǎn)對 齊的結(jié)果具有相同的長度,如圖4所示。在所有葉子節(jié)點(diǎn)對齊的結(jié)果中,具有相同位置且字 符相同的部分組成推斷出的協(xié)議報(bào)文格式。
【主權(quán)項(xiàng)】
1. 一種未知協(xié)議報(bào)文格式推斷方法,其特征在于:包括w下步驟: 步驟1 ;采集N個數(shù)據(jù)包序列,按照數(shù)據(jù)包序列的長度對數(shù)據(jù)包序列進(jìn)行排序;建立最 底層具有N個葉子節(jié)點(diǎn),高度為flogs 的比對完全二叉樹;比對完全二叉樹初始時,將排 序后的N個數(shù)據(jù)包序列依次對應(yīng)賦值給最底層N個葉子節(jié)點(diǎn),每個葉子節(jié)點(diǎn)內(nèi)的值為一個 數(shù)據(jù)包序列,其余節(jié)點(diǎn)為空值; 步驟2 ;根據(jù)構(gòu)造的比對完全二叉樹,按照下面的規(guī)則自下而上進(jìn)行序列比對,使得比 對完全二叉樹中的每個節(jié)點(diǎn)均有值,且每條邊均有對應(yīng)的空格插入操作方式:若一個節(jié)點(diǎn) 為空值,并且它的左右子節(jié)點(diǎn)均有值,則對其子節(jié)點(diǎn)進(jìn)行序列比對,并將比對結(jié)果序列存儲 到該節(jié)點(diǎn)中,同時將序列比對產(chǎn)生的空格插入操作方式記錄到對應(yīng)的邊上; 所述序列比對采用W下方法: 步驟2. 1 ;構(gòu)造一個行數(shù)為M+1,列數(shù)為K+1的矩陣,其中M為第一數(shù)據(jù)包序列的長度,K為第二數(shù)據(jù)包序列的長度; 步驟2. 2 ;將第一數(shù)據(jù)包序列放置在矩陣左側(cè),且第一數(shù)據(jù)包序列中的每個字符對應(yīng) 矩陣的一行,第一數(shù)據(jù)包序列的所有字符依次對應(yīng)第2行至第M+1行;將第二數(shù)據(jù)包序列放 置在矩陣上方,且第二數(shù)據(jù)包序列中的每個字符對應(yīng)矩陣的一列,第二數(shù)據(jù)包序列的所有 字符依次對應(yīng)第2列至第K+1列; 步驟2. 3 ;將矩陣的第1行和第1列的元素全部賦0 ;矩陣中的其余元素值通過W下公 式得到:Qu為矩陣第i行第j列的元素值,i取2~M+1,j取2至K+1,S。為打分值,若矩陣第i行對應(yīng)的第一數(shù)據(jù)包序列中的字符與矩陣第j列對應(yīng)的第二數(shù)據(jù)包序列中的字符相同, 則Su= 1,否則Su= 0 ; 步驟2. 4 ;對于步驟2. 3得到的賦值完成的矩陣,從矩陣中取值最大的元素開始,反向 跟蹤到矩陣的第1行第1列元素,得到一條從矩陣中取值最大的元素到矩陣第1行第1列 元素的路徑;所述反向跟蹤的規(guī)則為;對于第i行第j列元素;比較第i-1行第j列元素、 第i行第j-1列元素、第i-1行第j-1列元素的元素值,第i行第j列元素的反向跟蹤方向 為第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素中元素值最大的元素 位置,若第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值相同, 則第i行第j列元素的反向跟蹤方向?yàn)榈趇-1行第j-1列元素位置; 步驟2. 5 ;根據(jù)步驟2. 4得到的路徑,得到第一序列和第二序列的空格插入操作方式: 對于處于路徑中的第i行第j列元素: 若反向跟蹤方向?yàn)榈趇-1行第j-1列元素位置,則不進(jìn)行操作; 若反向跟蹤方向?yàn)榈趇行第j-1列元素位置,則在第一數(shù)據(jù)包序列中插入空格,空格插 入位置為矩陣第i行對應(yīng)的字符與矩陣第i+1行對應(yīng)的字符之間; 若反向跟蹤方向?yàn)榈趇-1行第j列元素位置,則在第二數(shù)據(jù)包序列中插入空格,空格插 入位置為矩陣第j列對應(yīng)的字符與矩陣第j+1列對應(yīng)的字符之間; 步驟2. 6 ;將第一數(shù)據(jù)包序列和第二數(shù)據(jù)包序列按照步驟2. 5得到的空格插入操作方 式插入空格,得到比對結(jié)果序列; 步驟3 ;比對完全二叉樹的根節(jié)點(diǎn)中得到所有葉子節(jié)點(diǎn)對齊的結(jié)果,所述所有葉子節(jié) 點(diǎn)對齊的結(jié)果具有相同的長度;在所有葉子節(jié)點(diǎn)對齊的結(jié)果中,具有相同位置且字符相同 的部分組成推斷出的協(xié)議報(bào)文格式。
【專利摘要】本發(fā)明提出一種未知協(xié)議報(bào)文格式推斷方法,捕獲網(wǎng)絡(luò)上的原始數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的長度建立序列比對二叉樹,從二叉樹葉子節(jié)點(diǎn)向上進(jìn)行序列比對,序列比對采用基于動態(tài)規(guī)劃的序列比對算法,所有節(jié)點(diǎn)序列比對結(jié)束后得到具有相同的長度葉子節(jié)點(diǎn)對齊的結(jié)果,根據(jù)結(jié)果尋找相同的部分,實(shí)現(xiàn)自動對未知協(xié)議報(bào)文格式推斷并輸出。該發(fā)明提供的一種基于數(shù)據(jù)包序列比對的自動未知協(xié)議報(bào)文方法較之現(xiàn)有人工參與的未知數(shù)據(jù)包格式推斷方法,在采集數(shù)據(jù)包數(shù)目確定的基礎(chǔ)上,可以降低人工參與的工作量實(shí)現(xiàn)自動推斷;在沒有數(shù)據(jù)包格式任何先驗(yàn)信息的條件下,可以實(shí)現(xiàn)對未知協(xié)議數(shù)據(jù)包格式的有效推斷。
【IPC分類】H04L29/06
【公開號】CN104935567
【申請?zhí)枴緾N201510185514
【發(fā)明人】詹成, 石榮, 李劍, 張偉, 李洲
【申請人】中國電子科技集團(tuán)公司第二十九研究所
【公開日】2015年9月23日
【申請日】2015年4月20日