一種協(xié)議識別方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種協(xié)議識別方法及系統(tǒng)。
【背景技術(shù)】
[0002]協(xié)議識別是指根據(jù)網(wǎng)絡(luò)流和流中的數(shù)據(jù)信息,推測出網(wǎng)絡(luò)流量所屬的協(xié)議類型?,F(xiàn)有的協(xié)議識別方法包括:基于端口、基于靜態(tài)特征和基于統(tǒng)計(jì)特征的協(xié)議識別方法。
[0003]基于端口的協(xié)議識別方法主要是根據(jù)一些知名端口來識別當(dāng)前數(shù)據(jù)流的協(xié)議標(biāo)簽。如HTTP (HyperText Transfer Protocol,超文本傳輸協(xié)議)使用80端口,21端口是FTP (File Transfer Protocol,文件傳輸協(xié)議)服務(wù)器專用的等等。實(shí)際使用中,這種方法的識別能力非常有限,對于注冊和動態(tài)端口就無能為力了。
[0004]基于靜態(tài)特征的協(xié)議識別方法主要是通過對TCP (Transmiss1n ControlProtocol,傳輸控制協(xié)議)的有效載荷精確匹配特征碼來識別當(dāng)前數(shù)據(jù)流的協(xié)議標(biāo)簽。然而,該方法的缺陷是:特征規(guī)則覆蓋不全,難以匹配新出現(xiàn)的特征。
[0005]最近應(yīng)用的基于統(tǒng)計(jì)特征的協(xié)議識別方法主要是結(jié)合機(jī)器學(xué)習(xí)算法來識別協(xié)議的方法,該方法相對比端口協(xié)議識別和靜態(tài)特征協(xié)議識別均有較好的提高,但是基于統(tǒng)計(jì)特征的協(xié)議識別中對特征的選取主要依靠人為篩選,成本較高,且效率非常低。
[0006]為此,如何提供一種成本低,且識別準(zhǔn)確率高的協(xié)議識別方法成為當(dāng)前需要解決的問題。
【發(fā)明內(nèi)容】
[0007]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決或者減緩上述問題的協(xié)議識別方法及系統(tǒng)。
[0008]根據(jù)本發(fā)明的一個方面,提供了一種協(xié)議識別系統(tǒng),包括:
[0009]接收單元,用于接收待識別協(xié)議的數(shù)據(jù)流,所述數(shù)據(jù)流包括上行數(shù)據(jù)包和下行數(shù)據(jù)包;
[0010]格式轉(zhuǎn)換單元,用于對所述上行數(shù)據(jù)包和下行數(shù)據(jù)包進(jìn)行拼接,并進(jìn)行格式轉(zhuǎn)換,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流;
[0011]協(xié)議識別單元,用于采用深度學(xué)習(xí)模型對所述載荷數(shù)據(jù)流進(jìn)行協(xié)議識別,獲取用于輸出的所述數(shù)據(jù)流的協(xié)議識別結(jié)果;
[0012]其中,所述深度學(xué)習(xí)模型為預(yù)先采用訓(xùn)練數(shù)據(jù)流通過深度學(xué)習(xí)獲取的用于識別網(wǎng)絡(luò)數(shù)據(jù)流的模型。
[0013]可選地,所述格式轉(zhuǎn)換單元,具體用于:
[0014]將所述上行數(shù)據(jù)包的字節(jié)和下行數(shù)據(jù)包的字節(jié)按照預(yù)設(shè)策略進(jìn)行拼接,獲取字節(jié)數(shù)在第一預(yù)設(shè)范圍內(nèi)的第一載荷數(shù)據(jù)流;
[0015]若所述第一載荷數(shù)據(jù)流的數(shù)據(jù)格式為16進(jìn)制,則將該第一載荷數(shù)據(jù)流的數(shù)據(jù)格式轉(zhuǎn)換為10進(jìn)制,以及對格式轉(zhuǎn)換后的第一載荷數(shù)據(jù)流中每一字節(jié)除以255,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流;
[0016]或者,
[0017]若所述第一載荷數(shù)據(jù)流的數(shù)據(jù)格式為10進(jìn)制,則將該第一載荷數(shù)據(jù)流中每一字節(jié)除以255,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流。
[0018]可選地,所述第一載荷數(shù)據(jù)流中的字節(jié)拼接方式為:
[0019]依次排列的上行數(shù)據(jù)包的第一字節(jié)、下行數(shù)據(jù)包的第一字節(jié)、上行數(shù)據(jù)包的第N字節(jié)和下行數(shù)據(jù)包第N字節(jié);
[0020]N為大于I的自然數(shù),且所述第一載荷數(shù)據(jù)流的字節(jié)數(shù)小于等于1000,大于等于200。
[0021]可選地,所述系統(tǒng)還包括:模型建立單元;
[0022]所述模型建立單元,用于采用已知的訓(xùn)練數(shù)據(jù)流及該訓(xùn)練數(shù)據(jù)流對應(yīng)的協(xié)議,獲取用于識別網(wǎng)絡(luò)數(shù)據(jù)的深度學(xué)習(xí)模型及與深度學(xué)習(xí)模型對應(yīng)的模型參數(shù);
[0023]所述已知的訓(xùn)練數(shù)據(jù)流包括已知多種協(xié)議標(biāo)簽的訓(xùn)練數(shù)據(jù)。
[0024]可選地,所述模型建立單元,具體用于:
[0025]對每一協(xié)議對應(yīng)的訓(xùn)練數(shù)據(jù)中上行數(shù)據(jù)包和下行數(shù)據(jù)包進(jìn)行拼接,并進(jìn)行格式轉(zhuǎn)換,獲得第一數(shù)據(jù);
[0026]將所有協(xié)議對應(yīng)的格式轉(zhuǎn)換后的第一數(shù)據(jù)和該第一數(shù)據(jù)對應(yīng)的協(xié)議組成向量矩陣;
[0027]采用深度神經(jīng)網(wǎng)絡(luò)算法處理所述向量矩陣,獲得深度學(xué)習(xí)模型及模型參數(shù);或者,
[0028]采用棧式自編碼算法處理所述向量矩陣,獲得深度學(xué)習(xí)模型及模型參數(shù)。
[0029]可選地,所述模型建立單元,還用于:
[0030]針對每一協(xié)議的訓(xùn)練數(shù)據(jù),將該訓(xùn)練數(shù)據(jù)的上行數(shù)據(jù)包的字節(jié)和下行數(shù)據(jù)包的字節(jié)按照預(yù)設(shè)策略進(jìn)行拼接,獲得字節(jié)數(shù)在第二預(yù)設(shè)范圍內(nèi)的第二數(shù)據(jù);
[0031]若所有協(xié)議的第二數(shù)據(jù)的格式為16進(jìn)制,則將該第二數(shù)據(jù)的格式轉(zhuǎn)換為10進(jìn)制,以及對格式轉(zhuǎn)換后的第二數(shù)據(jù)中每一字節(jié)除以255,獲得所述第一數(shù)據(jù);
[0032]或者,
[0033]若所有協(xié)議的第二數(shù)據(jù)的格式為10進(jìn)制,則將該第二數(shù)據(jù)中每一字節(jié)除以255,獲得所述第一數(shù)據(jù)。
[0034]可選地,所述模型建立單元,還用于:
[0035]判斷當(dāng)前協(xié)議對應(yīng)的第二數(shù)據(jù)的字節(jié)數(shù)是否符合預(yù)設(shè)字節(jié)數(shù)范圍;
[0036]若當(dāng)前協(xié)議的第二數(shù)據(jù)的字節(jié)數(shù)大于預(yù)設(shè)字節(jié)數(shù)范圍,則對該第二數(shù)據(jù)進(jìn)行欠抽樣,獲得符合預(yù)設(shè)字節(jié)數(shù)范圍的第二數(shù)據(jù);
[0037]若當(dāng)前協(xié)議的第二數(shù)據(jù)的字節(jié)數(shù)小于預(yù)設(shè)的字節(jié)數(shù)范圍,則重復(fù)復(fù)制多次該協(xié)議的第二數(shù)據(jù),獲得符合預(yù)設(shè)字節(jié)數(shù)范圍的第二數(shù)據(jù)。
[0038]可選地,協(xié)議識別單元,具體用于:
[0039]采用深度學(xué)習(xí)模型對格式轉(zhuǎn)換后的載荷數(shù)據(jù)流進(jìn)行協(xié)議識別,獲得所述數(shù)據(jù)流中每一條待識別的數(shù)據(jù)屬于每一種協(xié)議的概率;
[0040]針對每一條待識別的數(shù)據(jù),選取概率最大的協(xié)議作為該待識別的數(shù)據(jù)的協(xié)議,獲得所述數(shù)據(jù)的協(xié)議識別結(jié)果。
[0041]根據(jù)本發(fā)明的另一個方面,提供了一種協(xié)議識別方法,包括:
[0042]接收待識別協(xié)議的數(shù)據(jù)流,所述數(shù)據(jù)流包括上行數(shù)據(jù)包和下行數(shù)據(jù)包;
[0043]對所述上行數(shù)據(jù)包和下行數(shù)據(jù)包進(jìn)行拼接,并進(jìn)行格式轉(zhuǎn)換,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流;
[0044]采用深度學(xué)習(xí)模型對所述載荷數(shù)據(jù)流進(jìn)行協(xié)議識別,獲取用于輸出的所述數(shù)據(jù)流的協(xié)議識別結(jié)果;
[0045]其中,所述深度學(xué)習(xí)模型為預(yù)先采用訓(xùn)練數(shù)據(jù)流通過深度學(xué)習(xí)獲取的用于識別網(wǎng)絡(luò)數(shù)據(jù)流的模型。
[0046]可選地,所述對所述上行數(shù)據(jù)包和下行數(shù)據(jù)包進(jìn)行拼接,并進(jìn)行格式轉(zhuǎn)換,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流,包括:
[0047]將所述上行數(shù)據(jù)包的字節(jié)和下行數(shù)據(jù)包的字節(jié)按照預(yù)設(shè)策略進(jìn)行拼接,獲取字節(jié)數(shù)在第一預(yù)設(shè)范圍內(nèi)的第一載荷數(shù)據(jù)流;
[0048]若所述第一載荷數(shù)據(jù)流的數(shù)據(jù)格式為16進(jìn)制,則將該第一載荷數(shù)據(jù)流的數(shù)據(jù)格式轉(zhuǎn)換為10進(jìn)制,以及對格式轉(zhuǎn)換后的第一載荷數(shù)據(jù)流中每一字節(jié)除以255,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流;
[0049]或者,
[0050]若所述第一載荷數(shù)據(jù)流的數(shù)據(jù)格式為10進(jìn)制,則將該第一載荷數(shù)據(jù)流中每一字節(jié)除以255,獲得格式轉(zhuǎn)換后的載荷數(shù)據(jù)流。
[0051]可選地,所述第一載荷數(shù)據(jù)流中的字節(jié)拼接方式為:
[0052]依次排列的上行數(shù)據(jù)包的第一字節(jié)、下行數(shù)據(jù)包的第一字節(jié)、上行數(shù)據(jù)包的第N字節(jié)和下行數(shù)據(jù)包第N字節(jié);
[0053]N為大于I的自然數(shù),且所述第一載荷數(shù)據(jù)流的字節(jié)數(shù)小于1000大于200。
[0054]可選地,采用深度學(xué)習(xí)模型對所述載荷數(shù)據(jù)流進(jìn)行協(xié)議識別之前,所述方法還包括:
[0055]采用已知的訓(xùn)練數(shù)據(jù)流及該訓(xùn)練數(shù)據(jù)流對應(yīng)的協(xié)議,獲取用于識別網(wǎng)絡(luò)數(shù)據(jù)的深度學(xué)習(xí)模型及與深度學(xué)習(xí)模型對應(yīng)的模型參數(shù);
[0056]所述已知的訓(xùn)練數(shù)據(jù)流包括已知多種協(xié)議標(biāo)簽的訓(xùn)練數(shù)據(jù)。
[0057]可選地,采用已知的訓(xùn)練數(shù)據(jù)流及該訓(xùn)練數(shù)據(jù)流對應(yīng)的協(xié)議,獲取用于識別網(wǎng)絡(luò)數(shù)據(jù)的深度學(xué)習(xí)模型,包括:
[0058]對每一協(xié)議對應(yīng)的訓(xùn)練數(shù)據(jù)中上行數(shù)據(jù)包和下行數(shù)據(jù)包進(jìn)行拼接,并進(jìn)行格式轉(zhuǎn)換,獲得第一數(shù)據(jù);
[0059]將所有協(xié)議對應(yīng)的格式轉(zhuǎn)換后的第一數(shù)據(jù)和該第一數(shù)據(jù)對應(yīng)的協(xié)議組成向量矩陣;
[0060]采用深度神經(jīng)網(wǎng)絡(luò)算法處理所述向量矩陣,獲得深度學(xué)習(xí)模型及模型參數(shù);或者,
[0061]采用棧式自編碼算法處理所述向量矩陣,獲得深度學(xué)習(xí)模型及模型參數(shù)。
[0062]可選地,所述對每一協(xié)議對應(yīng)的訓(xùn)練數(shù)據(jù)中上行數(shù)據(jù)包和下行數(shù)據(jù)包進(jìn)行拼接,并進(jìn)行格式轉(zhuǎn)換,獲得第一數(shù)據(jù),包括:
[0063]針對每一協(xié)議的訓(xùn)練數(shù)據(jù),將該訓(xùn)練數(shù)據(jù)的上行數(shù)據(jù)包的字節(jié)和下行數(shù)據(jù)包的字節(jié)按照預(yù)設(shè)策略進(jìn)行拼接,獲得字節(jié)數(shù)在第二預(yù)設(shè)范圍內(nèi)的第二數(shù)據(jù);
[0064]若所有協(xié)議的第二數(shù)據(jù)的格式為16進(jìn)制,則將該第二數(shù)據(jù)的格式轉(zhuǎn)換為10進(jìn)制,以及對格式轉(zhuǎn)換后的第二數(shù)據(jù)中每一字節(jié)除以255,獲得所述第一數(shù)據(jù);
[0065]或者,
[0066]若所有協(xié)議的第二數(shù)據(jù)的格式為10進(jìn)制,則將該第二數(shù)據(jù)中每一字節(jié)除以255,獲得所述第一數(shù)據(jù)。
[0067]可選地,針對每一協(xié)議的訓(xùn)練數(shù)據(jù),將該訓(xùn)練數(shù)據(jù)的上行數(shù)據(jù)包的字節(jié)和下行數(shù)據(jù)包的字節(jié)按照預(yù)設(shè)策略進(jìn)行拼接,獲得字節(jié)數(shù)在第二預(yù)設(shè)范圍內(nèi)的第二數(shù)據(jù)之后,所述方法還包括:
[0068]判斷當(dāng)前協(xié)議對應(yīng)的第二數(shù)據(jù)的字節(jié)數(shù)是否符合預(yù)設(shè)字節(jié)數(shù)范圍;
[0069]若當(dāng)前協(xié)議的第二數(shù)據(jù)的字節(jié)數(shù)大于預(yù)設(shè)字節(jié)數(shù)范圍,則對該第二數(shù)據(jù)進(jìn)行欠抽樣,獲得符合預(yù)設(shè)字節(jié)數(shù)范圍的第二數(shù)據(jù);
[0070]若當(dāng)前協(xié)議的第二數(shù)據(jù)的字節(jié)數(shù)小于預(yù)設(shè)的字節(jié)數(shù)范圍,則重復(fù)復(fù)制多次該協(xié)議的第二數(shù)據(jù),獲得符合預(yù)設(shè)字節(jié)數(shù)范圍的第二數(shù)據(jù)。
[0071]可選地,采用深度學(xué)習(xí)模型對所述載荷數(shù)據(jù)流進(jìn)行協(xié)議識別,獲取用于輸出的所述數(shù)據(jù)流的協(xié)議識別結(jié)果,包括:
[0072]采用深度學(xué)習(xí)模型對格式轉(zhuǎn)換后的載荷數(shù)據(jù)流進(jìn)行協(xié)議識別,獲得所述數(shù)據(jù)流中每一條待識別的數(shù)據(jù)屬于每一種協(xié)議的概率;
[0073]針對每一條待識別的數(shù)據(jù),選取概率最大的協(xié)議作為該