java网络

Java之JPcap网络抓包与分析程序(支持多种协议分析,对初学网络者认识网络有很好帮助)

2013年09月11日 ⁄ 综合 ⁄ 共 3910字 ⁄ 字号 小 中 大 ⁄ 评论关闭

此程序是利用JPcap包,抓取通过本地网卡的数据帧,并分析各字段的程序。

这是我的一个网络课程设计,具体介绍在下面的实习报告中详细讲述,并附有源代码

不知道怎么上传文件,所以直接粘贴过来了。

 

目录

第一章  设计目的、任务与要求

1.1设计的目的------------------------------------3

1.2设计的任务与要求------------------------------3

第二章 系统分析设计  

2.1 系统分析--------------------------------------3

2.2 系统设计--------------------------------------8

第三章 系统实现

  3.1 实现过程--------------------------------------10

  3.2 采用技术--------------------------------------11

  3.3 结果界面--------------------------------------11

  3.4 结果分析--------------------------------------16

第四章 心得体会------------------------------------- 18

参考文献--------------------------------------------19

附录------------------------------------------------20

第一章  设计目的、任务与要求

1.1:设计的目的

    《计算机网络原理》课程是计算机科学与技术专业的重要专业课程之一。随着计算机网络技术的迅速发展和在当今信息社会中的广泛应用,给《计算机网络》课程的教学提出了新的更高的要求。

计算机网络原理课程设计的目的与任务是为了使学生在课程学习的同时,通过在一个计算机网络环境中的实际操作,巩固《计算机网络原理》课堂教学所讲授网络的基本理论、基本概念和方法技术,对现代计算机网络的基本功能有一个初步的了解。为学生今后使用计算机网络的理论和方法,开发大型、复杂的集成系统,打下一个坚实的基础。

    1.2:设计的任务与要求

    本次实验的要求在网络环境,使用编程语言实现捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:

    ①:在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

    ②:可扩展分析其他协议包。

第二章 系统分析设计

2.1:系统分析

实现网络抓包的方法有很多,下面介绍四种:

    ①:原始套接字

    套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开Socket 提供的功能,原始套接字( Raw Socket) 满足了这样的要求。原始套接字能

够生成自己的数据报文, 包括报头和数据报本身的内容。通过原始套接字, 可以更加自如地控制Windows 下的多种协议, 而且能够对网络底层的传输机制进行控制。可以用原始套接字来发送和接收IP 层以上的原始数据包, 如ICMP, TCP, UDP, 而且能够对网络底层的传输机制进行控制。Raw Socket 的作用主要有三个方面: ( 1) 接收发向本机的ICMP, IGMP 协议包, 或者发送这些协议包; ( 2) 接收发向本机的IP 包; ( 3) 发送自定义的IP 包。

    ②:LibPca p

    可以从http: / / ee. lbl. gov/ 找到并下载LibPcap, 它是一个广泛应用的系统抓包库。LibPcap 是一种与系统无关, 采用分组捕获机制的分组捕获函数库, 用于访问数据链路层, 它在不同的平台上采用统一的编程接口, 使用LibPcap 编写的程序可自由的跨平台使用。同时LibPcap 是一个独立于系统接口的用户级的抓包库, 它为底层网络监听提供了可移植框架。它的应用包括网络统计集合、安全监听、网络调试等。

    ③:WinPca p

    可以从http: / /winPcap. polito. it / 找到WinPcap。WinPcap是LibPcap 的Windows 版本, 它是一个基于Win32 的捕获数据包和网络分析的体系结构, 它包括一个内核级的包过滤器, 一个底层的动态链接库( Packet. dll) , 一个高层并且与系统无关的库( WPcap. dll, 基于LibPcap0. 6. 2 版本) 。WinPcap 是集成于Windows95, 98, ME, NT, 2000 和XP 操作系统的设备驱动程序, 它可以从网卡捕获或者发送原始数据, 同时能够过滤并且存储数据包。开发WinPcap 这个项目的目的在于为Win32 应用程序提供访问网络底层的能力。它提供了以下四项功能:

( 1) 捕获原始数据报, 包括共享网络上各主机发送/ 接收的以及相互之间交换的数据报;

( 2) 在数据报发往应用程序之前, 按照自定义的规则将某些特殊的数据报过滤掉;

( 3) 在网络上发送原始的数据报;

( 4) 收集网络通信过程中的统计信息。

    ④:JP ca p

可以从http: / / netresearch. ics. uci. edu / kfujii / jpcap / doc /index. html 找到JPcap。JPcap 是一个能够捕获、发送网络数据包的Java 类库包。这个包用到了LibPcap 和原始套接字API。目前JPcap 在FreeBSD 3. x, Linux RedHat 6. 1, Solaris 和MicrosoftWindows 2000 /XP 系统上已经做过测试, 并且支持Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, ICMPv4 协议。JPcap是一个Java 类集合, 它为网络数据包的捕获提供接口和系统支持。其最初版本是2000 年6 月发布的JPcap0. 01 版, 此后几经修改, 到2003 年4 月发布了最新的JPcap0.4 版。

由于本程序采用Java编程语言,所以使用第四种方法,即JPca p来实现抓包。

现在选定了抓包工具,我们还得分析一下所获包的结构,只有弄清楚结构,才能很好的分析捕获包。

我们知道,网络软件是由多个协议层次组成的,在每一层里面都有自己的数据封装,以便实现每个层的功能。OSI参考模型中定义了7层,从低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP参考模型中定义得比较少:互联网层(网络层)、传输层、应用层、主机至网络层(空白,可以理解为跟OSI模型一致)。而且我们知道,高层协议整个协议包是封装到低层协议的数据段中的,所以整体是一个嵌套的结构,如下图所示:

数据链路帧格式如下(以太帧):

网络层协议有IP、ICMP、ARP等:

IP分为IPv4和IPv6,这里介绍IPv4

IPv4协议格式如下:

ICMP用于控制,每一种控制有独特的格式,由于格式太多,这里不介绍,详情可参考RFC792 - Internet Control Message Protocol。

ARP协议格式如下:

传输层协议有TCP、UDP:

TCP协议格式如下:

UDP协议格式如下:

基于TCP的应用层协议主要有HTTP:

HTTP协议格式如下(具体数据会不同,这里供参考):

①:HTTP请求:

GET 请求:

POST请求:

②:HTTP响应:

基于UDP的应用层协议主要有DNS:

DNS协议格式如下:

以上这些协议是本程序所能分析出来的,由于网络协议有上千种,不可能都去分析,所以其他的协议在此忽略。

既然找到抓包工具,弄清协议格式,现在就开始系统设计吧。

2.2:系统设计

环境搭建:

设计少不了的一项工作就是环境搭建,以下是环境搭建的步骤:

①:jre安装(最好是最新版本——jre6)

②:Myeclipse或者Eclipse安装

③:下载并安装winpcap(可以下载最新版本)。

④:配置Jpcap路径:这一步也是最重要的一步。具体路径为,把Jpcap文件夹下lib文件夹里的Jpcap.dll复制到"C:/Program Files/Java/jre1.6.0_07/bin"文件夹里面(复制到你机器JRE文件夹放到bin文件夹里面就可以了,其中JRE的版本一定要与Eclipse配置的版本一致),再把Jpcap文件夹下lib文件夹里的Jpcap.jar复制到"C:/Program Files/Java/jre1.6.0_07/lib/ext"文件夹里面(复制到你机器JRE文件夹->lib->ext放到ext文件夹里面就可以了)。

⑤:配置Eclipse的JRE环境,(一定需要),选择Window->preferences->Java->Installed JREs,在Installed JREs选择框中选择相应的JRE版本,点Edit,


选择Add External JARs…,选择你的Jpcap.jar包("C:/Program Files/Java/jre1.6.0_07/lib/ext"文件夹里),在Finish就配置全部完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值