JPCAP——JAVA中的数据链路层控制

  半年前网络技术课的老师要我们做个ARP查询,老师是教人用winsock的,可我一味钻java,干着急,钻进java世界到处查,终于找到这么一个东西。

然后做了一个ARP监听器,没想到被老师看上了,说是国内JPCAP研究的人不多,可以考虑写一篇论文,老师给我推荐发表。

于是有了这么一篇东西。不过现在还不知道老师发哪个刊物去了。。。老师说,还没回音。。

 

 

 

JPCAP —— JAVA 中的数据链路层控制
 
一. JPCAP 简介
众所周知,JAVA语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。
JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性。在官方网站上声明,JPCAP支持FreeBSD 3.x, Linux RedHat 6.1, Fedora Core 4, Solaris, and Microsoft Windows 2000/XP等系统。
二. JPCAP 机制
       JPCAP的整个结构大体上跟wincap/libpcap是很相像的,例如NetworkInterface类对应wincap typedef struct _ADAPTER  ADAPTER getDeviceList() 对应pcap_findalldevs()等等。 JPCAP有16个类,下面就其中最重要的4个类做说明。
 
1. NetworkInterface
该类的每一个实例代表一个网络设备,一般就是网卡。这个类只有一些数据成员,除了继承自java.lang.Object的基本方法以外,没有定义其它方法。
 
数据成员
NetworkInterfaceAddress[]
addresses
    这个接口的网络地址。设定为数组应该是考虑到有些设备同时连接多条线路,例如路由器。但我们的PC机的网卡一般只有一条线路,所以我们一般取addresses[0]就够了。
 java.lang.String
datalink_description .
    数据链路层的描述。描述所在的局域网是什么网。例如,以太网(Ethernet)、无线LAN网(wireless LAN)、令牌环网(token ring)等等。
 java.lang.String
datalink_name
   该网络设备所对应数据链路层的名称。具体来说,例如Ethernet10M、100M、1000M等等。
 java.lang.String
description
   网卡是XXXX牌子XXXX型号之类的描述。例如我的网卡描述:Realtek RTL8169/8110 Family Gigabit Ethernet NIC
 boolean
Loopback
    标志这个设备是否loopback设备。
 byte[]
mac_address
    网卡的MAC地址,6个字节。
 java.lang.String
Name
    这个设备的名称。例如我的网卡名称:/Device/NPF_{3CE5FDA5-E15D-4F87-B217-255BCB351CD5}
 
2. JpcapCaptor
该类提供了一系列静态方法实现一些基本的功能。该类一个实例代表建立了一个与指定设备的链接,可以通过该类的实例来控制设备,例如设定网卡模式、设定过滤关键字等等。
 
数据成员
 int
dropped_packets 
抛弃的包的数目。
protected  int
ID
    这个数据成员在官方文档中并没有做任何说明,查看 JPCAP 源代码可以发现这个 ID 实际上在其 JNI C 代码部分传进来的,这类本身并没有做出定义,所以是供其内部使用的。实际上在对 JpcapCator 实例的使用中也没有办法调用此数据成员。
protected static boolean[]
instanciatedFlag
   同样在官方文档中没有做任何说明,估计其为供内部使用。
protected static int
MAX_NUMBER_OF_INSTANCE
同样在官方文档中没有做任何说明,估计其为供内部使用。
int
received_packets
        
收到的包的数目
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值