一種基于dns和包長(zhǎng)組合的應(yīng)用識(shí)別方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)應(yīng)用技術(shù)領(lǐng)域,具體地講,是涉及一種基于DNS和包長(zhǎng)組合的應(yīng) 用識(shí)別方法。
【背景技術(shù)】
[0002] 目前,基于網(wǎng)絡(luò)的終端應(yīng)用程序越來越多,當(dāng)用戶在同一終端上同時(shí)開啟多種應(yīng) 用程序時(shí),如何對(duì)各種網(wǎng)絡(luò)應(yīng)用程序有效地分配網(wǎng)絡(luò)帶寬,保障各種網(wǎng)絡(luò)應(yīng)用程序高效正 常地運(yùn)行成了一種新的用戶需求。要想實(shí)現(xiàn)這種用戶需求的首先任務(wù)是在網(wǎng)絡(luò)中識(shí)別這些 應(yīng)用程序,因此快速準(zhǔn)確地識(shí)別應(yīng)用程序至關(guān)重要。
[0003] 當(dāng)前存在的網(wǎng)路應(yīng)用識(shí)別方法主要為端口識(shí)別技術(shù)和基于報(bào)文內(nèi)容的深度識(shí)別 技術(shù): 端口識(shí)別技術(shù)是通過分析網(wǎng)絡(luò)數(shù)據(jù)包的端口信息來分析HTTP協(xié)議,因此端口識(shí)別技 術(shù)只能對(duì)基礎(chǔ)的基于http協(xié)議的應(yīng)用進(jìn)行識(shí)別,而現(xiàn)在很多的應(yīng)用都是采用了 P2P協(xié)議, 其所要占用的通信端口都是不確定的、動(dòng)態(tài)變更的,端口識(shí)別技術(shù)在此就顯得無能為力了, 無法實(shí)現(xiàn)對(duì)這些應(yīng)用的識(shí)別,如此導(dǎo)致其在基于互聯(lián)網(wǎng)層面上對(duì)各種應(yīng)用的識(shí)別率非常 低,誤判率高; 基于報(bào)文內(nèi)容的深度識(shí)別技術(shù)耗費(fèi)時(shí)間比較長(zhǎng),其在每次建立新連接時(shí)都需要對(duì)報(bào)文 內(nèi)容進(jìn)行深度識(shí)別,識(shí)別計(jì)算量大,導(dǎo)致其識(shí)別效率低下,無法滿足對(duì)實(shí)時(shí)性要求高的應(yīng)用 場(chǎng)景。
[0004] 綜上所述,現(xiàn)有技術(shù)中的應(yīng)用識(shí)別方法存在識(shí)別率低、誤判率高、實(shí)時(shí)性低的缺 點(diǎn)。
【發(fā)明內(nèi)容】
[0005] 為克服現(xiàn)有技術(shù)中的上述問題,本發(fā)明提供一種構(gòu)思新穎、設(shè)計(jì)巧妙、能夠快速準(zhǔn) 確地對(duì)應(yīng)用識(shí)別的基于DNS和包長(zhǎng)組合的應(yīng)用識(shí)別方法。
[0006] 為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下: 一種基于DNS和包長(zhǎng)組合的應(yīng)用識(shí)別方法,包括如下步驟: (SlO)當(dāng)終端通過某應(yīng)用與外網(wǎng)建立網(wǎng)絡(luò)連接時(shí),在網(wǎng)絡(luò)設(shè)備中創(chuàng)建對(duì)應(yīng)的連接跟蹤 表,用以分配每個(gè)經(jīng)過該連接的數(shù)據(jù)包,形成相應(yīng)的連接記錄項(xiàng); (S20 )通過快速查找表對(duì)所述連接跟蹤表進(jìn)行特征匹配,若匹配成功,命中快速查找表 內(nèi)已有的記錄,則完成識(shí)別,否則進(jìn)行下一步; (S30)通過DNS檢測(cè)模塊判斷該連接是否命中DNS應(yīng)用識(shí)別庫,若命中,則標(biāo)記該連接 完成識(shí)別,否則進(jìn)行下一步; (S40)通過包長(zhǎng)檢測(cè)模塊對(duì)經(jīng)過該連接的構(gòu)成會(huì)話序列的多個(gè)數(shù)據(jù)包進(jìn)行特征匹配, 判斷是否命中包長(zhǎng)應(yīng)用識(shí)別庫,若命中,則匹配成功,標(biāo)記該連接完成識(shí)別,否則識(shí)別失敗, 不再匹配; 其中,所述快速查找表、DNS應(yīng)用識(shí)別庫和包長(zhǎng)應(yīng)用識(shí)別庫存儲(chǔ)于網(wǎng)絡(luò)設(shè)備中。DNS (Domain Name System,域名系統(tǒng))。
[0007] 進(jìn)一步地,為了提高識(shí)別速度,該基于DNS和包長(zhǎng)組合的應(yīng)用識(shí)別方法,還包括: (S50)將所有完成識(shí)別的連接及其特征加入快速查找表中緩存。
[0008] 具體地,所述步驟(SlO)中連接跟蹤表記錄的特征包括該連接的狀態(tài)、地址和端 口,以及該連接所采用的協(xié)議。
[0009] 為了保證快速查找表的匹配速度,所述快速查找表的老化基于時(shí)長(zhǎng)或者命中次 數(shù)。所述基于時(shí)長(zhǎng)有兩種方式,其一是快速查找表中保存的特征數(shù)據(jù)信息在一設(shè)定時(shí)間內(nèi) 沒有命中則失效,其二是將快速查找表內(nèi)信息按命中時(shí)間排序,當(dāng)快速查找表的儲(chǔ)存容量 達(dá)上限又有新的特征信息加入時(shí),排序最末即未命中時(shí)間最久的信息失效;所述基于命中 次數(shù)有兩種方式,其一是快速查找表中保存的特征數(shù)據(jù)信息超過命中次數(shù)閥值則失效,其 二是將快速查找表內(nèi)信息按命中次數(shù)高低排序,當(dāng)快速查找表的儲(chǔ)存容量達(dá)上限又有新的 特征信息加入時(shí),排序最末即命中次數(shù)最少的信息失效。為了更合理更有效地利用快速查 找表,優(yōu)選采用基于時(shí)長(zhǎng)和命中次數(shù)相結(jié)合的方式。
[0010] 為了實(shí)現(xiàn)DNS識(shí)別,所述步驟(S30)中判斷是否命中的方法如下: (531) 所述DNS應(yīng)用識(shí)別庫內(nèi)預(yù)先存儲(chǔ)有域名與應(yīng)用的對(duì)應(yīng)表信息,根據(jù)建立該網(wǎng)絡(luò) 連接時(shí)的DNS響應(yīng)報(bào)文中攜帶的IP地址與域名的對(duì)應(yīng)表信息,獲得并存儲(chǔ)該IP地址、域名 和應(yīng)用的三元對(duì)應(yīng)表; (532) 判斷該連接的目的IP地址是否存在于所述三元對(duì)應(yīng)表,若是,則命中,由此獲得 該連接對(duì)應(yīng)的域名以及對(duì)應(yīng)的應(yīng)用,否則未命中。
[0011] 為了保持識(shí)別的準(zhǔn)確性和及時(shí)性,所述DNS應(yīng)用識(shí)別庫和包長(zhǎng)應(yīng)用識(shí)別庫均由云 服務(wù)器定期更新。
[0012] 為了進(jìn)一步提高應(yīng)用識(shí)別的準(zhǔn)確度,所述步驟(S40)中,依次對(duì)同一會(huì)話序列中的 每個(gè)所述數(shù)據(jù)包進(jìn)行匹配,其具體過程如下: (541) 獲取當(dāng)前數(shù)據(jù)包傳輸?shù)姆较颍?(542) 將該數(shù)據(jù)包的負(fù)載長(zhǎng)度作為對(duì)象通過包長(zhǎng)檢測(cè)模塊進(jìn)行匹配,篩選出命中的應(yīng) 用識(shí)別號(hào),若未命中,則標(biāo)記該方向檢測(cè)結(jié)束,反之則記錄命中的應(yīng)用識(shí)別號(hào)形成命中記錄 表,并進(jìn)入步驟(S43); (543) 將當(dāng)前命中記錄表與本方向上此前的命中記錄表取交集,獲得命中交集表,若 存在本方向的上一次命中交集表,所述當(dāng)前命中記錄表與本方向上一次的命中交集表取交 集;若當(dāng)前命中記錄表為本方向第一次記錄,則將該命中記錄表作為命中交集表; (544) 判斷命中交集表是否為空,若是,則標(biāo)記該方向檢測(cè)結(jié)束,否則進(jìn)入步驟(S45); (545) 判斷該數(shù)據(jù)包是否為葉子節(jié)點(diǎn),若是,則將該命中交集表作為本方向記錄表并進(jìn) 入步驟(S46),否則跳轉(zhuǎn)到步驟(S41)對(duì)下一個(gè)數(shù)據(jù)包進(jìn)行匹配; (546) 再按步驟(S41)~(S45)的方法獲取該會(huì)話序列中其方向與所述本方向記錄表相 對(duì)的反方向記錄表,若獲得,則進(jìn)入步驟(S47),反之則未命中包長(zhǎng)應(yīng)用識(shí)別庫,識(shí)別失敗; (547) 對(duì)所述本方向記錄表和反方向記錄表取交集,若為空,則未命中包長(zhǎng)應(yīng)用識(shí)別 庫,識(shí)別失敗,反之則命中包長(zhǎng)應(yīng)用識(shí)別庫,完成識(shí)別,記錄相應(yīng)的應(yīng)用識(shí)別號(hào); 其中,所述葉子節(jié)點(diǎn)是指該會(huì)話序列中每一個(gè)方向上的最后一個(gè)數(shù)據(jù)包,所述應(yīng)用識(shí) 別號(hào)是網(wǎng)絡(luò)設(shè)備內(nèi)部對(duì)各應(yīng)用預(yù)設(shè)的身份編碼。
[0013] 為進(jìn)一步提高包長(zhǎng)檢測(cè)的準(zhǔn)確度,所述步驟(S42)中,當(dāng)匹配命中有應(yīng)用識(shí)別號(hào)時(shí) 還通過DPI檢測(cè)模塊對(duì)該數(shù)據(jù)包負(fù)載進(jìn)行深度報(bào)文檢測(cè),若DPI未命中,則標(biāo)記該方向檢測(cè) 結(jié)束,反之則記錄命中的應(yīng)用識(shí)別號(hào)形成命中記錄表。
[0014] DPI (Deep Packet Inspection,深度包檢測(cè)),DPI技術(shù)是現(xiàn)有較為成熟的技術(shù), 本發(fā)明中不再贅述。
[0015] 更進(jìn)一步地,為考慮到一些特殊情況的篩選,所述步驟(S42)或(S44)中,當(dāng)標(biāo)記 該方向檢測(cè)結(jié)束時(shí),跳轉(zhuǎn)到步驟:(S48)判斷包長(zhǎng)檢測(cè)模塊是否設(shè)置有單方向識(shí)別模塊,若 是,則進(jìn)入步驟(S49),否則識(shí)別失敗; (S49 )獲取反方向的數(shù)據(jù)包,并按步驟(S41)~(S45 )的方法對(duì)所述反方向的數(shù)據(jù)包進(jìn) 行匹配,若獲得對(duì)應(yīng)的反方向記錄表,則識(shí)別成功,記錄相應(yīng)的應(yīng)用識(shí)別號(hào),反之則識(shí)別失 ??; 其中,所述單方向識(shí)別模塊是指僅判斷會(huì)話序列中一個(gè)方向的數(shù)據(jù)包即確定唯一應(yīng)用 識(shí)別號(hào)的模塊。
[0016] 更進(jìn)一步地,所述步驟(S45)中,在確定本方向記錄表之后,在進(jìn)入步驟(S46)之 前,插入對(duì)本方向數(shù)據(jù)包進(jìn)行單方向識(shí)別的判斷:跳轉(zhuǎn)到步驟(S48')判斷包長(zhǎng)檢測(cè)模塊是 否設(shè)置有單方向識(shí)別模塊,若是,則通過單方向識(shí)別模塊確定應(yīng)用識(shí)別號(hào),完成識(shí)別,記錄 相應(yīng)的應(yīng)用識(shí)別號(hào),否則進(jìn)入步驟(S46)。
[0017] 具體地,所述步驟(S42)中,包長(zhǎng)檢測(cè)模塊將數(shù)據(jù)包負(fù)載長(zhǎng)度對(duì)比包長(zhǎng)應(yīng)用識(shí)別庫 判斷是否命中來進(jìn)行匹配篩選。
[0018] 為了加快識(shí)別速度,對(duì)于TCP協(xié)議,忽略syn報(bào)文的檢測(cè),對(duì)于TCP和UCP協(xié)議,忽 略負(fù)載長(zhǎng)度為〇的數(shù)據(jù)包檢查。
[0019] 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果: (1)本發(fā)明通過終端聯(lián)網(wǎng)時(shí)在中間網(wǎng)絡(luò)設(shè)備上創(chuàng)建的連接跟蹤表來識(shí)別相應(yīng)的應(yīng)用, 并利用DNS識(shí)別和數(shù)據(jù)包包長(zhǎng)及DPI識(shí)別相結(jié)合的方式,提前排除干擾因素,大大提高了對(duì) 終端應(yīng)用識(shí)別的效率,而且由于設(shè)置