版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
.z.目錄目錄1摘要21引言21.1課程設(shè)計(jì)目的21.2課程設(shè)計(jì)內(nèi)容31.3課程設(shè)計(jì)要求32設(shè)計(jì)原理32.1流量統(tǒng)計(jì)器的工作原理42.2JAVAJPCAP原理43設(shè)計(jì)步驟53.1相關(guān)必須程序包的安裝和解壓53.2Myeclipse下的運(yùn)行74出現(xiàn)的問題及解決方法105結(jié)束語11參考文獻(xiàn)12程序附錄:13編程實(shí)現(xiàn)簡單的流量統(tǒng)計(jì)器學(xué)生**:指導(dǎo)老師:摘要:它是一個(gè)可以記錄訪客來源地址(包括ip、轉(zhuǎn)入地址、搜索引擎地址、關(guān)鍵詞、ie瀏覽器型號(hào)等),被訪問頁面地址(受訪頁面,停留時(shí)間、轉(zhuǎn)出地址等)的數(shù)字遞增的源代碼程序。通過使用JAVA中的JPCAP包設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)流量統(tǒng)計(jì)系統(tǒng).關(guān)鍵詞:JAVA;JPCAP;編程;流量統(tǒng)計(jì)器。1引言計(jì)算機(jī)網(wǎng)絡(luò)是這個(gè)時(shí)代的基石,整個(gè)信息的流動(dòng)和交換全部依托于這個(gè)龐大的網(wǎng)絡(luò)系統(tǒng)。如果這個(gè)信息網(wǎng)絡(luò)出現(xiàn)問題和故障,則會(huì)給社會(huì)、團(tuán)體、個(gè)人等帶來很大的損失。有效的網(wǎng)絡(luò)管理不僅能夠保證網(wǎng)絡(luò)的正常運(yùn)行,而且能夠有效地避免網(wǎng)絡(luò)故障給我們帶來的損失。在網(wǎng)絡(luò)管理過程中,網(wǎng)絡(luò)流量監(jiān)控是整個(gè)網(wǎng)絡(luò)管理的一個(gè)重要部分。對(duì)于一個(gè)網(wǎng)絡(luò)管理員,有效的網(wǎng)絡(luò)流量監(jiān)控不僅能夠讓網(wǎng)絡(luò)管理人員能夠及時(shí)了解網(wǎng)絡(luò)的運(yùn)行狀態(tài),并且能夠?qū)W(wǎng)絡(luò)出現(xiàn)的問題作出及時(shí)調(diào)整和排除。1.1課程設(shè)計(jì)目的以基礎(chǔ)技能訓(xùn)練和能力培養(yǎng)為主線,從培養(yǎng)學(xué)生動(dòng)手能力,培養(yǎng)工程技術(shù)實(shí)際應(yīng)用型人才入手,強(qiáng)化綜合性、實(shí)際性。目的是通過實(shí)習(xí)使學(xué)生掌握計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)際開發(fā)所要掌握技術(shù),培養(yǎng)其動(dòng)手能力,觀察能力,分析和解決實(shí)際問題的能力,鞏固、加深理論課知識(shí),增加感性認(rèn)識(shí),進(jìn)一步加深對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的理解,提高對(duì)網(wǎng)絡(luò)中所于奧實(shí)現(xiàn)的功能的系統(tǒng)設(shè)計(jì)能力和調(diào)試能力。1.2課程設(shè)計(jì)內(nèi)容1.利用原始套接字實(shí)現(xiàn)簡單的流量統(tǒng)計(jì)器。2.系統(tǒng)功能包括:2.1原始套接字與網(wǎng)卡邦定,并接收流經(jīng)網(wǎng)卡的所有數(shù)據(jù)包;2.2對(duì)數(shù)據(jù)包進(jìn)行分析以獲得源IP地址和目的IP地址;2.3對(duì)數(shù)據(jù)包進(jìn)行分析以獲得運(yùn)輸層協(xié)議類型;2.4對(duì)數(shù)據(jù)包進(jìn)行分析以獲得數(shù)據(jù)包的長度;2.5對(duì)本機(jī)發(fā)送、接收的各運(yùn)輸層協(xié)議的數(shù)據(jù)流量進(jìn)行統(tǒng)計(jì),并顯示統(tǒng)計(jì)結(jié)果。1.3課程設(shè)計(jì)要求(1)按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)結(jié)果。(2)通過課程設(shè)計(jì)培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,認(rèn)真的工作作風(fēng)和團(tuán)隊(duì)協(xié)作精神。(3)學(xué)會(huì)文獻(xiàn)檢索的基本方法和綜合運(yùn)用文獻(xiàn)的能力。(4)在老師的指導(dǎo)下,要求每個(gè)學(xué)生獨(dú)立完成課程設(shè)計(jì)的全部內(nèi)容。2設(shè)計(jì)原理圖2-1流量統(tǒng)計(jì)器工作原理圖2.1流量統(tǒng)計(jì)器的工作原理源代碼放置在網(wǎng)頁中,每次有用戶瀏覽到這個(gè)網(wǎng)頁時(shí)就會(huì)觸發(fā)這個(gè)源代碼程序工作,然后以全程記錄所有信息,并以數(shù)字遞增的方式把結(jié)果統(tǒng)計(jì)出來傳到服務(wù)器,再到程序的服務(wù)器后臺(tái)進(jìn)行具體分析并實(shí)時(shí)保存,這就是流量統(tǒng)計(jì)器的原理了。2.2JAVAJPCAP原理Java語言雖然在TCP/UDP傳輸方面給予了良好的定義,但對(duì)于網(wǎng)絡(luò)層以下的控制,卻是無能為力的。JPCAP擴(kuò)展包彌補(bǔ)了這一點(diǎn)。JPCAP實(shí)際上并非一個(gè)真正去實(shí)現(xiàn)對(duì)數(shù)據(jù)鏈路層的控制,而是一個(gè)中間件,JPCAP調(diào)用wincap/libpcap,而給Java語言提供一個(gè)公共的接口,從而實(shí)現(xiàn)了平臺(tái)無關(guān)性。局域網(wǎng)監(jiān)聽利用的是所謂的“ARP欺騙”技術(shù)。在以前曾經(jīng)一段階段,局域網(wǎng)的布局是使用總線式(或集線式)結(jié)構(gòu),要到達(dá)監(jiān)聽只需要將網(wǎng)卡設(shè)定為混雜模式即可,但現(xiàn)在的局域網(wǎng)絡(luò)普遍采用的是交換式網(wǎng)絡(luò),所以單純靠混雜模式來達(dá)到監(jiān)聽的方法已經(jīng)不可行了。所以為了達(dá)到監(jiān)聽的目的,我們需要“欺騙”路由器、“欺騙”交換機(jī),即“ARP欺騙”技術(shù)。假設(shè)本機(jī)為A,監(jiān)聽目標(biāo)為B。首先,偽造一個(gè)ARPREPLY包,數(shù)據(jù)鏈路層頭及ARP內(nèi)容部分的源MAC地址填入A的MAC地址,而源IP部分填入網(wǎng)關(guān)IP,目的地址填入B的MAC、IP,然后將這個(gè)包發(fā)送給B,而B接收到這個(gè)偽造的ARPREPLY包后,由于源IP為網(wǎng)關(guān)IP,于是在它的ARP緩存表里刷新了一項(xiàng),將(網(wǎng)關(guān)IP,網(wǎng)關(guān)MAC)刷新成(網(wǎng)關(guān)IP,A的MAC)。而B要訪問外部的網(wǎng)都需要經(jīng)過網(wǎng)關(guān),這時(shí)候這些要經(jīng)過網(wǎng)關(guān)的包就通通流到A的機(jī)器上來了。接著,再偽造一個(gè)ARPREPLY包,數(shù)據(jù)鏈路層頭及ARP內(nèi)容部分的源MAC地址填入A的MAC地址,而源IP部分填入B的IP,目的地址填入網(wǎng)關(guān)MAC、IP,然后將這個(gè)包發(fā)給網(wǎng)關(guān),網(wǎng)關(guān)接收到這個(gè)偽造的ARPREPLY包后,由于源IP為B的IP,于是在它的ARP緩存表里刷新了一項(xiàng),將(B的IP,B的MAC)刷新成(B的IP,A的MAC)。這時(shí)候外部傳給B的數(shù)據(jù)包經(jīng)過網(wǎng)關(guān)時(shí),就通通轉(zhuǎn)發(fā)給A。這樣還只是攔截了B的數(shù)據(jù)包而已,B并不能上網(wǎng)——解決方法是將接收到的包,除了目的地址部分稍做修改,其它原封不動(dòng)的再轉(zhuǎn)發(fā)出去,這樣就達(dá)到了監(jiān)聽的目的——在B不知不覺中瀏覽了B所有的對(duì)外數(shù)據(jù)包。3設(shè)計(jì)步驟3.1相關(guān)必須程序包的安裝和解壓1.JpcapSetup-0.7.e*e的安裝,雙擊即可。圖3-1JPCAP包的安裝2.WinPcap4.0.e*e的安裝,雙擊即可。圖3-2JPCAP包的安裝3.JpcapDumper-src.zip,解壓。圖3-3JPCAP包的安裝3.2Myeclipse下的運(yùn)行1.運(yùn)輸層TCP協(xié)議包this.packetCount++;
//如果截獲的包為TCP包
if(packetinstanceofjpcap.packet.TCPPacket){
this.tcpPacketCount++;
TCPPackettcp=(TCPPacket)packet;
this.tcppPacketLength+=tcp.len;
System.out
.println("================================================================================");
System.out.println("TCPPacket");
System.out.println("|——*此數(shù)據(jù)包的源IP地址:"+tcp.src_ip);
System.out.println("|——*此數(shù)據(jù)包的目的IP地址:"+tcp.dst_ip);
System.out.println("|——*此數(shù)據(jù)包的傳輸層協(xié)議類型:"+tocol+"(TCP)");
System.out.println("|——*此數(shù)據(jù)包的長度:"+tcp.len);圖3-2-1TCP協(xié)議包的統(tǒng)計(jì)結(jié)果圖3-2-2TCP協(xié)議包的統(tǒng)計(jì)結(jié)果2.運(yùn)輸層UDP協(xié)議包{//如果截獲的包為UDP包
this.udpPacketCount++;
UDPPacketudp=(UDPPacket)packet;
this.udpPacketLength+=udp.len;
System.out
.println("================================================================================");
System.out.println("UDPPacket");
System.out.println("|——*此數(shù)據(jù)包的源IP地址:"+udp.src_ip);
System.out.println("|——*此數(shù)據(jù)包的目的IP地址:"+udp.dst_ip);
System.out.println("|——*此數(shù)據(jù)包的傳輸層協(xié)議類型:"+tocol+"(UDP)");
System.out.println("|——*此數(shù)據(jù)包的長度:"+udp.len);圖3-2-3UDP協(xié)議包的統(tǒng)計(jì)結(jié)果3.協(xié)議包總統(tǒng)計(jì)("截止到目前:");
("|捕獲到的運(yùn)輸層協(xié)議包的總數(shù)為:"+this.packetCount);
("|——*捕獲到TCPPacket包的總數(shù)為:"+this.tcpPacketCount+",總數(shù)據(jù)包長度為"+this.tcppPacketLength);
("|——*捕獲到UDPPacket包的總數(shù)為:"+this.udpPacketCount+",總數(shù)據(jù)包長度為"+this.udpPacketLength);}圖3-2-4JPCAP下流量統(tǒng)計(jì)器的統(tǒng)計(jì)結(jié)果4出現(xiàn)的問題及解決方法本次課程設(shè)計(jì)由于自己對(duì)知識(shí)的掌握不足夠,所以出現(xiàn)了一些問題,不過在老師和同學(xué)的幫助下順利克服了這個(gè)難題。例如對(duì)JAVA語言不熟悉,和JPCAP包的不了解,導(dǎo)致程序運(yùn)行不成功。在調(diào)試的過程中,對(duì)myeclipse軟件不夠熟練,以至于調(diào)試了很長時(shí)間才得出結(jié)果。因此,掌握好相關(guān)的知識(shí),做課程設(shè)計(jì)的時(shí)候才能得心應(yīng)手。5結(jié)束語課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新月異,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說是無處不在。因此作為二十一世紀(jì)的大學(xué)生來說掌握計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)是十分重要的。對(duì)于計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)來說,我們大多數(shù)同學(xué)還都是一*白紙,同樣對(duì)于JAVA以及C++語言對(duì)于我們來說同樣比較陌生,但是通過大家不懈的努力,從不知道變?yōu)橹溃瑥暮唵尾僮鞯绞炀氝\(yùn)用,大家都付出了相應(yīng)的心血。雖然,在計(jì)算機(jī)網(wǎng)絡(luò)這塊領(lǐng)域上面我們還只是入門級(jí)別,但是我相信通過此次計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)的學(xué)習(xí),大大增加了同學(xué)們的動(dòng)手能力和思考能力,為我們今后步入社會(huì)打下了堅(jiān)實(shí)的基礎(chǔ)。通過理論學(xué)習(xí)到實(shí)際應(yīng)用,這次的計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)讓我們切身體會(huì)到了什么才是學(xué)以致用。由于是第一次做計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì),在設(shè)計(jì)之中也不免遇到了種種問題和困難,這樣才能讓我自己發(fā)現(xiàn)自己的不足之處,才能激發(fā)自己學(xué)習(xí)的樂趣,才能讓自己在更遠(yuǎn)的學(xué)習(xí)道路上處于不敗之地。參考文獻(xiàn)[1]周明天,汪文勇.TCP/IP網(wǎng)絡(luò)技術(shù)原理與技術(shù)[M].:清華大學(xué)出社版社.[2][美]RogersCadenhead.Java編程入門經(jīng)典.梅興文譯.第4版.:人民郵電,2007[3]陳軼.姚曉昆編著.Java程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo).:清華大學(xué),2006[4]計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),*明新莫林主編,**大學(xué).程序附錄:TrafficStatictics.javapackage.socket.lzf;importjava.io.IOE*ception;importjpcap.JpcapCaptor;
importjpcap.NetworkInterface;publicclassTrafficStatictics{
privatestaticTrafficStaticticsts;
publicstaticvoidmain(String[]args){
//啟動(dòng)統(tǒng)計(jì)線程
TrafficStatictics.ins();
}
publicsynchronizedstaticTrafficStaticticsins(){
if(null==ts){
TrafficStaticticsts=newTrafficStatictics();
ts.init();
}
returnts;
}
publicvoidinit(){
//獲取本機(jī)上的網(wǎng)絡(luò)接口對(duì)象
finalNetworkInterface[]devices=JpcapCaptor.getDeviceList();
for(inti=0;i<devices.length;i++){
NetworkInterfaceni=devices[i];
//大于零時(shí)為有效地址;不抓本機(jī)地址
if(ni.addresses.length>0){
//一個(gè)網(wǎng)卡可能有多個(gè)地址,只獲取第一個(gè)
Stringaddr=ni.addresses[0].address.toString();
try{
//創(chuàng)建卡口上的抓取對(duì)象
JpcapCaptorjpcap=JpcapCaptor.openDevice(ni,2000,true,
20);
//創(chuàng)建對(duì)應(yīng)的抓取線程并啟動(dòng)
LoopPacketThreadlpt=newLoopPacketThread(jpcap,addr);
lpt.start();
System.out.println(addr+"上的采集線程已啟動(dòng)!?。?);
}catch(IOE*ceptione){
e.printStackTrace();
System.out.println("抓取數(shù)據(jù)包時(shí)出現(xiàn)異常!!!");
}
}
}
}}
==============================================================================================·LoopPacketThread.javapackage.socket.lzf;importjpcap.JpcapCaptor;publicclassLoopPacketThreade*tendsThread{
privateJpcapCaptorjpcap=null;
privateStringipAddr="";
publicLoopPacketThread(JpcapCaptorjpcap,StringipAddr){
this.jpcap=jpcap;
this.ipAddr=ipAddr;
}
//-1表示永久抓包
publicvoidrun(){
this.jpcap.loopPacket(-1,newReceivePacket(this.ipAddr));
}
}
==============================================================================================·ReceivePacket.javapackage.socket.lzf;importjava.te*t.SimpleDateFormat;
importjava.util.Date;importjpcap.PacketReceiver;
importjpcap.packet.Packet;
importjpcap.packet.TCPPacket;
importjpcap.packet.UDPPacket;publicclassReceivePacketimplementsPacketReceiver{
privateStringipAddr="";
privatestaticintpacketCount=0;
privatestaticinttcpPacketCount=0;
privatestaticintudpPacketCount=0;
privatestaticinttcppPacketLength=0;
privatestaticintudpPacketLength=0;
publicReceivePacket(StringipAddr){
this.ipAddr=ipAddr;
}
publicvoidreceivePacket(Packetpacket){
this.packetCount++;
//如果截獲的包為TCP包
if(packetinstanceofjpcap.packet.TCPPacket){
this.tcpPacketCount++;
TCPPackettcp=(TCPPacket)packet;
this.tcppPacketLength+=tcp.len;
System.out
.println("================================================================================");
System.out.println("TCPPacket");
System.out.println("|——*此數(shù)據(jù)包的源IP地址:"+tcp.src_ip);
System.out.println("|——*此數(shù)據(jù)包的目的IP地址:"+tcp.dst_ip);
System.out.println("|——*此數(shù)據(jù)包的傳輸層協(xié)議類型:"+tocol+"(TCP)");
System.out.println("|——*此數(shù)據(jù)包的長度:"+tcp.len);
}elseif(packetinstanceofjpcap.packet.UDPPacket){//如果截獲的包為UDP包
this.udpPacketCount++;
UDPPacketudp=(UDPPacket)packet;
this.udpPacketLength+=udp.len;
System.out
.println("================================================================================");
System.out.println("UDPPacket");
System.ou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年消防給水系統(tǒng)施工與設(shè)備調(diào)試服務(wù)合同3篇
- 2025年合伙旅游服務(wù)協(xié)議
- 2025年度鋁灰處理廢棄物處理項(xiàng)目融資租賃合同4篇
- 2025年勞務(wù)派遣工作安全規(guī)定協(xié)議
- 2025年環(huán)保治理項(xiàng)目投資收購協(xié)議書模板3篇
- 2025年IT技術(shù)開發(fā)合同
- 2025年度路燈節(jié)能燈具供應(yīng)與安裝合同書4篇
- 2025五金購銷合同
- 二零二五年綠色環(huán)保防水材料研發(fā)與應(yīng)用合同3篇
- 2025資金借款的合同范本
- 2023年保安公司副總經(jīng)理年終總結(jié) 保安公司分公司經(jīng)理年終總結(jié)(5篇)
- 中國華能集團(tuán)公司風(fēng)力發(fā)電場運(yùn)行導(dǎo)則(馬晉輝20231.1.13)
- 中考語文非連續(xù)性文本閱讀10篇專項(xiàng)練習(xí)及答案
- 2022-2023學(xué)年度六年級(jí)數(shù)學(xué)(上冊(cè))寒假作業(yè)【每日一練】
- 法人不承擔(dān)責(zé)任協(xié)議書(3篇)
- 電工工具報(bào)價(jià)單
- 反歧視程序文件
- 油氣藏類型、典型的相圖特征和識(shí)別實(shí)例
- 流體靜力學(xué)課件
- 顧客忠誠度論文
- 實(shí)驗(yàn)室安全檢查自查表
評(píng)論
0/150
提交評(píng)論