許文民
摘要:網(wǎng)絡(luò)流量捕獲對網(wǎng)絡(luò)分析有著十分重要的作用,特別是隨著網(wǎng)絡(luò)技術(shù)的發(fā)展與網(wǎng)絡(luò)需求的增加,都對網(wǎng)絡(luò)流量捕獲提出了更高的要求。本文對網(wǎng)絡(luò)流量捕獲的意義進(jìn)行了分析,并分析了網(wǎng)絡(luò)流量捕獲方法。
關(guān)鍵詞:網(wǎng)絡(luò)流量;數(shù)據(jù)包;數(shù)據(jù)包捕獲
隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展與網(wǎng)絡(luò)需求的空前增加,網(wǎng)絡(luò)用戶數(shù)量與網(wǎng)絡(luò)應(yīng)用的快速增長導(dǎo)致了網(wǎng)絡(luò)的性能下降。因此,對網(wǎng)絡(luò)性能進(jìn)行優(yōu)化、合理利用網(wǎng)絡(luò)資源已經(jīng)成為了人們普遍關(guān)注的焦點(diǎn)問題。網(wǎng)絡(luò)流量捕獲技術(shù)是對網(wǎng)絡(luò)性能進(jìn)行綜合評估的重要基礎(chǔ),因此對網(wǎng)絡(luò)流量捕獲技術(shù)進(jìn)行研究焊絲優(yōu)化網(wǎng)絡(luò)性能、提高網(wǎng)絡(luò)利用率的重要措施。
一、網(wǎng)絡(luò)流量捕獲的意義
對網(wǎng)絡(luò)流量進(jìn)行捕獲、分析,能發(fā)現(xiàn)網(wǎng)絡(luò)的瓶頸,對網(wǎng)絡(luò)的優(yōu)化打下良好基礎(chǔ)。網(wǎng)絡(luò)流量捕獲是網(wǎng)絡(luò)流量分析的重要基礎(chǔ),能夠明確網(wǎng)絡(luò)流量的變化,反映出在網(wǎng)絡(luò)運(yùn)行過程中所存在的故障、性能以及其他多個方面的信息。要準(zhǔn)確的明確網(wǎng)絡(luò)運(yùn)行的可靠性等信息,制定出科學(xué)合理的網(wǎng)絡(luò)性能優(yōu)化方案,就必須要對網(wǎng)絡(luò)運(yùn)行的歷史進(jìn)行定量化的記錄。網(wǎng)絡(luò)流量捕獲是對網(wǎng)絡(luò)運(yùn)行歷史進(jìn)行定量化記錄的重要手段,同時網(wǎng)絡(luò)流量捕獲也是對網(wǎng)絡(luò)進(jìn)行測量的重要手段。
隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,各種網(wǎng)絡(luò)應(yīng)用在不斷地增加,與此同時網(wǎng)絡(luò)的異構(gòu)性以及復(fù)雜性都在不斷的提高,而人們對網(wǎng)絡(luò)性能的滿意程度卻并沒有相應(yīng)的增高。當(dāng)前人們期望的是網(wǎng)絡(luò)能夠同時滿足高可靠性和高性能這兩方面的要求。因此,就需要設(shè)計(jì)出高速IP網(wǎng)絡(luò)流量捕獲監(jiān)測技術(shù),通過這種檢測技術(shù)來對高效網(wǎng)絡(luò)協(xié)議進(jìn)行分析,并開發(fā)出具有更高性能的網(wǎng)絡(luò)設(shè)備,并通過流量工程來改善網(wǎng)絡(luò)負(fù)載,使其變得更加的合理,并保證關(guān)鍵業(yè)務(wù)的性能。這些都需要對各層協(xié)議的詳細(xì)情況進(jìn)行定量的了解,其中包括了網(wǎng)絡(luò)流量與業(yè)務(wù)流的使用分布、增長趨勢等等。通過對這些信息的了解,進(jìn)而能夠建立起精確的網(wǎng)絡(luò)流量模型和業(yè)務(wù)流量、性能模型,這樣能夠更好的發(fā)現(xiàn)影響或者限制網(wǎng)絡(luò)性能的關(guān)鍵問題[1]。
二、網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù)分析
(一)數(shù)據(jù)包捕獲基本原理
物理基礎(chǔ):以太網(wǎng)本身具有共享介質(zhì)的特征,信息是以明文的凡是在網(wǎng)絡(luò)上進(jìn)行傳輸,當(dāng)網(wǎng)絡(luò)適配器設(shè)置為監(jiān)聽模式時,因?yàn)槭遣捎玫囊蕴W(wǎng)廣播信道征用的方式,這就能夠讓監(jiān)聽系統(tǒng)與正常的通信網(wǎng)絡(luò)系統(tǒng)進(jìn)行并聯(lián)連接,并且還能夠捕獲任何一個在同一個沖突領(lǐng)域中所傳輸?shù)臄?shù)據(jù)。
數(shù)據(jù)包捕獲的前提:每一臺網(wǎng)絡(luò)上的主機(jī)都擁有一個唯一的物理地址,通過物理地址就能夠找到網(wǎng)絡(luò)上的任何一臺主機(jī)。在共享式的網(wǎng)絡(luò)中,每一個主機(jī)所發(fā)送的數(shù)據(jù)報,處于同一個網(wǎng)絡(luò)中的其余主機(jī)都能夠接收到。主機(jī)上網(wǎng)卡的首要任務(wù)就是對當(dāng)前總線的狀態(tài)進(jìn)行不斷的探測,如果當(dāng)前網(wǎng)絡(luò)中有數(shù)據(jù)傳輸,那么就對所流經(jīng)的數(shù)據(jù)包進(jìn)行判斷分析,如果數(shù)據(jù)包中的目的地址與本機(jī)的不符就將該數(shù)據(jù)幀丟棄,否則就接收。而工作在混雜模式下的網(wǎng)卡則能夠接受所有流經(jīng)該網(wǎng)卡的數(shù)據(jù)幀,因此,要捕獲數(shù)據(jù)包,其前提就是將網(wǎng)卡設(shè)置在混雜模式下。
(二)BPF機(jī)制與Libpeap函數(shù)庫
BPF是S.Mceanne和V.Jaeobson等人所推出的包過濾器。BPF由網(wǎng)絡(luò)分接頭與數(shù)據(jù)過濾器所組成,其中,網(wǎng)絡(luò)分接頭是一個函數(shù),其主要用于網(wǎng)絡(luò)數(shù)據(jù)流。數(shù)據(jù)過濾器則是BPF的核心部分,用戶能夠通過對數(shù)據(jù)過濾器設(shè)置過濾規(guī)則,來捕獲自己所感興趣的所有數(shù)據(jù)包子集,其工作機(jī)制如圖1所示[2]:
Libpep是由Berkeiey大學(xué)的Van Jacobson、Steven McCanne和Craig Leres所開發(fā)的,是應(yīng)用在Linux平臺下的,用來對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行捕獲的跨平臺編程接口,是一個獨(dú)立于系統(tǒng)的、用戶層數(shù)據(jù)包捕獲函數(shù)庫。因?yàn)槭枪ぷ髟谟脩魧樱詫Σ僮飨到y(tǒng)細(xì)節(jié)進(jìn)行了隱藏,使用更加的方便,其主要包括了三個部分:最底層是針對硬件設(shè)備接口的數(shù)據(jù)包捕獲機(jī)制,中間是針對內(nèi)核級的包過濾機(jī)制,最后一層是針對用戶程序的接口。
(三)數(shù)據(jù)包捕獲工作流程
數(shù)據(jù)包捕獲流程主要有以下幾個方面:(1)對主機(jī)網(wǎng)絡(luò)機(jī)構(gòu)列表進(jìn)行查找,并選擇可用網(wǎng)絡(luò)接口;(2)進(jìn)行初始化,必須要對實(shí)行數(shù)據(jù)包捕獲的設(shè)備進(jìn)行設(shè)置;(3)對過濾器進(jìn)行設(shè)置,用戶需要根據(jù)自己的需要提前對過濾規(guī)則進(jìn)行設(shè)置;(4)對數(shù)據(jù)包進(jìn)行捕獲;(5)對數(shù)據(jù)包進(jìn)行解析,在捕獲到符合要求的數(shù)據(jù)包之后,并不能夠直接獲取所感興趣的信息,而是需要進(jìn)行相應(yīng)的處理;(6)結(jié)束工作,在完成數(shù)據(jù)包捕獲工作之后,需要結(jié)束響應(yīng)的程序,關(guān)閉會話以釋放資源。
三、結(jié)語
基于不同技術(shù)的數(shù)據(jù)包捕獲技術(shù)其實(shí)現(xiàn)的具體方式也不相同,但是數(shù)據(jù)包捕獲的基本原理與工作流程都是基本相同的。通過對數(shù)據(jù)包捕獲技術(shù)的分析能夠更好的實(shí)現(xiàn)網(wǎng)絡(luò)流量捕獲,進(jìn)而為網(wǎng)絡(luò)分析提供更加可靠的依據(jù)。
參考文獻(xiàn)
[1] 王月輝.基于WinPcap的網(wǎng)絡(luò)數(shù)據(jù)捕獲和分析系統(tǒng)的研究與實(shí)現(xiàn)[D].沈陽:沈陽工業(yè)大學(xué),2007.
[2] 張偉,等.基于WinPcap的數(shù)據(jù)包捕獲及應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(7):1649-1651.