一種基于網(wǎng)絡(luò)數(shù)據(jù)流的http內(nèi)容還原方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)管理技術(shù),尤其是一種基于網(wǎng)絡(luò)數(shù)據(jù)流的HTTP內(nèi)容還原技術(shù)。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)管理中,有時(shí)需要對(duì)上網(wǎng)用戶訪問(wèn)的內(nèi)容進(jìn)行監(jiān)控,具體做法是在客戶端及服務(wù)端接入監(jiān)測(cè)點(diǎn),復(fù)制兩者來(lái)往的數(shù)據(jù)流,從數(shù)據(jù)流中還原HTTP內(nèi)容,達(dá)到監(jiān)視上網(wǎng)內(nèi)容的目的。
[0003]現(xiàn)有的技術(shù)方案包括的步驟有:抓取實(shí)時(shí)網(wǎng)絡(luò)數(shù)據(jù)流;過(guò)濾HTTP協(xié)議的數(shù)據(jù)流;重組HTTP會(huì)話;搜索傳輸html的HTTP會(huì)話,并根據(jù)HTTP協(xié)議頭解碼二進(jìn)制數(shù)據(jù),然后保存數(shù)據(jù)為html文件;用瀏覽器打開(kāi)html文件。
[0004]現(xiàn)有的技術(shù)方案存在這樣的缺陷:
1.由于訪問(wèn)一個(gè)網(wǎng)站可能涉及到多個(gè)HTTP會(huì)話和多個(gè)TCP會(huì)話,如果只針對(duì)一個(gè)主要的傳輸html的HTTP會(huì)話進(jìn)行內(nèi)容還原,其還原出來(lái)的數(shù)據(jù)準(zhǔn)確性差,或者還原出來(lái)的網(wǎng)頁(yè)只有基礎(chǔ)的文字信息。
[0005]2.由于是進(jìn)行實(shí)時(shí)抓包,實(shí)時(shí)還原,設(shè)置超時(shí)時(shí)長(zhǎng)便成為一個(gè)問(wèn)題。超時(shí)時(shí)長(zhǎng)設(shè)置長(zhǎng)了,系統(tǒng)的性能會(huì)下降,系統(tǒng)需要更多的緩存來(lái)緩存數(shù)據(jù);設(shè)置超時(shí)時(shí)長(zhǎng)短了,會(huì)導(dǎo)致數(shù)據(jù)還原失敗,或者還原出來(lái)的內(nèi)容丟失部分?jǐn)?shù)據(jù)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種更準(zhǔn)確、全面還原指定時(shí)間內(nèi)指定客戶端IP地址訪問(wèn)的HTTP內(nèi)容的技術(shù)。
[0007]本發(fā)明提供的基于網(wǎng)絡(luò)數(shù)據(jù)流的HTTP內(nèi)容還原方法,包括數(shù)據(jù)包采集步驟及HTTP內(nèi)容還原步驟;其中,
數(shù)據(jù)包采集步驟包括:
步驟al:找到某局域網(wǎng)的出口交換機(jī),復(fù)制出口交換機(jī)的IPv4數(shù)據(jù)包到緩存區(qū);
步驟a2:將緩存區(qū)中的IPv4數(shù)據(jù)包分流到不同的IP會(huì)話中;
步驟a3:將分類(lèi)結(jié)果及數(shù)據(jù)包存儲(chǔ)到磁盤(pán);
HTTP內(nèi)容還原步驟包括:
步驟bl:接收用戶通過(guò)控制臺(tái)指定的時(shí)間范圍及至少一個(gè)IP地址;
步驟b2:從所述磁盤(pán)中讀取在指定時(shí)間范圍內(nèi)及指定IP地址的數(shù)據(jù)包;
步驟b3:識(shí)別出其中屬于TCP會(huì)話的數(shù)據(jù)包;
步驟b4:對(duì)TCP會(huì)話的數(shù)據(jù)包進(jìn)行重組,恢復(fù)各個(gè)數(shù)據(jù)包之間的正常順序;
步驟b5:識(shí)別出重組后的TCP會(huì)話數(shù)據(jù)包屬于HTTP會(huì)話的數(shù)據(jù)包;
步驟b6:將每條HTTP會(huì)話進(jìn)行數(shù)據(jù)還原;
步驟b7:在還原得到的數(shù)據(jù)中區(qū)分出主HTML數(shù)據(jù)、子HTML數(shù)據(jù)及資源數(shù)據(jù);并查找到各個(gè)主HTML數(shù)據(jù)關(guān)聯(lián)的子HTML數(shù)據(jù)及資源數(shù)據(jù);將還原得到的數(shù)據(jù)及其之間的關(guān)聯(lián)關(guān)系發(fā)送給控制臺(tái)。
[0008]進(jìn)一步,所述數(shù)據(jù)包采集步驟及HTTP內(nèi)容還原步驟在服務(wù)器上執(zhí)行;所述控制臺(tái)與服務(wù)器具有信號(hào)連接,所述控制臺(tái)用于接收用戶輸入的所述時(shí)間范圍及所述IP地址,向服務(wù)器發(fā)送HTTP數(shù)據(jù)還原請(qǐng)求以及接收并顯示服務(wù)器返回的還原數(shù)據(jù)及各數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。
[0009]所述步驟b4進(jìn)一步包括將屬于同一TCP會(huì)話中的數(shù)據(jù)包依據(jù)數(shù)據(jù)包的類(lèi)型、發(fā)送序號(hào)及接收序號(hào)排序;
其中,數(shù)據(jù)包的類(lèi)型包括客戶端發(fā)送的數(shù)據(jù)包及服務(wù)器返回的數(shù)據(jù)包;
排序后的數(shù)據(jù)包至少滿足這樣的規(guī)則:排序在前的客戶端發(fā)送的數(shù)據(jù)包的發(fā)送序號(hào)小于或等于排序在其后的服務(wù)器返回的數(shù)據(jù)包的接收序號(hào)。
[0010]本發(fā)明還提供了一種基于網(wǎng)絡(luò)數(shù)據(jù)流的HTTP內(nèi)容還原系統(tǒng),包括數(shù)據(jù)包采集模塊及HTTP內(nèi)容還原模塊;其中,
數(shù)據(jù)包采集模塊包括:
復(fù)制子模塊,用于找到某局域網(wǎng)的出口交換機(jī),復(fù)制出口交換機(jī)的IPv4數(shù)據(jù)包到緩存區(qū);
分流子模塊,將緩存區(qū)中的IPv4數(shù)據(jù)包分流到不同的IP會(huì)話中;
存儲(chǔ)子模塊,用于將分類(lèi)結(jié)果及數(shù)據(jù)包存儲(chǔ)到磁盤(pán);
HTTP內(nèi)容還原模塊包括:
還原參數(shù)接收子模塊,用于接收用戶通過(guò)控制臺(tái)指定的時(shí)間范圍及至少一個(gè)IP地址; 讀取子模塊,用于從所述磁盤(pán)中讀取在指定時(shí)間范圍內(nèi)及指定IP地址的數(shù)據(jù)包;
TCP會(huì)話識(shí)別子模塊,用于識(shí)別出其中屬于TCP會(huì)話的數(shù)據(jù)包;
TCP會(huì)話重組子模塊,用于對(duì)TCP會(huì)話的數(shù)據(jù)包進(jìn)行重組,恢復(fù)各個(gè)數(shù)據(jù)包之間的正常順序;
HTTP會(huì)話識(shí)別子模塊,用于識(shí)別出重組后的TCP會(huì)話數(shù)據(jù)包屬于HTTP會(huì)話的數(shù)據(jù)包; HTTP會(huì)話還原子模塊,用于將每條HTTP會(huì)話進(jìn)行數(shù)據(jù)還原;
關(guān)聯(lián)子模塊,用于在還原得到的數(shù)據(jù)中區(qū)分出主HTML數(shù)據(jù)、子HTML數(shù)據(jù)及資源數(shù)據(jù);并查找到各個(gè)主HTML數(shù)據(jù)關(guān)聯(lián)的子HTML數(shù)據(jù)及資源數(shù)據(jù);將還原得到的數(shù)據(jù)及其之間的關(guān)聯(lián)關(guān)系發(fā)送給控制臺(tái)。
[0011]進(jìn)一步,還包括交互模塊,用于接收用戶輸入的所述時(shí)間范圍及所述IP地址,向服務(wù)器發(fā)送HTTP數(shù)據(jù)還原請(qǐng)求以及接收并顯示服務(wù)器返回的還原數(shù)據(jù)及各數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。
[0012]所述TCP會(huì)話重組子模塊進(jìn)一步用于將屬于同一TCP會(huì)話中的數(shù)據(jù)包依據(jù)數(shù)據(jù)包的類(lèi)型、發(fā)送序號(hào)及接收序號(hào)排序;
其中,數(shù)據(jù)包的類(lèi)型包括客戶端發(fā)送的數(shù)據(jù)包及服務(wù)器返回的數(shù)據(jù)包;
排序后的數(shù)據(jù)包至少滿足這樣的規(guī)則:排序在前的客戶端發(fā)送的數(shù)據(jù)包的發(fā)送序號(hào)小于或等于排序在其后的服務(wù)器返回的數(shù)據(jù)包的接收序號(hào)。
[0013]綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
本發(fā)明采用全流量存儲(chǔ)、對(duì)每個(gè)HTTP會(huì)話進(jìn)行逐一還原并將還原數(shù)據(jù)得到的主HTML數(shù)據(jù)、子HTML數(shù)據(jù)及資源數(shù)據(jù)進(jìn)行關(guān)聯(lián),因此還原的準(zhǔn)確性非常高;控制臺(tái)完成交互工作,接收用戶指定的還原參數(shù)、顯示還原結(jié)果,其可視化展示使得結(jié)果一目了然;在進(jìn)行HTTP數(shù)據(jù)還原時(shí),可采用多任務(wù)模式處理,使得還原效率也比較高。
【附圖說(shuō)明】
[0014]本發(fā)明將通過(guò)例子并參照附圖的方式說(shuō)明,其中:
圖1為本發(fā)明方法中數(shù)據(jù)包抓取步驟的流程圖。
[0015]圖2為本發(fā)明方法中HTTP內(nèi)容還原步驟的流程圖。
[0016]圖3為本發(fā)明一個(gè)具體實(shí)施例中控制器與還原服務(wù)器的連接關(guān)系示意圖。
【具體實(shí)施方式】
[0017]本說(shuō)明書(shū)中公開(kāi)的所有特征,或公開(kāi)的所有方法或過(guò)程中的步驟,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
[0018]本說(shuō)明書(shū)中公開(kāi)的任一特征,除非特別敘述,均可被其他等效或具有類(lèi)似目的的替代特征加以替換。即,除非特別敘述,每個(gè)特征只是一系列等效或類(lèi)似特征中的一個(gè)例子而已。
[0019]本發(fā)明提供的基于網(wǎng)絡(luò)數(shù)據(jù)流的HTTP內(nèi)容還原方法,包括數(shù)據(jù)包采集步驟及HTTP內(nèi)容還原步驟。
[0020]參見(jiàn)圖1,數(shù)據(jù)包采集步驟包括:
步驟al: 一般來(lái)說(shuō),HTTP內(nèi)容訪問(wèn)監(jiān)控是對(duì)局域網(wǎng)內(nèi)的客戶端計(jì)算機(jī)進(jìn)行的,局域網(wǎng)中各個(gè)計(jì)算機(jī)與互聯(lián)網(wǎng)服務(wù)器(提供瀏覽內(nèi)容的,與本發(fā)明中的還原服務(wù)器相區(qū)別)之間的信息交互均要通過(guò)局域網(wǎng)的出口交換器,因此需要找到該局域網(wǎng)的出口交換機(jī),復(fù)制出口交換機(jī)的IPv4數(shù)據(jù)包到緩存區(qū)。
[0021]更具體的,從預(yù)先準(zhǔn)備好的內(nèi)存緩存隊(duì)列中取出一塊可用的數(shù)據(jù)包緩存區(qū),判斷該數(shù)據(jù)包是否是IPv4數(shù)據(jù)包,如是則將數(shù)據(jù)包存入該緩存區(qū),并將該緩存標(biāo)記為當(dāng)前緩存區(qū),若不是則丟棄。新的IPv4數(shù)據(jù)包到來(lái)時(shí)繼續(xù)存入當(dāng)前緩存區(qū),如果當(dāng)前緩存空間不夠,則從緩存隊(duì)列中取出新的緩存區(qū)存儲(chǔ)數(shù)據(jù)包,并將新的緩存區(qū)標(biāo)記為當(dāng)前緩存;已存滿的緩存區(qū)數(shù)據(jù)包存入處理隊(duì)列,等待分析線程處理。
[0022]步驟a2:分析線程逐一查看數(shù)據(jù)包,根據(jù)數(shù)據(jù)包內(nèi)容將其分到不同的IP會(huì)話中; 步驟a3:將分類(lèi)結(jié)果,即各數(shù)據(jù)包所屬的IP會(huì)話,及數(shù)據(jù)包存儲(chǔ)到磁盤(pán)。
[0023]HTTP內(nèi)容還原步驟包括:
步驟bl:接收用戶通過(guò)控制臺(tái)指定的時(shí)間范圍及至少一個(gè)IP地址以便得到指定時(shí)間范圍內(nèi),指定IP地址的主機(jī)接收或發(fā)出的數(shù)據(jù)包;在其他實(shí)施例中用戶可以指定一個(gè)IP地址的范圍,對(duì)多個(gè)主機(jī)進(jìn)行監(jiān)管。
[0024]步驟b2:從所述磁盤(pán)中讀取在指定時(shí)間范圍內(nèi)及指定IP地址的數(shù)據(jù)包。
[0025]步驟b3:識(shí)別出其中屬于TCP會(huì)話的數(shù)據(jù)包;在數(shù)據(jù)包中某些字段用于標(biāo)識(shí)該數(shù)據(jù)包所屬的會(huì)話,據(jù)此可以識(shí)別出屬于TCP會(huì)話的數(shù)據(jù)包。
[0026]步驟b4:對(duì)TCP會(huì)話的數(shù)據(jù)包進(jìn)行重組,恢復(fù)各個(gè)數(shù)據(jù)包之間的正常順序。由于網(wǎng)絡(luò)環(huán)境的復(fù)雜性,原始的TCP會(huì)話可能存在重傳和亂序,重組是為了解決重傳和亂序問(wèn)題,以便于后續(xù)更準(zhǔn)確的內(nèi)容還原。
[