




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、中南大學課程設計報告課程:計算機網(wǎng)絡課程設計題目: 基于 Winpcap 的網(wǎng)絡流量統(tǒng)計分析指導教師:張偉目錄第一章 總體設計一、實體類設計 P3二、功能類設計 P3三、界面設計 P3第二章 詳細設計一、實體類實現(xiàn) P4二、功能類實現(xiàn) P4三、界面實現(xiàn) P5第三章 源代碼清單及說明一、P7二、P9三、P9四、P13第四章 運行結(jié)果 P19第五章 心得體會 P21第一章 總體設計一、實體類設計TCP UPD ICMP、ARP廣播數(shù)據(jù)包五個包的數(shù)據(jù)結(jié)構(gòu)設計二 功能類設計(1)網(wǎng)卡獲?。?)包的抓捕(3)包的處理三 界面設計(1)布局(2)按鈕功能連接第二章 第二章 詳細設計實體類實現(xiàn)TCP UPD
2、 ICMP、ARP廣播數(shù)據(jù)包五個包的數(shù)據(jù)結(jié)構(gòu)設計。本程序采用Java編寫,基于win 10pcap。WinlOpcap是winpcap在win 10系統(tǒng)上的適用版本。Java 對于winpcap使用jnetpcap 進行支持。對于 TCP UPD ICMP ARP廣播數(shù)據(jù)包五種類型的包,在 jnetpcap的jar包中大部分已經(jīng)封裝好了相關的實體類型。對應如下:ARP實體類:UPD實體類:IP實體類:TCP實體類:UDP實體類:而對于其中的廣播數(shù)據(jù)包,其判斷我利用捕獲到的IP包的目的地址進行判斷,若其目的地址為,則認為其為廣播數(shù)據(jù)包。|二、功能類實現(xiàn)(1 )網(wǎng)卡獲取電腦上的包的發(fā)送與接受都得通
3、過網(wǎng)卡來進行,所以為了完成局域網(wǎng)數(shù)據(jù)包的捕獲和統(tǒng)計, 我首先要做的是獲取到電腦上的網(wǎng)卡列表,然后選擇一個網(wǎng)卡進行包的捕獲。而相關代碼在jn etpcap的官網(wǎng)的示例代碼1中可以找到,從中可以學習到的是 jn etpcap的各種使用方法。在我電腦上可以捕獲到三個網(wǎng)卡,一個是本機自身的物理網(wǎng)卡,另外兩個是虛擬機模擬出的虛擬網(wǎng)卡。(2 )包的抓捕Jn etpcap中包的抓捕也是有著固定的格式的,這在官網(wǎng)的示例代碼中也是可以找到的,只要設置好相關的參數(shù),就可以進行抓捕具體方法如下,利用Pcap對象的loop方法。就是實例化一個 Pcap對象,然后調(diào)用其loop方法。 第一個參數(shù)arg0代表循環(huán)次數(shù),第
4、二個參數(shù)就是傳入一個PcapPaketHandler或其子類的對象,這個對象類型是要由我們自己編寫的對包處理的方法。(3 )包的處理在這里對捕獲的包的處理我是編寫了一個PcapPacketHa ndler的子類,然后重寫了nextPacket()方法。在這個方法里我把捕獲到的包當作參數(shù)傳遞個具體的處理方法(packet )。(packet )方法是由我自己編寫的。handlePacket 是packetMatch的一個靜態(tài)方法,可以直接調(diào)用。在這個方法里面,它會把捕獲到的包的包頭和TCP UPD ICMR ARR廣播數(shù)據(jù)包五種類型的包的包頭進行一一比較,以確認是否抓到了了相對應的包。這兒還用到
5、的就是 jnetpcap 的內(nèi)部的一個方法,就是 (arg0),通過在 arg0傳入已在jnetpcap 里封裝好的包的類型的實例,可以很好的判斷該包是屬于什么包類型的,是TCP UPD ICMP ARP還是廣播數(shù)據(jù)包。然后內(nèi)部對于各種包的信息的輸出也有很好的支持,可以直接使用相應的toString 方法,就可以輸出各種相關信息。(4)網(wǎng)絡流量統(tǒng)計對于各個捕獲到的包,分別針對各種類型的包設計了一個Double變量用于統(tǒng)計其傳送過來相應包頭的大小,并在停止抓包后將統(tǒng)計的數(shù)據(jù)輸出在最下方的TextArea里面。三、界面實現(xiàn)本程序在設計 GUI時使用了 Java的一個很好的插件 WindowBuil
6、der 。(1)布局一開始使用Border Layout布局,安排好各個按鈕位置, 文本框位置。后來采用Absolute layout , 并將窗口大小固定化。在布局的最上方是一個 JToolBar 的實例對象,其中放置有選擇網(wǎng)卡、開始抓包、停止抓包、清 空記錄等四個選項,中間是兩個帶滾動條的多行文本框,左邊的用于顯示捕獲的包的列表,右邊用于 顯示左邊的我們選中的包的具體信息。最下方會在停止抓包按鈕生效后輸出總的抓包情況。 (2)按鈕功能連接在布局的最上方是一個 JToolBar 的實例對象,其中放置有選擇網(wǎng)卡、開始抓包、停止抓包、清 空記錄等四個選項,其中選擇網(wǎng)卡的功能具體由JComboBo
7、x(多文本選擇框)上的選項決定,這個多文本選擇框監(jiān)聽著 網(wǎng)卡獲取的方法,它會從該方法獲得一個網(wǎng)卡列表,然后將其文本輸出。開始抓包的方法所對應的事件是抓包的事件, 并且該抓包事件是個并發(fā)的進程。 因為如果不將其 設置為并發(fā)進程,其會使其它事件一直阻塞,甚至連停止抓包都做不到。停止抓包的事件其實是改變 了開始抓包中的一個標志位,讓其為假。該標志為為真,抓包程序會一直進行,該標志為為假,抓包 停止。下方兩個文本框,左邊的文本框監(jiān)聽的是開始抓包這個事件,當這個事件開始,這個事件會向文 本框傳輸捕獲到的包的列表, 然后讓其顯示。 而右邊的文本框監(jiān)聽的是左邊文本框我們選中的內(nèi)容的 相應事件。因為對于我們捕
8、獲到的包我進行了編號,當我們在左邊的文本框選中了一個包之后,左邊 的文本框?qū)陌男蛱枙挥疫叺奈谋究颢@取, 用于在一個列表中根據(jù)序號查找到相對應的包的詳 細內(nèi)容,然后將其輸出。統(tǒng)計功能的實現(xiàn)是在每個包的具體處理時, 在處理包的方法類中已經(jīng)有定義好幾個靜態(tài)變量用于 計數(shù),每個包具體處理時, 將相對應的包類型數(shù)量加一即可。 還定義了其它的變量用于統(tǒng)計流量大小, 也是在每個包具體處理時,將相對應的包的大小加到相對應的靜態(tài)變量上即可。第三章 源代碼清單及說明etDescription();*/ppend(ipInt24)&0xff).append(.).append(ipInt16)&0xff).
9、append(.).append(ipInt8)&0xff).append(.).append(ipInt&0xff).toString();*/public static void main(String args) (new Runnable() public void run() try Windows frame = new Windows(); (true); catch (Exception e) (););* Create the frame.*/public Windows() setTitle(u6293u5305); setDefaultCloseOperation; se
10、tBounds(100, 100, 692, 477); contentPane = new JPanel(); (new EmptyBorder(5, 5, 5, 5); setContentPane(contentPane); (null);(false);JToolBar toolBar = new JToolBar();(5, 5, 666, 23);(toolBar);JButton button = new JButton(u9009u62E9u7F51u5361); (button);final JComboBox comboBox = new JComboBox();(new
11、ActionListener() public void actionPerformed(ActionEvent e) String net=(String)(); ArrayList alldevs=(); int i=0;for (PcapIf device : alldevs) if()=i; (); i+;);(new ItemListener() public void itemStateChanged(ItemEvent arg0) );(comboBox);JButton button_1 = new JButton(u5F00u59CBu6293u5305); (action_
12、1);(button_1);JButton button_2 = new JButton(停止抓包 );(action_2);(new ActionListener() public void actionPerformed(ActionEvent arg0) );(button_2);JButton button_3 = new JButton(u6E05u7A7Au8BB0u5F55);(new ActionListener() public void actionPerformed(ActionEvent e) );(action_3);(button_3);Border brd=(1,
13、 1, 2, 2, ;(brd);(new ListSelectionListener()public void valueChanged(ListSelectionEvent arg0) etDescription();private class SwingAction_1 extends AbstractAction public SwingAction_1() putValue(NAME, 開始抓包 ); putValue(SHORT_DESCRIPTION, Some short description);public void actionPerformed(ActionEvent
14、e) tart();private class SwingAction_2 extends AbstractAction public SwingAction_2() putValue(NAME, 停止抓包 ); putValue(SHORT_DESCRIPTION, Some short description);public void actionPerformed(ActionEvent e) ();();String message=Tcp:+包 +KB +Udp:+ 包 +KB +n+ Icmp:+ 包 +KB + Arp:+ 包 +KB +n+ 廣播數(shù)據(jù)包 + 包+ +KB + 總
15、流量: +MB;(message);private class SwingAction_3 extends AbstractAction public SwingAction_3() putValue(NAME, 清空記錄 ); putValue(SHORT_DESCRIPTION, Some short description);public void actionPerformed(ActionEvent e) ();第四章 運行結(jié)果第五章 心得體會通過這次實驗我對于 TCP UPD ICMP ARR廣播數(shù)據(jù)包等包的結(jié)構(gòu)有了更好的認識。對于電腦 上底層的發(fā)包與抓包也有了一定的認識。 然后就
16、是對用 Eclipse 進行編寫 Java 程序有了更深的體會。Java 是一個成熟的語言, Eclipse 是一個比較完善的工具, 對于各個方面知識的應用編寫都有一 定的基礎支持。例如這次編寫, Eclips 就通過 jnetpcap 很好的銜接了 winpcap 的借口功能。另外, 在界面編寫上, windowbuilder 也非常好用。這是一種可視化的編程,可以直接拖拉各種部件,在容 器內(nèi)進行布局。然后對于各個部件事件的添加也是很方便,這加快了程序的開發(fā)過程。嗯,這次的實驗對于我來說不是很難,感覺這主要是前人種樹,后人乘涼。很多東西都已經(jīng)有了 很完善的工具和結(jié)構(gòu)。 而現(xiàn)階段我所能學習的感覺無非是對于各種語言工具各種插件 框架的使用,對于這些前人們編寫的東西掌握到一定的程度,以方便以后自行開發(fā)自己的一些工具。覺得課設就是一個學習過程。我在前人走過的路上學習著,避免走太多的彎路。在另一方面,也 在路上不斷積累,好在以后可以厚
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄭州食品工程職業(yè)學院《工程熱力學與傳熱學基礎》2023-2024學年第一學期期末試卷
- 河南省郟縣2025屆三年級數(shù)學第二學期期末經(jīng)典試題含解析
- 湖北師范大學文理學院《基礎護理學》2023-2024學年第二學期期末試卷
- 徐州生物工程職業(yè)技術(shù)學院《時尚傳播》2023-2024學年第二學期期末試卷
- 神木縣2025年數(shù)學三下期末綜合測試試題含解析
- 服務產(chǎn)品策略知識訓練講義英文版
- 皮革制品的國內(nèi)外市場準入規(guī)則考核試卷
- 毛織品行業(yè)市場服務創(chuàng)新策略優(yōu)化調(diào)整考核試卷
- 智能照明在小型會議室照明中的應用考核試卷
- 煤炭資源開發(fā)與區(qū)域環(huán)境保護協(xié)調(diào)發(fā)展考核試卷
- 2024-2025學年七年級語文下學期期中模擬卷05
- 實施《中華人民共和國反外國制裁法》的規(guī)定
- 湖南新高考教學教研聯(lián)盟暨長郡二十校聯(lián)盟2025屆高三年級第二次聯(lián)考物理試題及答案
- 襄陽市樊城區(qū)城市更新投資發(fā)展有限公司招聘考試真題2024
- 2022智能變電站網(wǎng)絡記錄及分析裝置測試規(guī)范
- 嚴重過敏反應診斷和臨床管理專家共識(2025)解讀 2
- 2025職業(yè)健康培訓
- 馬鞍山職業(yè)技術(shù)學院馬鞍山技師學院招聘筆試真題2024
- 2024年自考《14269數(shù)字影像設計與制作》考試復習題庫(含答案)
- 2024年《13464電腦動畫》自考復習題庫(含答案)
- 初中班會 國家安全青春挺膺 課件
評論
0/150
提交評論