收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量_第1頁
收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量_第2頁
收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量_第3頁
收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量_第4頁
收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、山東建筑大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)說明書題 目: 收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量課 程: 計(jì)算機(jī)網(wǎng)絡(luò)院 (部): 計(jì)算機(jī)科學(xué)與技術(shù)專 業(yè): 網(wǎng)絡(luò)工程班 級: 學(xué)生姓名: 學(xué) 號: 指導(dǎo)教師: 完成日期: 目 錄課程設(shè)計(jì)任務(wù)書I收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量1一、問題描述1二、基本要求1三、設(shè)計(jì)思想1四、系統(tǒng)結(jié)構(gòu)1五、程序流程1六、源程序3七、測試數(shù)據(jù)5八、測試情況6結(jié) 論7山東建筑大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量已知技術(shù)參數(shù)和設(shè)計(jì)要求1.利用WinPCap進(jìn)行網(wǎng)絡(luò)監(jiān)控。2.系統(tǒng)完成以下功能: (1)利用WinPCap收集流經(jīng)網(wǎng)卡的數(shù)據(jù)。 (2)對其中的TCP流量

2、進(jìn)行統(tǒng)計(jì)并顯示統(tǒng)計(jì)結(jié)果。 (3)向用戶提供友好的交互界面。 (4)用戶可以方便地中止或繼續(xù)TCP流量的統(tǒng)計(jì)。 (5)系統(tǒng)必須對出現(xiàn)的問題或錯誤做出響應(yīng)。3.建議該系統(tǒng)利用VC+實(shí)現(xiàn)。設(shè)計(jì)內(nèi)容與步驟1.回顧開發(fā)工具的基本使用方法;2.學(xué)習(xí)WinPCap編程的基本方法;3.TCP流量統(tǒng)計(jì)系統(tǒng)框架結(jié)構(gòu)設(shè)計(jì);4.TCP流量統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)6.課程設(shè)計(jì)任務(wù)說明書設(shè)計(jì)工作計(jì)劃與進(jìn)度安排1.學(xué)習(xí)WinPcap流量統(tǒng)計(jì)編程的基本方法 4小時2.程序設(shè)計(jì)以及調(diào)試方法 2小時3.TCP流量統(tǒng)計(jì)系統(tǒng)框架結(jié)構(gòu)設(shè)計(jì) 4小時4.TCP流量統(tǒng)計(jì)系統(tǒng)設(shè)計(jì) 16小時 5.課程設(shè)計(jì)說明書 14小時設(shè)計(jì)考核要求1.出勤 202

3、.答辯或演示303.課程設(shè)計(jì)說明書 50收集并統(tǒng)計(jì)網(wǎng)絡(luò)TCP流量一、問題描述編程實(shí)現(xiàn)簡單的TCP流量統(tǒng)計(jì)器,TCP流量統(tǒng)計(jì)器通過各種科學(xué)的方式,準(zhǔn)確的紀(jì)錄來訪某一頁面的訪問者的流量信息,它從局域網(wǎng)中抓取IP數(shù)據(jù)包,并對它進(jìn)行分析得到相應(yīng)的頭部信息,過濾TCP包進(jìn)行分析,得到TCP流量信息。二、基本要求1.利用WinPCap進(jìn)行網(wǎng)絡(luò)監(jiān)控。2.系統(tǒng)完成以下功能: (1)利用WinPCap收集流經(jīng)網(wǎng)卡的數(shù)據(jù)。 (2)對其中的TCP流量進(jìn)行統(tǒng)計(jì)并顯示統(tǒng)計(jì)結(jié)果。 (3)向用戶提供友好的交互界面。 (4)用戶可以方便地中止或繼續(xù)TCP流量的統(tǒng)計(jì)。 (5)系統(tǒng)必須對出現(xiàn)的問題或錯誤做出響應(yīng)。3.建議該系統(tǒng)利

