




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.z.目录目录1摘要21引言21.1课程设计目的21.2课程设计内容31.3课程设计要求32设计原理32.1流量统计器的工作原理42.2JAVAJPCAP原理43设计步骤53.1相关必须程序包的安装和解压53.2Myeclipse下的运行74出现的问题及解决方法105结束语11参考文献12程序附录:13编程实现简单的流量统计器学生**:指导老师:摘要:它是一个可以记录访客来源地址(包括ip、转入地址、搜索引擎地址、关键词、ie浏览器型号等),被访问页面地址(受访页面,停留时间、转出地址等)的数字递增的源代码程序。通过使用JAVA中的JPCAP包设计并实现了一个流量统计系统.关键词:JAVA;JPCAP;编程;流量统计器。1引言计算机网络是这个时代的基石,整个信息的流动和交换全部依托于这个庞大的网络系统。如果这个信息网络出现问题和故障,则会给社会、团体、个人等带来很大的损失。有效的网络管理不仅能够保证网络的正常运行,而且能够有效地避免网络故障给我们带来的损失。在网络管理过程中,网络流量监控是整个网络管理的一个重要部分。对于一个网络管理员,有效的网络流量监控不仅能够让网络管理人员能够及时了解网络的运行状态,并且能够对网络出现的问题作出及时调整和排除。1.1课程设计目的以基础技能训练和能力培养为主线,从培养学生动手能力,培养工程技术实际应用型人才入手,强化综合性、实际性。目的是通过实习使学生掌握计算机网络的实际开发所要掌握技术,培养其动手能力,观察能力,分析和解决实际问题的能力,巩固、加深理论课知识,增加感性认识,进一步加深对计算机网络的理解,提高对网络中所于奥实现的功能的系统设计能力和调试能力。1.2课程设计内容1.利用原始套接字实现简单的流量统计器。2.系统功能包括:2.1原始套接字与网卡邦定,并接收流经网卡的所有数据包;2.2对数据包进行分析以获得源IP地址和目的IP地址;2.3对数据包进行分析以获得运输层协议类型;2.4对数据包进行分析以获得数据包的长度;2.5对本机发送、接收的各运输层协议的数据流量进行统计,并显示统计结果。1.3课程设计要求(1)按要求编写课程设计报告书,能正确阐述设计结果。(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。2设计原理图2-1流量统计器工作原理图2.1流量统计器的工作原理源代码放置在网页中,每次有用户浏览到这个网页时就会触发这个源代码程序工作,然后以全程记录所有信息,并以数字递增的方式把结果统计出来传到服务器,再到程序的服务器后台进行具体分析并实时保存,这就是流量统计器的原理了。2.2JAVAJPCAP原理Java语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给Java语言提供一个公共的接口,从而实现了平台无关性。局域网监听利用的是所谓的“ARP欺骗”技术。在以前曾经一段阶段,局域网的布局是使用总线式(或集线式)结构,要到达监听只需要将网卡设定为混杂模式即可,但现在的局域网络普遍采用的是交换式网络,所以单纯靠混杂模式来达到监听的方法已经不可行了。所以为了达到监听的目的,我们需要“欺骗”路由器、“欺骗”交换机,即“ARP欺骗”技术。假设本机为A,监听目标为B。首先,伪造一个ARPREPLY包,数据链路层头及ARP内容部分的源MAC地址填入A的MAC地址,而源IP部分填入网关IP,目的地址填入B的MAC、IP,然后将这个包发送给B,而B接收到这个伪造的ARPREPLY包后,由于源IP为网关IP,于是在它的ARP缓存表里刷新了一项,将(网关IP,网关MAC)刷新成(网关IP,A的MAC)。而B要访问外部的网都需要经过网关,这时候这些要经过网关的包就通通流到A的机器上来了。接着,再伪造一个ARPREPLY包,数据链路层头及ARP内容部分的源MAC地址填入A的MAC地址,而源IP部分填入B的IP,目的地址填入网关MAC、IP,然后将这个包发给网关,网关接收到这个伪造的ARPREPLY包后,由于源IP为B的IP,于是在它的ARP缓存表里刷新了一项,将(B的IP,B的MAC)刷新成(B的IP,A的MAC)。这时候外部传给B的数据包经过网关时,就通通转发给A。这样还只是拦截了B的数据包而已,B并不能上网——解决方法是将接收到的包,除了目的地址部分稍做修改,其它原封不动的再转发出去,这样就达到了监听的目的——在B不知不觉中浏览了B所有的对外数据包。3设计步骤3.1相关必须程序包的安装和解压1.JpcapSetup-0.7.e*e的安装,双击即可。图3-1JPCAP包的安装2.WinPcap4.0.e*e的安装,双击即可。图3-2JPCAP包的安装3.JpcapDumper-src.zip,解压。图3-3JPCAP包的安装3.2Myeclipse下的运行1.运输层TCP协议包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("|——*此数据包的源IP地址:"+tcp.src_ip);
System.out.println("|——*此数据包的目的IP地址:"+tcp.dst_ip);
System.out.println("|——*此数据包的传输层协议类型:"+tocol+"(TCP)");
System.out.println("|——*此数据包的长度:"+tcp.len);图3-2-1TCP协议包的统计结果图3-2-2TCP协议包的统计结果2.运输层UDP协议包{//如果截获的包为UDP包
this.udpPacketCount++;
UDPPacketudp=(UDPPacket)packet;
this.udpPacketLength+=udp.len;
System.out
.println("================================================================================");
System.out.println("UDPPacket");
System.out.println("|——*此数据包的源IP地址:"+udp.src_ip);
System.out.println("|——*此数据包的目的IP地址:"+udp.dst_ip);
System.out.println("|——*此数据包的传输层协议类型:"+tocol+"(UDP)");
System.out.println("|——*此数据包的长度:"+udp.len);图3-2-3UDP协议包的统计结果3.协议包总统计("截止到目前:");
("|捕获到的运输层协议包的总数为:"+this.packetCount);
("|——*捕获到TCPPacket包的总数为:"+this.tcpPacketCount+",总数据包长度为"+this.tcppPacketLength);
("|——*捕获到UDPPacket包的总数为:"+this.udpPacketCount+",总数据包长度为"+this.udpPacketLength);}图3-2-4JPCAP下流量统计器的统计结果4出现的问题及解决方法本次课程设计由于自己对知识的掌握不足够,所以出现了一些问题,不过在老师和同学的帮助下顺利克服了这个难题。例如对JAVA语言不熟悉,和JPCAP包的不了解,导致程序运行不成功。在调试的过程中,对myeclipse软件不够熟练,以至于调试了很长时间才得出结果。因此,掌握好相关的知识,做课程设计的时候才能得心应手。5结束语课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,计算机网络技术已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握计算机网络技术是十分重要的。对于计算机网络课程设计来说,我们大多数同学还都是一*白纸,同样对于JAVA以及C++语言对于我们来说同样比较陌生,但是通过大家不懈的努力,从不知道变为知道,从简单操作到熟练运用,大家都付出了相应的心血。虽然,在计算机网络这块领域上面我们还只是入门级别,但是我相信通过此次计算机网络课程设计的学习,大大增加了同学们的动手能力和思考能力,为我们今后步入社会打下了坚实的基础。通过理论学习到实际应用,这次的计算机网络课程设计让我们切身体会到了什么才是学以致用。由于是第一次做计算机网络课程设计,在设计之中也不免遇到了种种问题和困难,这样才能让我自己发现自己的不足之处,才能激发自己学习的乐趣,才能让自己在更远的学习道路上处于不败之地。参考文献[1]周明天,汪文勇.TCP/IP网络技术原理与技术[M].:清华大学出社版社.[2][美]RogersCadenhead.Java编程入门经典.梅兴文译.第4版.:人民邮电,2007[3]陈轶.姚晓昆编著.Java程序设计实验指导.:清华大学,2006[4]计算机网络技术,*明新莫林主编,**大学.程序附录:TrafficStatictics.javapackage.socket.lzf;importjava.io.IOE*ception;importjpcap.JpcapCaptor;
importjpcap.NetworkInterface;publicclassTrafficStatictics{
privatestaticTrafficStaticticsts;
publicstaticvoidmain(String[]args){
//启动统计线程
TrafficStatictics.ins();
}
publicsynchronizedstaticTrafficStaticticsins(){
if(null==ts){
TrafficStaticticsts=newTrafficStatictics();
ts.init();
}
returnts;
}
publicvoidinit(){
//获取本机上的网络接口对象
finalNetworkInterface[]devices=JpcapCaptor.getDeviceList();
for(inti=0;i<devices.length;i++){
NetworkInterfaceni=devices[i];
//大于零时为有效地址;不抓本机地址
if(ni.addresses.length>0){
//一个网卡可能有多个地址,只获取第一个
Stringaddr=ni.addresses[0].address.toString();
try{
//创建卡口上的抓取对象
JpcapCaptorjpcap=JpcapCaptor.openDevice(ni,2000,true,
20);
//创建对应的抓取线程并启动
LoopPacketThreadlpt=newLoopPacketThread(jpcap,addr);
lpt.start();
System.out.println(addr+"上的采集线程已启动!!!");
}catch(IOE*ceptione){
e.printStackTrace();
System.out.println("抓取数据包时出现异常!!!");
}
}
}
}}
==============================================================================================·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("|——*此数据包的源IP地址:"+tcp.src_ip);
System.out.println("|——*此数据包的目的IP地址:"+tcp.dst_ip);
System.out.println("|——*此数据包的传输层协议类型:"+tocol+"(TCP)");
System.out.println("|——*此数据包的长度:"+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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025全日制劳动合同范本亮点
- 2025年红外线汽车尾气分析仪项目合作计划书
- 2025关于合同违约终止劳动合同赔偿金的理由
- 2025bt置换合同示例
- 2025技术咨询合同格式
- 《化学品安全培训》课件
- 2025年金属制日用杂品合作协议书
- 2025年休闲健身服务项目建议书
- 用友软件公司UHR考勤管理培训
- 2025年锌及锌合金材项目建议书
- 有色金属冶金概论总论
- 砂石料单价编制
- 海藻学知到章节答案智慧树2023年烟台大学
- 六年级下册道德与法治期中测试卷含答案【考试直接用】
- EIM Book 1 Unit 11 Promise,promise单元知识要点
- 全陕西师范大学《716文学综合》考研真题详解下载全
- 引航梯的位置和标识及保养记录
- 外科学急性化脓性腹膜炎
- 苯酚的分子组成和结构课件
- 《罗织经》全文及翻译
- GB∕T 26077-2021 金属材料 疲劳试验 轴向应变控制方法
评论
0/150
提交评论