您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > IP包流量分析程序的设计与实现
IP包流量分析程序的设计与实现第1页共19页11.引言IP就是真实流量,是有人真正浏览了您的网站而产生的流量,每台电脑只有一个IP地址,所以一个IP就是一个人,反映在统计上就是独立IP数量,IP是InternetProtocol(因特网协议)的缩写,它是通过计算机网络进行交流的最常用的协议之一。IP监控解决方案就是通过有线或者无线IP网络把视频信息以数字化的形式来进行传输。只要是网络可以到达的地方就一定可以实现视频监控和记录,并且这种监控还可以与很多其它类型的系统进行完美的结合,无论是由模拟摄像机加视频服务器组成的解决方案,还是单独由网络摄像机组成的解决方案,或者是两者混合组成的解决方案,IP监控都已被证明是一种极具吸引力的解决方案。在越来越多的原有行业应用中,这种革命性的技术正在逐步取代传统的监控系统,在提高安全性的同时也进一步的降低了成本;而在许多新的应用领域,它还是第一次用到,也因此开创和激发了许多新的市场。正是由于它系统的可扩展性,IP监控逐渐巩固了其在现有监视和远程监控行业应用的地位,也加速了在其他新兴行业的应用,监控本地网络,捕获一段时间内以本机为源或目的地址的IP数据包,统计IP数据的信息,列出本机到相同目的地址或同一源地址到本机且数据包协议类型相同的据包的数量。IP协议的目标很简单:生成发往目的地的数据报,而且除了把这个数据包发送到下一跳路由器之外,不需要担心任何事情。实际上,IP协议很复杂,否则,IP数据报头就不需要那么多的字段。认真研究IP数据报头是非常重要的。IP协议负责接收和发送指定IP地址数据包。但是,IP协议并不保证数据传递的可靠性。1.1设计目的随着网络技术的飞速发展,链路容量和设备处理能力不断升级,Internet的规模呈爆炸性增长,社会对Internet的依赖性越来越高,随之而来,网络传输的业务类型已从简单的低带宽要求的文件传送、电子邮件等变为数据、语音、IP包流量分析程序的设计与实现第2页共19页2视频等大流量业务,并且,业务对可靠性,实时性,安全性传输的要求越来越高。基于IP协议的应用成为网络技术研究与软件开发的一个重要基础,因此学习网络层以基本概念,了解IP协议的基本内容,对于掌握TCP/IP协议的主要内容和学习网络课程是十分重要的,通过本次课程设计,有助于熟悉IP包格式和加深对IP协议的理解。1.2课程设计内容编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址和目的地址统计出该源地址在该时间段内发出的IP包的个数,将其统计结果在控制台现实出来。程序的具体要求如下:(1)获取网络设备列表。(2)选择网卡并打开。(3)当捕获数据包时,可能需要设置过滤器。(4)捕获数据包或者发送数据包。(5)统计数据的流量。IP包流量分析程序的设计与实现第3页共19页32.相关知识介绍2.1IP流量分析2.1.1网间协议IPIP协议直接位于2层数据链路层之上,负责生成发往目的地的数据报。IP协议原来在RFC791中定义,后来进行了修改并且进行了多次重新修订。但是,IP协议的基本设计思想仍没有变。IP层不提供任何类型的流量控制或者排序功能。这些功能留给上层。我们将使用“数据报”(datagram)这个词汇指一个完整的IP信息,使用“数据包”(packet)这个词汇指一个单个的IP数据包。IP协议负责接收和发送指定IP地址数据包。但是,IP协议并不保证数据传递的可靠性。在IP协议层中没有“重试一下”的概念。由于各种原因,数据包有可能出现丢失、损坏、重复、不按照顺序传递或者延迟等问题。IP协议还负责处理IP选项并且以ICMP错误和控制消息等方式提供反馈信息。IP协议的特点:(1)IP协议是一种不可靠,无联系的数据包传送协议;(2)IP协议是点对点的网络层通信协议;(3)IP协议向传输层隐藏了物理网络的差异。2.1.2IP实现网络互连各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。IP协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP数据包”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。数据包也是分组交换的一种形式,就是把所传送的数据分段打成“包”,再传送出去。但是,与传统的“连接型”分组交换不同,它属于“无连接型”,是把打成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数IP包流量分析程序的设计与实现第4页共19页4据包”。这样,在开始通信之前就不需要先连接好一条电路,各个数据包不一定都通过同一条路径传输,所以叫做“无连接型”,它大大提高了网络的坚固性和安全性。每个数据包都有包头和包文这两个部分,包头中有目的地址等必要内容,使每个数据包不经过同样的路径都能准确地到达目的地。在目的地重新组合还原成原来发送的数据。这就要IP具有分组打包和集合组装的功能。在实际传送过程中,数据包还要能根据所经过网络规定的分组大小来改变数据包的长度,IP数据包的最大长度可达65535个字节。图2.1IP数据报格式IP协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。现在电信网正在与IP网走向融合,以IP为基础的新技术是热门的技术,如用IP网络传送话音的技术(即VoIP)就很热门,其它如IPoverATM、IPoverSDH、IPoverWDM等等,都是IP技术的研究重点。2.2JPCAP的简介Java,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言IP包流量分析程序的设计与实现第5页共19页5和Java平台的总称。用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:跨平台、动态的Web、Internet计算。但众所周知,Java语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。JPCAP是一个能够捕获、发送网络数据包的Java类库包。这个包用到了Libpcap和原始套接字API。JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给Java语言提供一个公共的接口,从而实现了平台无关性。在官方网站上声明,JPCAP支持FreeBSD3.x,LinuxRedHat6.1,FedoraCore4,Solaris,andMicrosoftWindows2000/XP等系统。JPCAP的整个结构大体上跟wincap/libpcap是很相像的,例如NetworkInterface类对应wincap的typedefstruct_ADAPTERADAPTER,getDeviceList()对应pcap_findalldevs()等等。IP包流量分析程序的设计与实现第6页共19页63.系统设计3.1设计规划3.1.1扫描目标的选取综合笔者现阶段技术水平和课程设计要求的考虑,通过设计程序来扫描IP包流量信息。同时扫描程序能扫描出MAC地址,网卡信息。然后通过用户选择网卡号,时间来捕获IP数据流量,并且最后把捕获数据总数显示出来。本课题通过编制程序来监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址和目的地址统计出该源地址在该时间段内发出的IP包的个数,将其统计结果在控制台现实出来。该程序的主要流程结构:(1)取得当前网络设备列表(在MyEclipse6.5控制台输出上显示,以让用户进行选择)。通过使用JpcapCaptor类中的静态方法getDeviceList来获取可以获取IP包的网卡的信息并存在都NetworkInterface数组中,然后在遍历数组将各个网卡的信息打印到控制台上。(2)将用户选择的网卡打开并设定抓包时间。在控制台接受用户选择网卡的号码和抓包时间后调用抓包方法来打开相对应的网卡和设定抓包时间。(3)设置过滤器,此处的过滤器“IP”,开始捕获数据包。通过调用JpcapCaptor类的静态方法openDevice打开指定的网卡后并返回一个JpcapCaptor类的实例,然后用该实例调用方法setFilter来设定为IP过滤,从而捕获IP数据包。(4)捕获IP包并按包的源地址和目的地址进行统计。从文本中读取数据包的信息,将源地址和目的地址提取出来建表,根据源地址和目的地址来进行数据包流量的统计。如图3.1所示。IP包流量分析程序的设计与实现第7页共19页7图3.1程序流程图选取网卡和输入抓包时间获取网卡列表打开网卡编译设置过滤器捕获IP包将IP包的信息加入文本中NY分析文本的内容并输入超时否?开始结束YNIP包流量分析程序的设计与实现第8页共19页83.2各模块工作原理及设计IP包流量分析程序的设计共包括四个模块,分别为:(1)获取网络设备列表;(2)用户选择网卡,接收数据包;(3)设置过滤器,新建文本存放数据包信息;(4)捕获IP包并按包的源地址和目的地址进行统计。3.2.1获取网络设备列表(1)工作原理:通过使用JpcapCaptor类中的静态方法getDeviceList来获取可以获取IP包的网卡的信息并存在都NetworkInterface数组中,然后在遍历数组将各个网卡的信息打印到控制台上。(2)代码实现://获取网络接口列表publicstaticvoidgetDevices(){//静态方法getDevicesNetworkInterface[]devices=JpcapCaptor.getDeviceList();//获取网络接口for(inti=0;idevices.length;i++){//循环输出接口信息System.out.println(i+:+devices[i].name+(+devices[i].description+));System.out.println(datalink:+devices[i].datalink_name+(+devices[i].datalink_description+));System.out.print(MACaddress:);for(byteb:devices[i].mac_address)//根据MAC地址来显示输出信息System.out.print(Integer.toHexString(b&0xff)+:);System.out.println();//变成十进制显示for(NetworkInterfaceAddressa:devices[i].addresses)System.out.println(address:+a.address++a.subnet++a.broadcast);//输出格式}}3.2.2选择网络(1)此模块为用户选择网卡,从而接收数据包。工作原理:在控制台接受用户选择网卡的号码和抓包时间后调用抓包方法来打开相对应的网卡和设定抓包时间。IP包流量分析程序的设计与实现第9页共19页9(2)代码实现:Scannerconsole=newScanner(System.in);getDevices();//显示PC机上可用的网卡的信息System.out.println(请输入网卡号0-2);intnum=console.nextInt();//获取用户要打开的网卡号System.out.println(请输入抓包时间(分钟));intminuets=console.nextInt();//获取用户抓包时间oneByOneReceiver(num,minuets);//调用抓包方法3.2.3设置过滤器(1)次模块为设置过滤器,并通过新建文本存放数据包信息。工作原理:通过调用JpcapCaptor类的静态方
本文标题:IP包流量分析程序的设计与实现
链接地址:https://www.777doc.com/doc-2877814 .html