4、用VC+實(shí)現(xiàn)。三、設(shè)計(jì)思想 TCP流量統(tǒng)計(jì)器通過Jpacp與winpcap來進(jìn)行抓包,JPCAP調(diào)用wincap,而給 JAVA語言提供一個公共的接口,WinPcap是用于網(wǎng)絡(luò)封包抓取的一套工具,調(diào)用loopPackage獲取數(shù)據(jù)包。四、系統(tǒng)結(jié)構(gòu) 首先用getDeviceList()方法獲取網(wǎng)卡設(shè)備號,在用openDevice()方法打開指定設(shè)備,然后開始用loopPacket()方法獲取數(shù)據(jù)包,最后進(jìn)行輸出。五、程序流程首先獲取設(shè)備然后打開設(shè)備之后獲取數(shù)據(jù)包最后進(jìn)行輸出,具體的流程圖如下:編寫構(gòu)造方法監(jiān)聽動作事件獲取設(shè)備列表監(jiān)聽動作事件終止 開始 打開指定設(shè)備獲取數(shù)據(jù)包輸出開始獲取設(shè)備列表:

5、final NetworkInterface devices = JpcapCaptor.getDeviceList();打開指定設(shè)備:JpcapCaptor jpcap = JpcapCaptor.openDevice(ni, 2000, true,20);獲取數(shù)據(jù)包:this.jpcap.loopPacket(-1, new ReceivePacket(this.ipAddr);輸出信息:Tcpflowstatistics.jta.append(TCPPacket+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的源IP地址: + tcp.src_ip+n);T

6、cpflowstatistics.jta.append(|*此數(shù)據(jù)包的目的IP地址: + tcp.dst_ip+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的發(fā)送端口號: + tcp.src_port+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的接收端口號: + tcp.dst_port+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的源MAC地址: + ethernetPacket.getSourceAddress()+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的

7、目的MAC地址: + ethernetPacket.getDestinationAddress()+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的傳輸層協(xié)議類型: + tocol + (TCP)+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的長度: + tcp.len+n);六、源程序public class Tcpflowstatistics private static Tcpflowstatistics ts;private boolean flag = true;JFrame jf;JButton bt1,

8、bt2, bt3, bt4;static JTextArea jta;JScrollPane jsp;JPanel jp1;Tcpflowstatistics() jf = new JFrame(TGP流量統(tǒng)計(jì)器);jf.setLayout(new BorderLayout();jf.setVisible(true);jf.setSize(800, 600);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jta = new JTextArea();jp1 = new JPanel();bt1 = new JButton(開始);bt2 =

9、new JButton(終止);jsp = new JScrollPane();jsp.setViewportView(jta);jp1.add(bt1);jp1.add(bt2);bt1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) bt1Action(e););bt2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) bt2Action(e););jf.add(

10、jp1, BorderLayout.NORTH);jf.add(jsp, BorderLayout.CENTER);public static void main(String args) / 啟動統(tǒng)計(jì)線程new Tcpflowstatistics();public void init() / 獲取本機(jī)上的網(wǎng)絡(luò)接口對象final NetworkInterface devices = JpcapCaptor.getDeviceList();/獲取設(shè)備列表for (int i = 0; i 0) / 一個網(wǎng)卡可能有多個地址,只獲取第一個String addr = ni.addresses0.add

11、ress.toString();try / 創(chuàng)建卡口上的抓取對象JpcapCaptor jpcap = JpcapCaptor.openDevice(ni, 2000, true,20);LoopPacketThread lpt = new LoopPacketThread(jpcap, addr);lpt.start();jta.append(addr + 上的采集線程已啟動! + n); catch (IOException e) e.printStackTrace();System.out.println(抓取數(shù)據(jù)包時出現(xiàn)異常!);public void bt1Action(Action

12、Event e) init();public void bt2Action(ActionEvent e) System.exit(0);public class LoopPacketThread extends Thread private JpcapCaptor jpcap = null;private String ipAddr = ;public LoopPacketThread(JpcapCaptor jpcap, String ipAddr) this.jpcap = jpcap;this.ipAddr = ipAddr;/ -1表示永久抓包public void run() thi

