![畢業(yè)設(shè)計(jì)-局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)—論文_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/0f9cadd6-3237-4d33-82da-4c260a6687f5/0f9cadd6-3237-4d33-82da-4c260a6687f51.gif)
![畢業(yè)設(shè)計(jì)-局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)—論文_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/0f9cadd6-3237-4d33-82da-4c260a6687f5/0f9cadd6-3237-4d33-82da-4c260a6687f52.gif)
![畢業(yè)設(shè)計(jì)-局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)—論文_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/0f9cadd6-3237-4d33-82da-4c260a6687f5/0f9cadd6-3237-4d33-82da-4c260a6687f53.gif)
![畢業(yè)設(shè)計(jì)-局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)—論文_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/0f9cadd6-3237-4d33-82da-4c260a6687f5/0f9cadd6-3237-4d33-82da-4c260a6687f54.gif)
![畢業(yè)設(shè)計(jì)-局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)—論文_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/0f9cadd6-3237-4d33-82da-4c260a6687f5/0f9cadd6-3237-4d33-82da-4c260a6687f55.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢畢 業(yè)業(yè) 設(shè)設(shè) 計(jì)計(jì)( 論論 文文) 局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā) 論文作者姓名:論文作者姓名: 申請學(xué)位專業(yè):申請學(xué)位專業(yè): 申請學(xué)位類別:申請學(xué)位類別: 指指導(dǎo)導(dǎo)教教師師姓姓名名(職職稱稱) : 論文提交日期:論文提交日期: 局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā)局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)與開發(fā) 摘摘 要要 網(wǎng)絡(luò)監(jiān)聽軟件是提供給網(wǎng)絡(luò)安全管理人員進(jìn)行安全管理的工具,可以用來 監(jiān)視網(wǎng)絡(luò)的狀態(tài)、數(shù)據(jù)流動情況以及網(wǎng)絡(luò)上傳輸?shù)男畔?,以獲取有用信息。作 為黑客來說,通過網(wǎng)絡(luò)監(jiān)聽可以獲取其所需信息(比如密碼等) ;對黑客活動和 其他網(wǎng)絡(luò)犯罪進(jìn)行偵察、取證時(shí),可以使用網(wǎng)絡(luò)監(jiān)聽技術(shù)來獲取必要的信息。
2、 因此,在目前研究和使用網(wǎng)絡(luò)監(jiān)聽技術(shù)及相關(guān)工具,對于防護(hù)網(wǎng)絡(luò)安全、打擊 網(wǎng)絡(luò)犯罪具有重要的現(xiàn)實(shí)意義。 本局域網(wǎng)監(jiān)聽軟件主要利用 winpcap 和 jpcap 等工具進(jìn)行開發(fā),使用 java 語言在 eclipse 3.2 環(huán)境下進(jìn)行開發(fā)。軟件主要實(shí)現(xiàn)了對網(wǎng)絡(luò)上的數(shù)據(jù)進(jìn)行監(jiān)聽, 并分析出每一協(xié)議層的傳輸數(shù)據(jù)和協(xié)議層上主要字段的數(shù)據(jù),然后將其顯示出 來,同時(shí)進(jìn)行動態(tài)更新;另外,添加了一些附加功能(指定對象監(jiān)聽、餅狀圖 顯示、界面選擇等) 。經(jīng)過測試與分析,說明了該軟件運(yùn)行穩(wěn)定、可靠,具有一 定的實(shí)際應(yīng)用價(jià)值。 關(guān)鍵詞:關(guān)鍵詞:局域網(wǎng);網(wǎng)絡(luò)監(jiān)聽;協(xié)議層;數(shù)據(jù)傳輸;對象監(jiān)聽 design and d
3、evelopment of lan monitoring software abstract network-monitoring software is a secure management tool providing for the network security administrator. it can obtain useful information which monitors the network status, data flowing and information of network transmitting. hackers can get the neces
4、sary information (such as password and so on) by means of network - monitoring. hacker may gain the information which its needs (for instance password and so on) through the network-monitoring; carrying on taking the reconnaissance and collecting the evidences about the hacker activity and other net
5、work crime, we may use the network monitor technology to gain the essential information. therefore, studying and using network-monitoring technology and the correlate tool in present, it is important and practical significance for protecting network security and attacking network crime. this local a
6、rea network-monitoring software mainly is developed by using of winpcap, jpcap, the java language and so on in the eclipse 3.2 environment. this software mainly realizes monitoring the network data, analyzes the transmission data and the main field data on each protocol layer, and then demonstrates
7、it, carries on the dynamic renewal. simultaneously, this software increases some attachment functions (such as assigning object monitor, demonstrating of cake shape, the choice of surface etc.). after testing and the analyzing, which shows that this software is stable, reliable, and having the certa
8、in practical application value. key words: lan; network monitoring; protocol layer; data transmission; object monitoring 目目 錄錄 論文總頁數(shù):33 頁 1 引言.1 1.1 課題背景.1 1.2 本課題研究的意義.1 1.3 本課題的研究方法.1 1.4 本論文主要工作.2 2 需求分析.2 2.1 需求分析概述.2 2.2 本軟件的需求分析.3 2.2.1 本軟件實(shí)現(xiàn)的目標(biāo).3 2.2.2 本軟件的運(yùn)行環(huán)境要求.3 2.2.3 本軟件的功能要求.4 2.2.4 本軟件功
9、能的擴(kuò)充.4 3 理論基礎(chǔ)與相關(guān)工具介紹.4 3.1 網(wǎng)絡(luò)監(jiān)聽原理介紹.4 3.2 tcp/ip 的層次結(jié)構(gòu).5 3.2.1 osi 與 tcp/ip 體系結(jié)構(gòu)的比較.5 3.2.2 tcp/ip 四層協(xié)議的表示方法舉例.7 3.2.3 使用 tcp/ip 進(jìn)行通信的示意圖.7 3.3 winpcap 簡介 .8 3.4 jpcap 簡介.9 4 設(shè)計(jì)思路.10 4.1 設(shè)計(jì)框架圖.10 4.2 設(shè)計(jì)步驟.11 4.2.1 整體規(guī)劃.11 4.2.2 程序運(yùn)行流程.11 5 具體實(shí)現(xiàn)步驟.12 5.1 使用 eclipse 3.2 創(chuàng)建項(xiàng)目.12 5.1.1 創(chuàng)建項(xiàng)目.12 5.1.2 創(chuàng)建包
10、.13 5.1.3 創(chuàng)建類.14 5.2 analyzer 包的設(shè)計(jì).14 5.2.1 analyzer 包的作用.14 5.2.2 analyzer 包中各個(gè)類的作用與實(shí)現(xiàn)方式.15 5.3 stat 包的設(shè)計(jì).17 5.3.1 stat 包的作用.17 5.3.2 stat 包中各個(gè)類的作用與實(shí)現(xiàn)方式.17 5.4 ui 包的設(shè)計(jì).18 5.4.1 ui 包的作用.18 5.4.2 ui 包中各個(gè)類的作用與實(shí)現(xiàn)方式.19 5.4.3 ui 包中 graph 包的作用 .22 5.5 外部類的設(shè)計(jì).22 5.5.1 外部類在整個(gè)程序中的作用.22 5.5.2 外部各個(gè)類的作用與實(shí)現(xiàn)方式.22
11、 6 測試與分析.23 6.1 測試的目的.23 6.2 測試的步驟.23 6.3 測試分析.25 7 用戶使用手冊.26 7.1 系統(tǒng)配置要求.26 7.2 系統(tǒng)環(huán)境配置.26 7.3 執(zhí)行程序步驟.26 結(jié) 論.30 參考文獻(xiàn).31 致 謝.32 聲 明.33 1 引言引言 1.1 課題背景課題背景 網(wǎng)絡(luò)監(jiān)聽,在網(wǎng)絡(luò)安全上一直是一個(gè)比較敏感的話題,作為一種發(fā)展比較 成熟的技術(shù),網(wǎng)絡(luò)監(jiān)聽在協(xié)助網(wǎng)絡(luò)管理員監(jiān)測網(wǎng)絡(luò)傳輸數(shù)據(jù),排除網(wǎng)絡(luò)故障等 方面具有不可替代的作用,因而一直倍受網(wǎng)絡(luò)管理員的青睞。然而,在另一方 面網(wǎng)絡(luò)監(jiān)聽也給以太網(wǎng)安全帶來了極大的隱患,許多的網(wǎng)絡(luò)入侵往往都伴隨著 以太網(wǎng)內(nèi)網(wǎng)絡(luò)監(jiān)聽行
12、為,從而造成口令失竊,敏感數(shù)據(jù)被截獲等等連鎖性安全 事件。 隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)給人們帶來了很多便利,但是網(wǎng)絡(luò)在給 人們帶來許多便利的同時(shí),也給人們帶來了最擔(dān)憂的網(wǎng)絡(luò)安全問題。保證網(wǎng)絡(luò) 及應(yīng)用系統(tǒng)的安全也成了人們最為關(guān)心的問題。 網(wǎng)絡(luò)監(jiān)聽技術(shù)就是提供給網(wǎng)絡(luò)安全管理人員進(jìn)行管理的工具,可以用來監(jiān) 視網(wǎng)絡(luò)的狀態(tài)、數(shù)據(jù)流動情況以及網(wǎng)絡(luò)上傳輸?shù)男畔ⅲ垣@取有用的信息。作 為黑客來說,通過網(wǎng)絡(luò)監(jiān)聽可以獲取其所需的信息(比如密碼等) ;對黑客活動 和其他網(wǎng)絡(luò)犯罪進(jìn)行偵察、取證時(shí),可以使用網(wǎng)絡(luò)監(jiān)聽技術(shù)來獲取必要的信息。 因此,在目前研究和使用網(wǎng)絡(luò)監(jiān)聽技術(shù)及相關(guān)工具,對于防護(hù)網(wǎng)絡(luò)安全、打擊 網(wǎng)絡(luò)犯罪
13、具有重要的現(xiàn)實(shí)意義。 1.2 本課題研究的意義本課題研究的意義 我國的網(wǎng)絡(luò)正在快速發(fā)展中,相應(yīng)的問題也就顯現(xiàn)出來,網(wǎng)絡(luò)管理及相應(yīng) 的應(yīng)用自然將越發(fā)重要,而監(jiān)聽技術(shù)正是網(wǎng)絡(luò)管理和應(yīng)用的基礎(chǔ),其意義當(dāng)然 重要,放眼當(dāng)前相關(guān)工具,linux 有 snort tcpdump ,snift 等,window 有 nexray, sniffer 等無一不是國外軟件,隨著中國網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)監(jiān)聽系統(tǒng)必 將大有用武之地,因此監(jiān)聽技術(shù)的研究已是時(shí)事的要求。 中國入世,各種針對盜版的打擊力度和對于正版軟件的保護(hù)力度都將大大 加強(qiáng),windows 的盜版軟件隨處可見的現(xiàn)象將會一去不返,面對這樣的情況, 大部分的公司
14、只有兩種選擇:要么花大價(jià)錢向微軟購買正版軟件,要么是用開 元操作系統(tǒng) linux,特別是重要部門,如國家機(jī)關(guān),政府部門,難道要把自己 的辦公系統(tǒng)操縱在國外大公司手里?北京的政府辦公系統(tǒng)已經(jīng)轉(zhuǎn)用紅旗 linux,而且 linux 的界面也在不但的改進(jìn),更加友好,易操作,有理由相信 linux 將在我國大有作為,這也是研究 linux 下網(wǎng)絡(luò)監(jiān)聽的原因。 1.3 本課題的研究方法本課題的研究方法 本畢業(yè)設(shè)計(jì)的目的主要是為了檢查對以前所學(xué)知識(包括以前所學(xué)的一些 關(guān)于網(wǎng)絡(luò)技術(shù)、編程技術(shù)、網(wǎng)絡(luò)與信息安全等知識)綜合運(yùn)用的能力,設(shè)計(jì)開 發(fā)一個(gè)局域網(wǎng)監(jiān)聽軟件。 在本系統(tǒng)的開發(fā)使用 eclipse 3.2
15、開發(fā)工具,利用 java 語言來編寫一個(gè)具備 數(shù)據(jù)包統(tǒng)計(jì)和分析功能的局域網(wǎng)監(jiān)聽軟件。 由于核心 java api 不能訪問底層的網(wǎng)絡(luò)數(shù)據(jù),因此在使用 java 編寫網(wǎng)絡(luò)監(jiān) 聽程序時(shí)就必須借助一些工具。本設(shè)計(jì)借助 winpcap 和 jpcap 這兩個(gè)工具來對 網(wǎng)絡(luò)底層進(jìn)行訪問,幫助實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)聽程序。 1.4 本論文主要工作本論文主要工作 本文主要介紹局域網(wǎng)監(jiān)聽軟件設(shè)計(jì)與開發(fā)。在進(jìn)行設(shè)計(jì)之前,必需了解一 些必要的相關(guān)知識,所以本文先從基礎(chǔ)知識開始介紹,然后一步一步地深入, 最后開發(fā)出具有一定功能的網(wǎng)絡(luò)監(jiān)聽軟件。 本文的第二章對網(wǎng)絡(luò)監(jiān)聽軟件的設(shè)計(jì)有一個(gè)全面的需求分析,在寫需求分 析的時(shí)候,主要是對
16、本軟件的實(shí)現(xiàn)目標(biāo)、運(yùn)行環(huán)境和功能做一個(gè)具體的規(guī)劃, 其次對本軟件的發(fā)展方向也做了一定的要求。 在第三章中,首先對網(wǎng)絡(luò)監(jiān)聽的原理進(jìn)行簡單的介紹,了解到在網(wǎng)絡(luò)中的 數(shù)據(jù)是怎樣的進(jìn)行傳輸?shù)摹⒚恳粚拥膮f(xié)議的作用等等。然后再就本次開發(fā)所必 需的輔助工具(winpcap 和 jpcap)和它們在局域網(wǎng)監(jiān)聽軟件中所起的作用,以 及它們的使用方法做了一定的介紹。 具備了一定的基礎(chǔ)知識后,在第四章中對局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)做了一個(gè) 整體的規(guī)劃,對本次設(shè)計(jì)的進(jìn)程有了一個(gè)初步的框架,然后再綜合所學(xué)知識進(jìn) 行具體的設(shè)計(jì)。 在第五章中,開始介紹具體的設(shè)計(jì)步驟,首先將編寫三個(gè)不同的包,每一 個(gè)包完成的功能有所不同,但又互相
17、聯(lián)系,然后再編寫主類和一些能將每個(gè)包, 每個(gè)類聯(lián)系起來的類,讓其實(shí)現(xiàn)預(yù)期的效果,最終完成初步的設(shè)計(jì)。 第六章的主要工作是介紹如何測試所編寫的程序是否能正常運(yùn)行,確保所 設(shè)計(jì)的程序能完成相關(guān)的功能,不斷的對軟件進(jìn)行完善。測試完畢后,將所有 代碼進(jìn)行封裝打包,完成本次設(shè)計(jì)。 在本文的最后一章,主要介紹的是如何使用該軟件,附帶一些軟件運(yùn)行時(shí) 的圖片,對用戶做一個(gè)具體的介紹。 2 需求分析需求分析 2.1 需求分析概述需求分析概述 需求分析是指理解用戶需求,就軟件功能與客戶達(dá)成一致,估計(jì)軟件風(fēng)險(xiǎn) 和評估項(xiàng)目代價(jià),最終形成開發(fā)計(jì)劃的一個(gè)復(fù)雜過程。從廣義上理解:需求分 析包括需求的獲取、分析、規(guī)格說明、變
18、更、驗(yàn)證、管理的一系列需求工程。 圖 1 為需求分析的具體步驟。 圖 1 需求分析步驟 需求分析之所以重要,就因?yàn)樗哂袥Q策性,方向性,策略性的作用,在 軟件開發(fā)的過程中具有舉足輕重的地位。在一個(gè)大型軟件系統(tǒng)的開發(fā)中,他的 作用要遠(yuǎn)遠(yuǎn)大于程序設(shè)計(jì)。 2.2 本軟件的需求分析本軟件的需求分析 2.2.1 本軟件實(shí)現(xiàn)的目標(biāo)本軟件實(shí)現(xiàn)的目標(biāo) 雖然計(jì)算機(jī)網(wǎng)絡(luò)給人們帶來了巨大的便利,但互聯(lián)網(wǎng)是一個(gè)面向大眾的開 放系統(tǒng),對信息的保密和系統(tǒng)的安全考慮得并不完備,存在著安全隱患,網(wǎng)絡(luò) 的安全形勢日趨嚴(yán)峻。 因此,在 internet 安全隱患中扮演重要角色之一的網(wǎng)絡(luò)監(jiān)聽軟件受到越來 越大的關(guān)注,大多數(shù)的黑客為
19、了探測內(nèi)部網(wǎng)上的主機(jī)并取得控制權(quán),甚至有些 黑客為了控制整個(gè)網(wǎng)絡(luò),從而安裝特洛伊木馬和后門程序,并清除記錄。他們 經(jīng)常使用的手段是安裝網(wǎng)絡(luò)監(jiān)聽軟件。 在黑客和違法人員進(jìn)行一些非法的操作(例如,盜取用戶的密碼和相關(guān)信 息等)時(shí),執(zhí)法人員也可以利用同樣的方法對其進(jìn)行偵察和取證,并對其進(jìn)行 相關(guān)的處置,達(dá)到保護(hù)用戶的重要資料和維護(hù)用戶的個(gè)人利益,并保證網(wǎng)絡(luò)的 正常運(yùn)行和預(yù)防一些違法操作。 本軟件的設(shè)計(jì)就是為了達(dá)到基本的維護(hù)網(wǎng)絡(luò)安全的作用,對網(wǎng)絡(luò)上傳輸?shù)?數(shù)據(jù)進(jìn)行捕獲,然后從中得到有用的信息,以此來判斷是否是惡意的信息,并 對其進(jìn)行過濾等相關(guān)操作,起到保護(hù)網(wǎng)絡(luò)安全的作用。 2.2.2 本軟件的運(yùn)行環(huán)境
20、要求本軟件的運(yùn)行環(huán)境要求 在編寫本軟件前,作者首先確定了所使用的語言java,并在開發(fā)工具 eclipse 3.2 下進(jìn)行開發(fā),所以首先應(yīng)該配置好 java 的運(yùn)行環(huán)境(安裝 j2sdk1.4.0 或 jre1.4.0 以上版本) ,并在命令提示符檢查是否正確配置好 java 的運(yùn)行環(huán)境 (輸入 java 或 javac) 。 由于 java api 語言不能訪問底層的網(wǎng)絡(luò)數(shù)據(jù),所以使用一些工具(如 winpcap 和 jpcap)來幫助實(shí)現(xiàn)對底層網(wǎng)絡(luò)數(shù)據(jù)的訪問。在此,本軟件必須首先 安裝 winpcap,然后在 jre 中配置好 jpcap 的環(huán)境,值得注意的是,以上兩個(gè)工 具都是開元的,所
21、以在很多地方可以查詢到它們的使用方式。 2.2.3 本軟件的功能要求本軟件的功能要求 對于這個(gè)程序,開發(fā)人員希望它達(dá)到以下幾個(gè)功能: (1)能夠截取本網(wǎng)段中傳輸?shù)臄?shù)據(jù)包; (2)運(yùn)用不同 tcp/ip 體系層次的協(xié)議解析類,將數(shù)據(jù)包逐步分解; (3)將分析結(jié)果顯示出來(協(xié)議字段、數(shù)據(jù)內(nèi)容等) ; (4)對截獲的數(shù)據(jù)包的數(shù)量和大小進(jìn)行統(tǒng)計(jì)(餅狀圖等); (5)對指定的 ip 地址進(jìn)行單獨(dú)監(jiān)聽; (6)可以進(jìn)行界面選擇。 2.2.4 本軟件功能的擴(kuò)充本軟件功能的擴(kuò)充 完成了以上功能,只是初步達(dá)到了現(xiàn)有階段的要求,在以后的操作中,可 能會遇到許多更為復(fù)雜的問題,為此,在設(shè)計(jì)軟件的同時(shí),也應(yīng)該根據(jù)系統(tǒng)
22、的 性能來分析將來很可能會提出來的要求,這樣做的目的是在設(shè)計(jì)過程中對系統(tǒng) 將來可能的擴(kuò)充和修改預(yù)做準(zhǔn)備,以便一旦需要時(shí)能比較容易地進(jìn)行一些擴(kuò)充 和修改。 本軟件雖然能夠捕獲到本網(wǎng)段的數(shù)據(jù),并可以對捕獲的數(shù)據(jù)進(jìn)行簡單的分 析,還可以進(jìn)行指定對象的監(jiān)聽和將結(jié)果顯示出來等功能,但在實(shí)際的運(yùn)用中, 用戶肯定會遇到更多的問題,以下是對本軟件的擴(kuò)充性能的一些初步預(yù)計(jì): (1)自動獲取本機(jī)和網(wǎng)關(guān)的 ip 和 mac 地址; (2)監(jiān)視所有主機(jī)的收發(fā)郵件記錄收發(fā)郵件的 email 地址、日期、主題等; (3)對捕獲到的數(shù)據(jù)進(jìn)一步分析,得到非法數(shù)據(jù); (4)可以對局域網(wǎng)內(nèi)的計(jì)算機(jī)進(jìn)行一些簡單的操作。 3 理論基
23、礎(chǔ)與相關(guān)工具介紹理論基礎(chǔ)與相關(guān)工具介紹 3.1 網(wǎng)絡(luò)監(jiān)聽原理介紹網(wǎng)絡(luò)監(jiān)聽原理介紹 ethernet 協(xié)議(以太網(wǎng)協(xié)議)的工作方式是將要發(fā)送的數(shù)據(jù)包發(fā)往連接在 一起的所有主機(jī)。在包頭中包括有應(yīng)該接收數(shù)據(jù)包的主機(jī)的正確地址,因?yàn)橹?有與數(shù)據(jù)包中目標(biāo)地址一致的那臺主機(jī)才能接收到數(shù)據(jù)包,但是當(dāng)主機(jī)工作在 監(jiān)聽模式下,不管數(shù)據(jù)包中的目標(biāo)物理地址是什么,主機(jī)都將可以接收到。 數(shù)據(jù)包并不能在協(xié)議棧的高層直接發(fā)送出去,要發(fā)送的數(shù)據(jù)包必須從 tcp/ip 協(xié)議的 ip 層交給網(wǎng)絡(luò)接口,也就是所說的數(shù)據(jù)鏈路層。網(wǎng)絡(luò)接口不會 識別 ip 地址的。因此,在網(wǎng)絡(luò)接口由 ip 層傳輸過來的帶有 ip 地址的數(shù)據(jù)包將 增加
24、了一部分以太幀的幀頭的信息。在幀頭中,有兩個(gè)域分別為只有網(wǎng)絡(luò)接口 才能識別的源主機(jī)和目的主機(jī)的物理地址,這是一個(gè) 48 位的地址,這個(gè) 48 位 的地址是與 ip 地址相對應(yīng)的,換句話說就是一個(gè) ip 地址也會對應(yīng)一個(gè)物理地 址。 傳輸數(shù)據(jù)時(shí),包含物理地址的幀從網(wǎng)絡(luò)接口(網(wǎng)卡)發(fā)送到物理的線路上, 如果局域網(wǎng)是由一條粗纜或細(xì)纜連接而成,則數(shù)字信號在電纜上傳輸,能夠到 達(dá)線路上的每一臺主機(jī)。當(dāng)使用集線器時(shí),由集線器再發(fā)向連接在集線器上的 每一條線路,數(shù)字信號也能到達(dá)連接在集線器上的每一臺主機(jī)。當(dāng)數(shù)字信號到 達(dá)一臺主機(jī)的網(wǎng)絡(luò)接口時(shí),正常情況下,網(wǎng)絡(luò)接口讀入數(shù)據(jù)幀,進(jìn)行檢查,如 果數(shù)據(jù)幀中攜帶的物理
25、地址是自己的或者是廣播地址,則將數(shù)據(jù)幀交給上層協(xié) 議軟件,也就是 ip 層軟件,否則就將這個(gè)幀丟棄。對于每一個(gè)到達(dá)網(wǎng)絡(luò)接口的 數(shù)據(jù)幀,都要進(jìn)行這個(gè)過程。 當(dāng)連接在同一條電纜或集線器上的主機(jī)被邏輯地分為幾個(gè)子網(wǎng)的時(shí)候,那 么要是有一臺主機(jī)處于監(jiān)聽模式,它還將可以接收到發(fā)向與自己不在同一個(gè)子 網(wǎng)(使用了不同的掩碼、ip 地址和網(wǎng)關(guān))的主機(jī)的數(shù)據(jù)包,在同一個(gè)物理信道 上傳輸?shù)乃行畔⒍伎梢员唤邮盏健?以太網(wǎng)上的數(shù)據(jù)幀主要涉及 tcp/ip 協(xié)議,針對以下幾個(gè)協(xié)議的分析: ip,arp,rarp,ipx,其中重點(diǎn)在于 ip 和 arp 協(xié)議,這兩個(gè)協(xié)議是多數(shù)網(wǎng) 絡(luò)協(xié)議的基礎(chǔ)。 在本軟件的監(jiān)聽過程中,將
26、監(jiān)聽到的數(shù)據(jù)包利用工具和所編寫的方法進(jìn)行 逐層分析,并解析出每一層、每一協(xié)議、每一字段的數(shù)據(jù),從中得到自己想要 的信息,最后將其顯示出來,并進(jìn)行動態(tài)的更新。 3.2 tcp/ip 的層次結(jié)構(gòu)的層次結(jié)構(gòu) 3.2.1 osi 與與 tcp/ip 體系結(jié)構(gòu)的比較體系結(jié)構(gòu)的比較 osi(open system interconnect)是開放式系統(tǒng)互聯(lián),為了解決不同體系結(jié) 構(gòu)的網(wǎng)絡(luò)的互聯(lián)問題,國際標(biāo)準(zhǔn)化組織 iso 于 1981 年制定了開放系統(tǒng)互連參 考模型(open system interconnection reference model,osi/rm) 。osi 把網(wǎng)絡(luò) 通信的工作分為 7
27、層,它們由低到高分別是物理層(physical layer),數(shù)據(jù)鏈路 層(data link layer),網(wǎng)絡(luò)層(network layer),傳輸層(transport layer),會話 層(session layer) ,表示層(presen tation layer)和應(yīng)用層(application layer)。 每層完成一定的功能,每層都直接為其上層提供服務(wù),并且所有層次都互相支 持。 tcp/ip 協(xié)議(transmission control protocol/internet protocol)是傳輸控制/網(wǎng)際 協(xié)議,這個(gè)協(xié)議是 internet 國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。tc
28、p/ip 通訊協(xié)議采用了 4 層 的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這 4 層分別為: (1)應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(smtp) 、文 件傳輸協(xié)議(ftp) 、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(telnet)等; (2)傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié) 議(tcp) 、用戶數(shù)據(jù)報(bào)協(xié)議(udp)等,tcp 和 udp 給數(shù)據(jù)包加入傳輸數(shù)據(jù) 并把它傳輸?shù)较乱粚又校@一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收; (3)互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都 能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收) ,如網(wǎng)際協(xié)
29、議(ip) ; (4)網(wǎng)絡(luò)接口層:對實(shí)際的網(wǎng)絡(luò)媒體的管理,定義如何使用實(shí)際網(wǎng)絡(luò)(如 ethernet、serial line 等)來傳送數(shù)據(jù)。 tcp/ip 各層的描述如表 1 所示。 表 1 tcp/ip 各層描述 tcp/ip 的描述主要協(xié)議主要功能 應(yīng)用層 http、telnet、ftp 和 e-mail 等 負(fù)責(zé)把數(shù)據(jù)傳輸?shù)絺鬏攲踊蚪邮諒膫鬏攲臃祷氐臄?shù)據(jù) 傳輸層tcp 和 udp 主要為兩臺主機(jī)上的應(yīng)用程序提供端到端的通信,tcp 為兩 臺主機(jī)提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用 程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認(rèn) 接收到的分組,設(shè)置發(fā)送最后確認(rèn)分組的超時(shí)時(shí)
30、鐘等。udp 則為應(yīng)用層提供一種簡單的服務(wù)。它只是把稱作數(shù)據(jù)報(bào)的分 組從一臺主機(jī)發(fā)送到另一臺主機(jī),但并不保證該數(shù)據(jù)能到達(dá) 另一端。 網(wǎng)絡(luò)層icmp、ip 和 igmp 有時(shí)稱作互聯(lián)網(wǎng)層,主要為數(shù)據(jù)包選擇路由,其中 ip 是 tcp/ip 協(xié)議族中最核心的協(xié)議。所有的 tcp、udp、icmp 及 igmp 數(shù)據(jù)都以 ip 數(shù)據(jù)報(bào)格式傳輸 鏈路層 arp、rarp 和設(shè) 備驅(qū)動程序及接口 卡 發(fā)送時(shí)將 ip 包作為幀發(fā)送;接收時(shí)把接收到的位組裝成幀; 提供鏈路管理;錯(cuò)誤檢測等 osi 模型與 tcp/ip 協(xié)議的區(qū)別如下: (1)tcp/ip 一開始就考慮到多種異構(gòu)網(wǎng)的互聯(lián)問題,并將網(wǎng)際協(xié)議 i
31、p 作 為 tcp/ip 的重要組成部分。但 iso 和 ccitt 最初只考慮到全世界都使用一種 統(tǒng)一的標(biāo)準(zhǔn)公用數(shù)據(jù)網(wǎng)將各種不同的系統(tǒng)互連在一起。后來,iso 認(rèn)識到了網(wǎng) 際協(xié)議 ip 的重要性,然而已經(jīng)來不及了,只好在網(wǎng)絡(luò)層中劃分出一個(gè)子層來完 成類似 tcp/ip 中的 ip 的作用; (2)tcp/ip 一開始就對面向連接服務(wù)和無連接服務(wù)并重,而 osi 在開始 只強(qiáng)調(diào)面向連接這一種服務(wù)。一直到很晚 osi 才開始制定另一種無連接服務(wù)的 有關(guān)標(biāo)準(zhǔn); (3)tcp/ip 較早就有較好的網(wǎng)絡(luò)管理功能,而 osi 到后來才開始考慮這 個(gè)問題。 osi 與 tcp/ip 體系結(jié)構(gòu)的比較如圖 2
32、 所示。 圖 2 osi 與 tcp/ip 體系結(jié)構(gòu)的對比 3.2.2 tcp/ip 四層協(xié)議的表示方法舉例四層協(xié)議的表示方法舉例 圖 3 tcp/ip 四層協(xié)議的表示方法舉例 在許多文獻(xiàn)中,也常見到 tcp/ip 的四層協(xié)議的表示方法。例如,在討論兩 個(gè)主機(jī)通過兩個(gè)網(wǎng)絡(luò)用路由器連在一起時(shí),可以使用如圖 3 所示的層次關(guān)系。 圖 3 中的邏輯鏈路控制和物理層都簡化為網(wǎng)絡(luò)接口層。實(shí)際上,現(xiàn)在插在主機(jī) 中的網(wǎng)絡(luò)接口板上的硬件和軟件就是實(shí)現(xiàn)了數(shù)據(jù)鏈路層和物理層這兩層的功能。 應(yīng)當(dāng)注意的是,在網(wǎng)絡(luò)互連中起重要作用的路由器則沒有應(yīng)用層和運(yùn)輸層,其 數(shù)據(jù)鏈路層和物理層也是在網(wǎng)絡(luò)接口板上實(shí)現(xiàn)的。 3.2.3
33、 使用使用 tcp/ip 進(jìn)行通信的示意圖進(jìn)行通信的示意圖 在 tcp/ip 的應(yīng)用層協(xié)議使用的是客戶服務(wù)器方式??蛻簦╟lient)和服 務(wù)器(server)都是指通信中所涉及的兩個(gè)應(yīng)用進(jìn)程??蛻舴?wù)器方式所描 述的是進(jìn)程之間服務(wù)和被服務(wù)的關(guān)系。當(dāng) a 進(jìn)程需要 b 進(jìn)程的服務(wù)時(shí)就主動呼 叫 b 進(jìn)程,在這種情況下,a 是客戶而 b 是服務(wù)器。這里最重要的特征就是: 客戶是服務(wù)請求方,服務(wù)器是服務(wù)提供方。 客戶與服務(wù)器的通信關(guān)系一旦建立,通信就可是雙向的,客戶和服務(wù)器都 可以發(fā)送和接收信息,如圖 4 所示。 圖 4 客戶進(jìn)程和服務(wù)器進(jìn)程使用 tcp/ip 協(xié)議進(jìn)行通信 3.3 winpcap
34、 簡介簡介 winpcap(windows packet capture)是 windows 平臺下一個(gè)免費(fèi),公共的網(wǎng) 絡(luò)訪問系統(tǒng)。開發(fā) winpcap 這個(gè)項(xiàng)目的目的在于為 win32 應(yīng)用程序提供訪問網(wǎng) 絡(luò)底層的能力。它提供了以下的各項(xiàng)功能: (1)捕獲原始數(shù)據(jù)報(bào),包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送/接收的以及相互之 間交換的數(shù)據(jù)報(bào); (2)在數(shù)據(jù)報(bào)發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)報(bào) 過濾掉; (3)在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)報(bào); (4)收集網(wǎng)絡(luò)通信過程中的統(tǒng)計(jì)信息。 winpcap 的主要功能在于獨(dú)立于主機(jī)協(xié)議(如 tcp/ip)而發(fā)送和接收原始數(shù) 據(jù)報(bào)。也就是說,winpcap
35、不能阻塞、過濾或控制其他應(yīng)用程序數(shù)據(jù)報(bào)的發(fā)收, 它僅僅只是監(jiān)聽共享網(wǎng)絡(luò)上傳送的數(shù)據(jù)報(bào)。因此,它不能用于服務(wù)質(zhì)量 qos 調(diào) 度程序或個(gè)人防火墻。目前,winpcap 開發(fā)的主要對象是 windows nt/2000/xp,這主要是因?yàn)樵谑褂?winpcap 的用戶中只有一小部分使用 windows 95/98/me,并且微軟也已經(jīng)放棄了對 win9x 的開發(fā)。其實(shí) winpcap 中 的面向 9x 系統(tǒng)的概念和 nt 系統(tǒng)的非常相似,只是在某些實(shí)現(xiàn)上有點(diǎn)差異,比 如說 9x 只支持 ansi 編碼,而 nt 系統(tǒng)則提倡使用 unicode 編碼。 winpcap 提供給用戶兩個(gè)不同級別的編程接
36、口:一個(gè)基于 libpcap 的 wpcap.dll,另一個(gè)是較底層的 packet.dll。對于一般的要與unix 平臺上 libpcap 兼容的開發(fā)來說,使用wpcap.dll 是當(dāng)然的選擇。下面幾個(gè)庫是與lipcap 相關(guān)的: libnet1.0.2數(shù)據(jù)包的發(fā)送構(gòu)造過程;libnids實(shí)現(xiàn)了 ids 的一些框架; libicmpicmp 數(shù)據(jù)包處理。 操作系統(tǒng)攔截?cái)?shù)據(jù)包的技術(shù)有很多,現(xiàn)在很多文章都是介紹編寫 im driver 阿在 ndis 中間層對 miniport(網(wǎng)卡驅(qū)動程序)和協(xié)議驅(qū)動程序之 間的數(shù)據(jù)包進(jìn)行攔截。這是微軟提供的一種技術(shù)但編寫該過濾程序攔截程序非 常地復(fù)雜,安裝也
37、很麻煩。 現(xiàn)在簡單的介紹基于 ndis 包攔截技術(shù)。ndis 協(xié)議驅(qū)動程序是通過填寫一 張 ndis_protocol_characteristics 的表,并調(diào)用ndis api 函數(shù) ndisregisterprotocol 進(jìn)行注冊?,F(xiàn)在來關(guān)注一下 ndis_protocol_characteristics 這張表,這張表中存有所有協(xié)議驅(qū)動程 序與底層的派發(fā)函數(shù)的入口。如bindadapterhandler,sendhandler, receivehandler 等,當(dāng)網(wǎng)卡有數(shù)據(jù)包進(jìn)入時(shí),會通過表中 receivehandle 或 receivepackethandler 通知協(xié)議驅(qū)動程
38、序有一個(gè)該協(xié)議的數(shù)據(jù)包進(jìn)入,反之協(xié) 議驅(qū)動程序是通過 send handler 或 sendpacketshandler 函數(shù)向網(wǎng)卡驅(qū)動發(fā)送數(shù) 據(jù)包到網(wǎng)絡(luò)上去的。雖然在程序中是調(diào)用 ndissend 或 ndissendpackets 函數(shù)發(fā) 送,但是通過查看 ndis.h 的頭文件里對這兩個(gè)函數(shù)的定義就知道了,它們都 是一個(gè)宏定義,實(shí)際還是通過這表中 send handler 或 sendpacketshandler 發(fā)送 的?,F(xiàn)在要做的事情應(yīng)該很清楚了,只要能夠?qū)⒚恳粋€(gè)協(xié)議程序所填寫的 ndis_protocol_characteristics 表里的派發(fā)函數(shù)指向自己的函數(shù),就 能成功的對
39、數(shù)據(jù)包進(jìn)行攔截。 winpcap 也是用 ndis(windows 的通信協(xié)議程序(比如 tcp/ip)和網(wǎng)絡(luò)設(shè)備 驅(qū)動器之間通信的規(guī)范)的,將自己注冊為一個(gè)協(xié)議處理驅(qū)動。winpcap 的使 用非常方便,但是它有一個(gè)致命的缺陷就是只適用于共享式以太網(wǎng)絡(luò),對于交 換式網(wǎng)絡(luò)下的數(shù)據(jù)則無能為力。經(jīng)過測試,在使用交換機(jī)連接的局域網(wǎng)下, winpcap 只能監(jiān)聽到本網(wǎng)段內(nèi)的數(shù)據(jù),而對于來自其他網(wǎng)段的數(shù)據(jù)則無法監(jiān)聽, 除非你把 probe 接到交換機(jī)之前或者接到交換機(jī)的 console 口上,不過那樣的弊 端是顯而易見的,所以,winpcap 的應(yīng)用還是有局限性的。 3.4 jpcap 簡介簡介 由于核
40、心 java api 不能直接訪問網(wǎng)絡(luò)底層,因此需要借助一種工具來為 java 和網(wǎng)絡(luò)底層提供一個(gè)橋梁。jpcap 就是一種提供在 windows 或 unix 系統(tǒng) 上進(jìn)行網(wǎng)絡(luò)底層訪問的 java api。jpcap 不是一種純粹的 java 解決方案,它依 賴本地庫的使用。在 windows 或 unix 上,用戶必須有必要的第三方庫,分 別是 winpcap 或 libpcap。 jpcap 的工作原理是使用一個(gè)事件模型讓你對數(shù)據(jù)包進(jìn)行處理。首先必須創(chuàng) 建一個(gè)執(zhí)行接口 jpcap.jpcaphandler 的類: public class jpcaptip implements jpca
41、phandler public void handlepacket(packet packet) system.out.println(packet); 為了捕獲包,用戶需要告訴 jpcap 想用哪個(gè)網(wǎng)絡(luò)設(shè)備來監(jiān)聽。api 提供了 jpcap.jpcap. getdevicelist()方法以滿足這一目的。這個(gè)方法返回一列字符串,用 戶可以像如下的方法使用它: string devices = jpcap.getdevicelist(); 一旦用戶有了一個(gè)設(shè)備名稱的目錄,用戶必須選取一個(gè)用來監(jiān)聽: string devicename = devices0; 選擇一個(gè)設(shè)備之后,通過 jpcap.
42、opendevice()方法打開它。opendevice()方 法需要四個(gè)參數(shù):即將打開的設(shè)備名,從設(shè)備上一次讀取的最大字節(jié)數(shù),說明 是否將設(shè)備設(shè)為混雜模式(可以接受任意的包)的 boolean 值和以后調(diào)用 processpacket()方法要使用到的超時(shí)值。 jpcapjpcap = jpcap.opendevice(devicename, 1028, false, 10000); opendevice()方法將一個(gè)參數(shù)返回到用以捕獲的 jpcap 對象。既然有了 jpcap 實(shí)例,可以調(diào)用 processpacket()或 looppacket()開始監(jiān)聽了。這兩種方式都 帶有兩個(gè)參數(shù):
43、捕獲的最大包數(shù)可以是1(說明沒有限制) ;執(zhí)行 jpcaphandler 的一個(gè)類的實(shí)例。 如果調(diào)用 processpacket(),那么 jpcap 將一直捕獲包,直到超過 opendevice 中規(guī)定的時(shí)限或達(dá)到了規(guī)定的最大包數(shù);looppacket()則將一直捕獲包,直到達(dá) 到最大包數(shù),如果沒有最大數(shù)限制,它將永遠(yuǎn)運(yùn)行下去。就像下面這樣調(diào)用: jpcap.looppacket(-1, new jpcaptip(); 為了執(zhí)行可用類,必須確保虛擬機(jī)可以找到 jpcap 的本地庫。在 windows 上,如果 jpcap.dll 在庫地址目錄中,java 命令如下: java -djava.
44、library.path=lib -cp libjpcap.jar;. jpcaptip 運(yùn)用 jpcap 將會使開發(fā)人員在利用 java 開發(fā)網(wǎng)絡(luò)程序的時(shí)候,不必過多關(guān) 注與底層網(wǎng)絡(luò)的接口復(fù)雜的連接細(xì)節(jié),而注重在對 jpcap 簡單而強(qiáng)大接口的使 用以及程序界面和功能。 4 設(shè)計(jì)思路設(shè)計(jì)思路 4.1 設(shè)計(jì)框架圖設(shè)計(jì)框架圖 經(jīng)過對 winpcap 和 jpcap 的了解,知道了如何截獲數(shù)據(jù)包并進(jìn)行處理,現(xiàn) 在就要編寫代碼,將這些步驟嵌入到一個(gè)框架中,將數(shù)據(jù)包的處理結(jié)果顯示出 來,根據(jù)本軟件所要實(shí)現(xiàn)的功能,本設(shè)計(jì)所需要實(shí)現(xiàn)的類結(jié)構(gòu)如圖 5 所示。 package:jsniffer package
45、:analyzer package:stat package:ui package:graph 整個(gè)程序都包含在 此包中 此包中定義各個(gè)協(xié)議 的解析類 在此包中定義三個(gè)層次數(shù)據(jù) 包統(tǒng)計(jì)類 實(shí)現(xiàn)程序界面的類都包含在 此包中 繪制圖形類,如餅狀 圖等 圖 5 類結(jié)構(gòu) 4.2 設(shè)計(jì)步驟設(shè)計(jì)步驟 4.2.1 整體規(guī)劃整體規(guī)劃 現(xiàn)在對程序進(jìn)行如下設(shè)計(jì): (1)使用 eclipse 3.2 開發(fā)的基于 j2se swing 的圖形用戶界面程序; (2)允許多個(gè)窗口同時(shí)運(yùn)行,因此用向量來存儲已創(chuàng)建的窗口。為了使各 個(gè)窗口間的監(jiān)聽不相互干擾,因此為每一個(gè)監(jiān)聽過程都開辟一個(gè)新的線程,在 線程中完成從截獲數(shù)據(jù)包到
46、分析數(shù)據(jù)包到最后將結(jié)果顯示出來的全部過程。 (3)將所有截獲的數(shù)據(jù)包用向量存儲,當(dāng)然定義了數(shù)量上限。預(yù)計(jì)監(jiān)聽結(jié) 果的顯示如下:使用 jtable 組件顯示每條分析完后的數(shù)據(jù)包,并進(jìn)行動態(tài)更的 新;若選中表格中的某一條記錄時(shí),則在 jtree 組件中將它所具有的全部協(xié)議 顯示出來,父結(jié)點(diǎn)為協(xié)議名,子結(jié)點(diǎn)為協(xié)議字段名,葉子結(jié)點(diǎn)為字段取值,同 時(shí)將數(shù)據(jù)包的內(nèi)容轉(zhuǎn)換為字符串顯示在 jtextarea 組件中。 4.2.2 程序運(yùn)行流程程序運(yùn)行流程 (1)程序的開始 程序主類為 jsniffer,整個(gè)程序由此類中的 main()函數(shù)進(jìn)入,進(jìn)行初始化, 出現(xiàn)主界面,即 jdframe 類的實(shí)例,然后等待主
47、界面中的事件響應(yīng)。 (2)準(zhǔn)備監(jiān)聽 當(dāng)主界面中執(zhí)行開始監(jiān)聽事件時(shí),創(chuàng)建 jdcaptor 類實(shí)例,這個(gè)類實(shí)際上就 是數(shù)據(jù)包截獲器。jdcaptor 類首先調(diào)用 jdcapturedialog 類,這是一個(gè)選擇設(shè)備 對話框,在 jdcapturedialog 中使用 jpcap.getdevicelist()和 jpcap.getdevicedescription()獲取設(shè)備,根據(jù)界面選擇設(shè)備,然后使用 opendevice 函數(shù)打開設(shè)備,返回 jpcap 對象給調(diào)用它的 jdcaptor 實(shí)體。 (3)截獲數(shù)據(jù)包 jdcaptor 類開啟一條線程,用來進(jìn)行截獲數(shù)據(jù)包處理。在此線程中使用剛 才得
48、到的 jpcap 對象的 processpacket()函數(shù)截獲數(shù)據(jù)包。 (4)分析數(shù)據(jù)包 使用 jpcap 類的包處理接口 jpcaphandler handlepacket()進(jìn)行截獲的數(shù)據(jù)包 的初步處理,每截獲一個(gè)數(shù)據(jù)包都放入數(shù)據(jù)包向量 packets 中,則 packets 中存 放的就是一次監(jiān)聽過程中所監(jiān)聽到的所有數(shù)據(jù)包。然后將 packets 傳遞給 analyzer 包中的所有類,即每截獲一個(gè)數(shù)據(jù)包,就用所有已經(jīng)定義的協(xié)議進(jìn)行 分析。 (5)分析結(jié)果顯示 使用 jtable 控件來顯示截獲的數(shù)據(jù)包進(jìn)過分析后的信息,每分析完一條, 顯示一條,至于顯示哪些信息,由菜單中的“協(xié)議查看”
49、下面的選項(xiàng)來決定。 當(dāng)執(zhí)行選擇 table 中某一行的事件時(shí),用 tree 控件來顯示此數(shù)據(jù)包對應(yīng)于各層的 協(xié)議,并用 textarea 控件將此數(shù)據(jù)包的內(nèi)容轉(zhuǎn)換為字符串完整的顯示。 (6)流量統(tǒng)計(jì) 使用向量來存儲每一個(gè)協(xié)議的所有的數(shù)據(jù)包,每分析完一個(gè)數(shù)據(jù)包后,在 它所包含的協(xié)議的向量中加一。然后繪制每一層協(xié)議的餅狀圖,餅狀圖動態(tài)更 新。 (7)數(shù)據(jù)更新 使用 timer 類的 start(),setrepeats()來進(jìn)行動態(tài)更新,并通過此類中的事件 響應(yīng)來進(jìn)行更新時(shí)的操作,即提示表格更新。 (8)指定對象監(jiān)聽 指定對象監(jiān)聽就是使用 jsourcedialog 來得到指定監(jiān)聽的主機(jī)的 ip
50、地址, 監(jiān)聽內(nèi)容是源 ip 為指定 ip 的數(shù)據(jù)包,如果符合條件則處理,不符合則丟棄。 這個(gè)過濾處理在分析數(shù)據(jù)包 jpcaphandler handlepacket()中完成。 5 具體實(shí)現(xiàn)步驟具體實(shí)現(xiàn)步驟 5.1 使用使用 eclipse 3.2 創(chuàng)建項(xiàng)目創(chuàng)建項(xiàng)目 5.1.1 創(chuàng)建項(xiàng)目創(chuàng)建項(xiàng)目 使用 eclipse 3.2 創(chuàng)建 jsniffer 工程。單擊“文件-新建-項(xiàng)目” ,在彈出的 “新建項(xiàng)目”對話框中選擇 java 項(xiàng)目,在項(xiàng)目名中填寫項(xiàng)目名為“jsniffer” ,如 圖 6 所示。 圖 6 創(chuàng)建項(xiàng)目對話框 5.1.2 創(chuàng)建包創(chuàng)建包 在項(xiàng)目“jsniffer”上單擊右鍵,選擇“新
51、建-包” ,在彈出的“新建 java 包”對話框中填寫包名為“analyzer” ,在以后的編寫過程中,還需創(chuàng)建“stat” 、 “ui” 、 “graph”包,在這就不依依介紹了,創(chuàng)建過程類同“analyzer”包的創(chuàng)建, 如圖 7 所示。 圖 7 創(chuàng)建包對話框 5.1.3 創(chuàng)建類創(chuàng)建類 在包“analyzer”上單擊右鍵,選擇“新建-類” ,在彈出的“新建 java 類” 對話框中填寫類名稱,如圖 8 所示。 圖 8 創(chuàng)建類對話框 5.2 analyzer 包的設(shè)計(jì)包的設(shè)計(jì) 5.2.1 analyzer 包的作用包的作用 analyzer 包的作用是根據(jù)不同協(xié)議的結(jié)構(gòu)格式設(shè)計(jì)相應(yīng)的數(shù)據(jù)包解
52、析類, 然后對于傳送給解析類的數(shù)據(jù)包進(jìn)行相應(yīng)協(xié)議結(jié)構(gòu)的解析,即分析出協(xié)議中各 個(gè)字段的內(nèi)容。 在本程序中預(yù)計(jì)對 8 個(gè)協(xié)議進(jìn)行解析,為此需要定義 8 個(gè)解析類再加上一 個(gè)用于返回截獲數(shù)據(jù)包信息(如截獲時(shí)間,大小等)的類。 協(xié)議與類的對應(yīng)關(guān)系如表 2 所示。 表 2 協(xié)議與類的對應(yīng)關(guān)系 tcp/ip 體系層次協(xié) 議 名數(shù)據(jù)包解析類名 主機(jī)網(wǎng)絡(luò)層ethernet frameethernetanalyzer ipv4ipv4analyer ipv6ipv6analyzer arparpanalyzer 互聯(lián)層 icmpicmpanalyzer tcptcpanalyzer 傳輸層 udpudpana
53、lyzer 應(yīng)用層httphttpanalyzer 返回類顯示數(shù)據(jù)包被截獲相關(guān)信息packetanalyzer 5.2.2 analyzer 包中各個(gè)類的作用與實(shí)現(xiàn)方式包中各個(gè)類的作用與實(shí)現(xiàn)方式 在 analyzer 包中,針對不同的 tcp/ip 層次,編寫不同的分析類,每一個(gè)類 中都將每一協(xié)議的重要字段都進(jìn)行定義,并將進(jìn)行逐步分析,得到每一字段的 數(shù)據(jù)值,下面將介紹在這個(gè)包中每個(gè)類的作用和編寫思路: (1)jdpacketanalyzer.java 這是一個(gè)抽象類,其功能主要有兩個(gè),定義靜態(tài)常量用來表示 tcp/ip 體系 中的各層次,然后定義不同協(xié)議數(shù)據(jù)包分析類中的公用函數(shù),定義每一個(gè)協(xié)
54、議 層,并定義一些方法,是所有分析類的父類。 (2)ethernetanalyzer.java ethernet frame 是主機(jī)網(wǎng)絡(luò)層(數(shù)據(jù)鏈路層),屬于數(shù)據(jù)鏈路層 (datalink_layer) ,在這一層中,定義了主機(jī)網(wǎng)絡(luò)層類型(frame type) 、 源 mac 地址(source mac) 、目的 mac 地址(destination mac),用于最底層 數(shù)據(jù)包的解析類。 (3)ipv4analyzer.java 此類的功能為解析 ipv4 協(xié)議數(shù)據(jù)包,為相應(yīng)字段賦值。在類中定義一個(gè)字 符串常量 valuenames 用來存儲 ipv4 協(xié)議中所有的字段名;在解析之前首先要
55、 判斷所接收的數(shù)據(jù)包是否屬于 ipv4 協(xié)議,因此定義函數(shù) isanalyzable,運(yùn)用 “instance of”語句判斷接收的數(shù)據(jù)包是否與 jpcap 包中定義的 ippacket 類相符 合;定義函數(shù) analyze 用于解析數(shù)據(jù)包,其原理也是用 jpcap 包中定義的 ippacket 類對接收到的數(shù)據(jù)包進(jìn)行強(qiáng)制轉(zhuǎn)換,然后將 ippacket 類中相應(yīng)的成員 賦給相應(yīng)的字段,完成解析。 (4)ipv6analyzer.java ipv6 將地址從 ipv4 的 32bit 增大到了 128bit,首部長度固定為 40 字節(jié), ipv6 的一個(gè)新的機(jī)制是支持資源預(yù)分配,并且允許路由器將
56、每一個(gè)數(shù)據(jù)報(bào)與一 個(gè)給定的資源分配相聯(lián)系。ipv6 提出流(flow)的抽象慨念。所謂流就是互 聯(lián)網(wǎng)上從特定源點(diǎn)到特定終點(diǎn)(單播或多播)的一系列數(shù)據(jù)報(bào)(如實(shí)時(shí)音頻或 視頻傳輸) ,而在這個(gè)流所經(jīng)過的路徑上的路由器都保證指明的服務(wù)質(zhì)量,所 有屬于同一個(gè)流的數(shù)據(jù)報(bào)都具有同樣的流標(biāo)號。 此類同 ipv4analyzer.java 類中的方法類似。 (5)arpanalyzer.java 此類用于對 arp(address resolution protocol)地址解析協(xié)議和 rarp(reverse address resolution protocol)逆地址解析協(xié)議層的數(shù)據(jù)進(jìn)行分析, arp
57、是工作在 ip 層與數(shù)據(jù)鏈路層之間的一個(gè)橋梁,起的作用是查詢給定的 ip 地址所對應(yīng)的網(wǎng)卡物理地址(mac 地址)。 此類同 ipv4analyzer.java 類中的方法類似。 (6)icmpanalyzer.java icmp(internet control message protocol)internet 控制報(bào)文協(xié)議,傳遞差錯(cuò) 報(bào)文以及其他需要注意的信息,種類有兩種:icmp 差錯(cuò)報(bào)告報(bào)文和 icmp 詢 問報(bào)文,icmp 報(bào)文是在 ip 數(shù)據(jù)報(bào)內(nèi)部被傳輸?shù)?,?4 個(gè)字節(jié)是統(tǒng)一的:類型, 代碼,檢驗(yàn)和;接著 4 個(gè)字節(jié)的內(nèi)容與 icmp 的類型有關(guān);再后面是數(shù)據(jù)字段, 其長度取決
58、于 icmp 的類型。icmp 報(bào)文的代碼字段是為了進(jìn)一步區(qū)分某種類 型中的幾種不同的情況;檢驗(yàn)和用來檢驗(yàn)整個(gè) icmp 報(bào)文。 此類用于對屬于 icmp 協(xié)議的數(shù)據(jù)進(jìn)行逐步分析,并得到各字段的數(shù)據(jù), 使用的方法和其他解析類類似,在此不再重復(fù),可參考相應(yīng)源程序文件。 (7)tcpanalyzer.java tcp(transmission control protocol)傳輸控制協(xié)議和 udp(user datagram protocol)用戶數(shù)據(jù)報(bào)協(xié)議是屬于運(yùn)輸層的,運(yùn)輸層的作用范圍是提供進(jìn)程之間 的邏輯通信,能夠向應(yīng)用層提供運(yùn)輸服務(wù),而網(wǎng)絡(luò)層(ip 協(xié)議)提供主機(jī)之間 的邏輯通信。tcp
59、 協(xié)議是面向連接的,而 udp 是無連接的。 tcp 報(bào)文段分為首部和數(shù)據(jù)兩部分,首部前 20 字節(jié)是固定的,后面有 4n 字節(jié)是根據(jù)需要而增加的,因此 tcp 首部的最小長度為 20 字節(jié)。具體字段作 用可參考相應(yīng)源文件。 端口(16bit)的作用:讓應(yīng)用層的各種應(yīng)用程序都能將其數(shù)據(jù)通過端口向 下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過端口交 付給應(yīng)用層相應(yīng)的程序。 (8)udpanalyzer.java udp 報(bào)文段分為數(shù)據(jù)字段和首部字段,首字段只有 8 個(gè)字節(jié),由 4 個(gè)字段 組成,每個(gè)字段 2 字節(jié),各字段為:源端口(源端口號) 、目的端口(目的端口 號) 、長度
60、(udp 用戶數(shù)據(jù)報(bào)的長度) 、檢驗(yàn)和(防止 udp 用戶數(shù)據(jù)報(bào)在傳輸 中出錯(cuò)) 。 (9)packetanalyzer.java 此類用于顯示數(shù)據(jù)包被截獲相關(guān)信息,比如捕獲時(shí)間和捕獲長度。 5.3 stat 包的設(shè)計(jì)包的設(shè)計(jì) 5.3.1 stat 包的作用包的作用 stat 的作用是完成對所截獲的數(shù)據(jù)包按照不同的協(xié)議,不同的層次進(jìn)行統(tǒng) 計(jì),并進(jìn)行動態(tài)的更新,最后將其結(jié)果顯示出來。 在數(shù)據(jù)包統(tǒng)計(jì)中,作者將所有截獲的數(shù)據(jù)包按照所屬協(xié)議的層次分別進(jìn)行 統(tǒng)計(jì),則統(tǒng)計(jì)類的設(shè)計(jì)與層次的分類一致,如表 3 所示。 表 3 統(tǒng)計(jì)類的設(shè)計(jì)與層次對照表 tcp/ip 層次數(shù)據(jù)包統(tǒng)計(jì)類名 互聯(lián)層networkpr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)城市中的智能化垃圾分類與處理
- 物流園區(qū)中的多式聯(lián)運(yùn)組織與管理
- 國慶節(jié)手表銷售活動方案
- 臨時(shí)用電專項(xiàng)施工方案編制
- 現(xiàn)代辦公環(huán)境下的溝通技巧與團(tuán)隊(duì)合作
- 生產(chǎn)中的柔性管理策略及實(shí)踐應(yīng)用
- 學(xué)生國慶節(jié)游玩活動方案
- Unit 1 Sports and Game Lesson 3(說課稿)-2024-2025學(xué)年人教新起點(diǎn)版英語四年級上冊
- 25 王戎不取道旁李(說課稿)-2024-2025學(xué)年統(tǒng)編版語文四年級上冊
- 2024年六年級品社下冊《可怕的物種入侵》說課稿2 蘇教版
- 2025年三人合伙投資合作開店合同模板(三篇)
- 2025年合資經(jīng)營印刷煙包盒行業(yè)深度研究分析報(bào)告
- 天津市五區(qū)縣重點(diǎn)校2024-2025學(xué)年高一上學(xué)期1月期末聯(lián)考試題 化學(xué) 含答案
- 吉林省吉林市普通中學(xué)2024-2025學(xué)年高三上學(xué)期二模試題 生物 含答案
- 高考日語閱讀理解練習(xí)2篇-高考日語復(fù)習(xí)
- 2025年湖南省通信產(chǎn)業(yè)服務(wù)限公司春季校園招聘76人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版高一數(shù)學(xué)上冊期末考試試卷及答案
- 安全學(xué)原理第2版-ppt課件(完整版)
- 鉭鈮礦開采項(xiàng)目可行性研究報(bào)告寫作范文
- 小升初數(shù)學(xué)銜接班優(yōu)秀課件
- 出口食品生產(chǎn)企業(yè)備案自我評估表
評論
0/150
提交評論