主权项 |
一种基于序列比对的自适应应用层网络协议报文聚类方法,其特征在于包括如下步骤:(1)获取需要进行报文聚类的报文,分别对各个报文进行划分得到分词,进而得到各个报文对应的报文分词序列;所述的分词为报文中的各个字段;(2)从步骤(1)得到的报分词文序列中任意选择两个,分别记为T<sub>m</sub>、F<sub>n</sub>,计算报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词关于偏移的相似度scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).o为<maths num="0001"><math><![CDATA[<mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>)</mo></mrow><mo>.</mo><mi>o</mi><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>o</mi><mo>≠</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>o</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mi>d</mi><mi>d</mi><mi>w</mi><mi>e</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>o</mi><mo>=</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>o</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000986044200000011.GIF" wi="1526" he="142" /></maths>其中,<img file="FDA0000986044200000012.GIF" wi="1542" he="591" />T<sub>m</sub>[i].o=F<sub>n</sub>[j].o表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词均包括偏移,T<sub>m</sub>[i].o≠F<sub>n</sub>[j].o表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词不均包括偏移,i=1,2,3…m,j=1,2,3…n,m为报文分词序列T<sub>m</sub>中分词的个数,n为报文分词序列F<sub>n</sub>中分词的个数,T<sub>m</sub>.l为报文分词序列T<sub>m</sub>的长度,F<sub>n</sub>.l为报文分词序列F<sub>n</sub>的长度;所述的偏移为分词首位到当前报文分词序列头部的距离;(3)计算报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词关于宽度的相似度scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).w为<maths num="0002"><math><![CDATA[<mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>P</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow><mo>.</mo><mi>w</mi><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>.</mo><mi>w</mi><mo>≠</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow><mo>.</mo><mi>w</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mi>d</mi><mi>d</mi><mi>w</mi><mi>e</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>.</mo><mi>w</mi><mo>=</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow><mo>.</mo><mi>w</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000986044200000013.GIF" wi="1574" he="143" /></maths>其中,T<sub>m</sub>[i].w=F<sub>n</sub>[j].w表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词宽度相同,T<sub>m</sub>[i].w≠F<sub>n</sub>[j].w表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词宽度不同;所述的宽度为分词的长度;(4)计算报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词关于语义的相似度scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).s为<maths num="0003"><math><![CDATA[<mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>)</mo></mrow><mo>.</mo><mi>s</mi><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>s</mi><mo>≠</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>s</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mi>d</mi><mi>d</mi><mi>w</mi><mi>e</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>s</mi><mo>=</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>s</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000986044200000021.GIF" wi="1510" he="143" /></maths>其中,T<sub>m</sub>[i].s=F<sub>n</sub>[j].s表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词语义相同,T<sub>m</sub>[i].s≠F<sub>n</sub>[j].s表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词语义不同;所述的语义为分词的含义;(5)计算报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词关于类型的相似度scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).t为<maths num="0004"><math><![CDATA[<mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>)</mo></mrow><mo>.</mo><mi>t</mi><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>t</mi><mo>≠</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>t</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mi>d</mi><mi>d</mi><mi>w</mi><mi>e</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>t</mi><mo>=</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>t</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000986044200000022.GIF" wi="1494" he="144" /></maths>所述的类型为分词类型,其中,分词类型包括文本、二进制,T<sub>m</sub>[i].t=F<sub>n</sub>[j].t表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词类型相同,T<sub>m</sub>[i].t≠F<sub>n</sub>[j].t表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词类型不同;(6)计算报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词关于数据内容的相似度scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).d为<maths num="0005"><math><![CDATA[<mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>)</mo></mrow><mo>.</mo><mi>d</mi><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>d</mi><mo>≠</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>d</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>1</mn><mo>+</mo><mi>a</mi><mi>d</mi><mi>d</mi><mi>w</mi><mi>e</mi><mi>i</mi><mi>g</mi><mi>h</mi><mi>t</mi></mrow></mtd><mtd><mrow><msub><mi>T</mi><mi>m</mi></msub><mo>[</mo><mi>i</mi><mo>]</mo><mo>.</mo><mi>d</mi><mo>=</mo><msub><mi>F</mi><mi>n</mi></msub><mo>[</mo><mi>j</mi><mo>]</mo><mo>.</mo><mi>d</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000986044200000023.GIF" wi="1533" he="143" /></maths>所述的数据内容为分词的取值;其中,T<sub>m</sub>[i].d=F<sub>n</sub>[j].d表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词数据内容相同,T<sub>m</sub>[i].d≠F<sub>n</sub>[j].d表示报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词数据内容不同;(7)计算得到报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词的相似度scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j])为scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j])=scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).o+scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).w+scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).s+scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).t+scoreP(T<sub>m</sub>[i],F<sub>n</sub>[j]).d;(8)分别计算报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词的相对位置dis(T<sub>m</sub>[i],F<sub>n</sub>[j])=|T<sub>m</sub>[i].o‑F<sub>n</sub>[j].o|,进而计算得到修正后的报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词的相似度scoreD(T<sub>m</sub>[i],F<sub>n</sub>[j])为<maths num="0006"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>D</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow><mo>=</mo></mrow></mtd></mtr><mtr><mtd><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mi>P</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><mrow><mn>1</mn><mo>-</mo><mfrac><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow></mrow><mn>10</mn></mfrac></mrow><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mn>0</mn><mo>≤</mo><mi>d</mi><mi>i</mi><mi>s</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow><mo>≤</mo><mn>10</mn></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow><mo>></mo><mn>10</mn></mrow></mtd></mtr></mtable></mfenced></mtd></mtr></mtable><mo>;</mo></mrow>]]></math><img file="FDA0000986044200000031.GIF" wi="1734" he="287" /></maths>(9)将scoreD(T<sub>m</sub>[i],F<sub>n</sub>[j])作为最终的报文分词序列T<sub>m</sub>中第i个分词与报文分词序列F<sub>n</sub>中第j个分词的相似度score(T<sub>m</sub>[i],F<sub>n</sub>[j]),重复步骤(2)‑步骤(8)得到各个报文分词序列中各个分词的相似度;(10)计算报文分词序列T<sub>i</sub>与报文分词序列F<sub>j</sub>的相似度MS[i,j]为<maths num="0007"><math><![CDATA[<mrow><mi>M</mi><mi>S</mi><mrow><mo>[</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>]</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mi>i</mi><mo>=</mo><mn>0</mn><mi>o</mi><mi>r</mi><mi> </mi><mi>j</mi><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>max</mi><mfenced open = "{" close = "}"><mtable><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>M</mi><mi>S</mi><mrow><mo>[</mo><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow><mo>+</mo><mi>s</mi><mi>c</mi><mi>o</mi><mi>r</mi><mi>e</mi><mrow><mo>(</mo><mrow><msub><mi>T</mi><mi>m</mi></msub><mrow><mo>[</mo><mi>i</mi><mo>]</mo></mrow><mo>,</mo><msub><mi>F</mi><mi>n</mi></msub><mrow><mo>[</mo><mi>j</mi><mo>]</mo></mrow></mrow><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd><mrow><mi>M</mi><mi>S</mi><mrow><mo>[</mo><mrow><mi>i</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>j</mi></mrow><mo>]</mo></mrow><mo>,</mo></mrow></mtd></mtr><mtr><mtd><mrow><mi>M</mi><mi>S</mi><mrow><mo>[</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>-</mo><mn>1</mn></mrow><mo>]</mo></mrow></mrow></mtd></mtr></mtable></mfenced></mrow></mtd><mtd><mrow><mi>i</mi><mo>≠</mo><mn>0</mn><mi>a</mi><mi>n</mi><mi>d</mi><mi> </mi><mi>j</mi><mo>≠</mo><mn>0</mn></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000986044200000032.GIF" wi="1845" he="302" /></maths>其中,i的初值为1,j的初值为1,T<sub>i</sub>为包括报文分词序列T<sub>m</sub>中第e个分词的报文分词序列,e=1,2,3…i;(11)i=i+1,重复步骤(10),直至i=m;(12)j=j+1,重复步骤(10)‑步骤(11),直至j=n,得到报文分词序列T<sub>m</sub>与报文分词序列F<sub>n</sub>的相似度MS[m,n],从而得到各个报文分词序列间的相似度;(13)根据步骤(12)得到的各个报文分词序列间的相似度,对各个报文分词序列进行聚类,得到不同的报文序列聚类,并记为C<sub>1</sub>,C<sub>2</sub>,…,C<sub>k</sub>,其中,k为聚类个数,k=1,2,3…g,g为报分词文序列个数;(14)计算聚类有效性评价指标Dunn(k)为<maths num="0008"><math><![CDATA[<mrow><mi>D</mi><mi>u</mi><mi>n</mi><mi>n</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mrow><mn>1</mn><mo>≤</mo><mi>i</mi><mo><</mo><mi>k</mi></mrow></munder><mo>{</mo><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><mrow><mi>i</mi><mo><</mo><mi>j</mi><mo>≤</mo><mi>k</mi></mrow></munder><mo>{</mo><mi>δ</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>i</mi></msub><mo>,</mo><msub><mi>C</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>}</mo><mo>}</mo></mrow><mrow><munder><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow><mrow><mn>1</mn><mo>≤</mo><mi>j</mi><mo>≤</mo><mi>k</mi></mrow></munder><mo>{</mo><mi>Δ</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>}</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000986044200000041.GIF" wi="810" he="207" /></maths>其中,<img file="FDA0000986044200000042.GIF" wi="1782" he="91" />d(T<sub>m</sub>,F<sub>n</sub>)=min{dis(T<sub>m</sub>[i],F<sub>n</sub>[j])};(15)选取聚类有效性评价指标Dunn(k)最大的报文序列聚类C<sub>1</sub>,C<sub>2</sub>,…,C<sub>k</sub>作为聚类结果。 |