13、s.jpcap.loopPacket(-1, new ReceivePacket(this.ipAddr);/監(jiān)聽捕獲包public class ReceivePacket implements PacketReceiver private String ipAddr = ;public ReceivePacket(String ipAddr) this.ipAddr = ipAddr;public void receivePacket(Packet packet) / 如果截獲的包為TCP包if (packet instanceof jpcap.packet.TCPPacket) /判斷其左

14、邊對象是否為其右邊類的實(shí)例,返回boolean類型的數(shù)據(jù)TCPPacket tcp = (TCPPacket) packet;/轉(zhuǎn)化為響應(yīng)實(shí)例EthernetPacket ethernetPacket=(EthernetPacket)packet.datalink;Tcpflowstatistics.jta.append(=+n);Tcpflowstatistics.jta.append(TCPPacket+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的源IP地址: + tcp.src_ip+n);Tcpflowstatistics.jta.append(|*此

15、數(shù)據(jù)包的目的IP地址: + tcp.dst_ip+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的發(fā)送端口號: + tcp.src_port+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的接收端口號: + tcp.dst_port+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的源MAC地址: + ethernetPacket.getSourceAddress()+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的目的MAC地址: + ethernetPacket.getDe

16、stinationAddress()+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的傳輸層協(xié)議類型: + tocol + (TCP)+n);Tcpflowstatistics.jta.append(|*此數(shù)據(jù)包的長度: + tcp.len+n);七、測試數(shù)據(jù)TCPPacket|*此數(shù)據(jù)包的源IP地址:5|*此數(shù)據(jù)包的目的IP地址:34|*此數(shù)據(jù)包的發(fā)送端口號:64060|*此數(shù)據(jù)包的接收端口號:80|*此數(shù)據(jù)包的源MAC地址:f4:6d:04:23:a9:da|*此數(shù)據(jù)包的目的MAC地址:14:14:4b

17、:19:ec:3b|*此數(shù)據(jù)包的傳輸層協(xié)議類型:6(TCP)|*此數(shù)據(jù)包的長度:66=TCPPacket|*此數(shù)據(jù)包的源IP地址:5|*此數(shù)據(jù)包的目的IP地址:34|*此數(shù)據(jù)包的發(fā)送端口號:64061|*此數(shù)據(jù)包的接收端口號:80|*此數(shù)據(jù)包的源MAC地址:f4:6d:04:23:a9:da|*此數(shù)據(jù)包的目的MAC地址:14:14:4b:19:ec:3b|*此數(shù)據(jù)包的傳輸層協(xié)議類型:6(TCP)|*此數(shù)據(jù)包的長度:66=八、測試情況 程序運(yùn)行結(jié)果圖: 結(jié) 論為期兩周的課程設(shè)計(jì)在老師和自己的努力下很快地結(jié)束了,在此期間老師給了我們很大的幫助,在老師的指

18、導(dǎo)之余我還認(rèn)真學(xué)習(xí)了其它課本上未曾提到過的知識,比如說網(wǎng)絡(luò)編程方面的知識,這是我們以前所沒有接觸過的,雖然說這給了我們很大的一個問題但是也同時給了我們一個很好的挑戰(zhàn)自己的機(jī)會,以前從未聽過Winpcap,現(xiàn)在道了它對于捕我知獲網(wǎng)絡(luò)上的一些數(shù)據(jù)信息很有幫助,從而豐富了我的知識,同時也知道了如何去利用它來為自己服務(wù),這是一個很大的進(jìn)步。在自己查找資料的同時也鍛煉了我及時捕獲有用知識的能力,我想這是我現(xiàn)在乃至以后最大的一個財(cái)富,一個人最重要的就是要懂得如何去學(xué),學(xué)習(xí)不是被動的,而是主動的,只有這樣我們才能學(xué)得到對于我們自己有幫助的東西,用JAVA編程實(shí)現(xiàn)TCP數(shù)據(jù)報(bào)流量統(tǒng)計(jì),開始這對于我來說是是一個很模糊的概念,但是當(dāng)我在查找了很多資料之后我不再迷茫,而是慢

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論