ARP 协议编程问题. 急呀! 高分求救呀1
在局域网中,总是IP冲突(没有DHCP)。在设IP的时候用sniffer分析后,发现当时的ARP包是这样的。
1。我当前没有一个可用的IP。这时我把IP设为202.203.37.1时,我的机子会发出一个ARP广播。其ARP结构是这样的:
以太网目的地址: FFFFFFFFFFFFFFFF (广播地址)
以太源地址: 我的物理地址
帧类型: 0x806
硬件类型: 1 (以太网地址)
协议类型: 0x0800(IP protocol)
硬件地址长度: 6 bytes
协议地址长度: 4 bytes
Opcode: 1 (ARP 请求)
发送端以太网地址:我的物理地址
发送端IP地址: 202.203.37.1
目的端以在网地址 00000000000000000000
目的端IP地址: 202.203.37.1
如果当前我的网断上有机子使用202.203.37.1这个IP的话。它就会发给我一个ARP Reply
其中
发送端IP地址: 202.203.37.1
目的端IP地址: 202.203.37.1
同时它还会发一个ARP广播。告诉该网断中的机子它的IP 和 它的物理地址。
我想根据这个原理写一个程序。在我没有可用的IP时,自己构造一个ARP广播包。
其中发送端IP地址 为202.203.37.1 - 202.203.37.253 穷举所有IP。然后等待所有网卡上收到的ARP包。判断每一个包的发送端IP,如果是在202.203.37.1-202.203.37.253 中的一个的话,就说明这个IP已经被占用了,这样就可以把当前我的网段上所有可用的IP列举出来了。现在:ARP包的构造和发送我已经知道了(我利用了WinPcap 运行库)。可是我的问题是:
当我的网卡收到ARP包时,我要自己处理这个原始包,而不让操作系统处理。利用WinPcap 运行库 可以吗?还是有什么其它的好方法呀?希望有知道的人告诉我一下。谢谢。我的QQ:22517257