(ARP = 地址解析协议 - RFC 826(有没有办法通过用户世界程序在Windows上发送和接收ARP流量?在 Linux 上,我们可以只创建原始套接字来发送 ARP 流量,但在 Windows 上,我的研究表明我们需要编写一个可用于发送此类流量的驱动程序。我想过使用 WinPcap,但它在内部安装了一个可用于发送/接收此类流量的驱动程序。
我的问题是:在不安装驱动程序的情况下,Windows是否有任何方法允许传输/接收ARP数据包?
发送 ARP 数据包的最简单方法可能是使用 SendARP
。
然后,您可以使用 GetIpNetTable
从 IP 堆栈的 ARP 表中检索地址。为了确保您获得当前地址,您通常需要执行DeleteIpNetEntry
删除该地址,然后SendARP
,然后等待一段时间并GetIpNetTable
(如有必要,重复几次,直到您获得一个带有所需地址条目的地址(。
或者,对于 Vista 或更高版本,您可以使用 ResolveIpNetEntry2
更直接地检索数据。这会自动刷新地址的当前条目(如果有(,发送 ARP 数据包并返回当前结果(如果我没记错的话,这也用于更新堆栈的 ARP 表(。