2024年4月13日发(作者:)
组长:李天翼
组员:
网络流量监控
网络流量监控:主要实现了在局域网中,使用路由器上网,能够把整个局域网的计算机的据
包,截获然后转发,根据截获的数据包,来进行流量的监控。进一步能够实
现对流量的控制。
在java程序中要实现数据包截获,转发等操作必须了解一下JPCAP。
JPCAP:
类库介绍
1.1 Jpcap的使用
Jpcap是2003年日本开发的一套能够捕获、发送网络数据包的java类库。因为核心Java
API不能访问底层的网络数据,但Jpcap是一种提供在Windows或UNIX系统上进行这种访
问的Java API。Jpcap不是一种纯粹的Java解决方案,它依赖本地库的使用。在Windows 或
UNIX上,你必须有必要的第三方库,分别是WinPcap或libpcap。要在java中使用Jpcap
类库需要安装Jpcap的运行和开发环境。
1.2 Jpcap介绍
JpcapSender
IPv6Option
Jpcap
ICMPPacket
JpcapWriter
TCPPacket UDPPacket
Jpcap类库的基本结构如下图:
JpcapHandler
IPAddress
EthemetPacket ARPPacket IPPacket
DatalinkPacket Packet
Jpcap 类库结构
1.2.1 Packet基类及其子类
Packet这个类是所有被捕获的数据包的基类,可以提供被捕获数据包的长度,被捕获数
据包的时间标记等基本信息。
ARPPacket和IPPacket是继承Packet的子类,它们将被捕获包分成两类。ARPPacket
按照ARP数据报的内容,将其各数据段的数据取出。IPPacket则被分得更细。这两个类主
要与是与数据链路层密切相关的,其与MAC地址相关的信息在EthemetPacket类中表示出
来。EthemetPacket是从DatalinkPacket继承而来的。
IPPacket下有三个子类,分别是ICMPPacket、TCPPacket、UDPPacket。这三个类分别
表示的是被存储在IP数据报的报文中发送的ICMP、TCP、UDP报文。
1.2.2 Jpcap的主要功能
Jpcap提供了十分方便的数据包捕获方法。Jpcap使用一个事件模型来处理包。首先,
必须创建一个执行接口andler的类。
public class Jpcaphandler implements JpcapHandler {
public void handlePacket(Packet packet){
n(packet);
}
}
为了捕获包,需要让Jpcap知道要用哪个网络设备来监听。API提供了
iceList()方法以满足这一目的。这个方法返回一列字符串,可以按一下方
法如下使用它:
String[] devices = iceList();
一旦有了一个设备名称的目录,只要从其中选取一个用来监听:
String deviceName = devices[0];
选择一个设备之后,通过vice()方法打开它。openDevice()方法需要四个参数:
即将打开的设备名,从设备上一次读取的最大字节数,说明是否将设备设为混杂模式的
Boolean值,和以后调用processPacket()方法要使用到的超时值。
Jpcapjpcap = vice(deviceName, 1024, false, 10000);
openDevice()方法将一个参数返回到用以捕获的Jpcap对象。既然有了Jpcap实例,你可以调
用processPacket() 或loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包
数可以是-1(说明没有限制);执行JpcapHandler的一个类的实例。
如果你调用processPacket(),那么Jpcap将一直捕获包,直到超过openDevice中规定的时限


发布评论