0

我向某些 IP 地址发送 ARP 请求,但如您所知,主机并不总是具有相同的 IP 地址。我想首先发送 ARP 请求并保存回复的主机的 MAC 地址,然后通过 MAC 地址发送 arp 包,不是通过IP。我设法向所有主机发送ARP数据包并保存回复的主机的MAC地址,但我不知道如何使用目标MAC地址而不是目标IP地址发送ARP数据包。你有什么建议吗?如果你想放一些代码,请告诉我

4

4 回答 4

0

ARP 主要用于将 IP 地址转换为 MAC 地址,而不是相反。尽管存在逆向 ARP 规范(将 MAC 地址转换为 IP 地址),但 Linux、FreeBSD 或 Windows 机器都默认不支持它。

如果您尝试跟踪经常更改 IP 地址的机器并且您对它具有管理访问权限,则可以查看 mDNS(适用于 Linux 或 FreeBSD)或适用于 Windows 的 LLMNR。这两种协议都允许您通过询问主机名来查询本地链接网络上的机器。通过链接本地版本的 DNS 解析 IP 地址,从 IP 地址解析 MAC 地址,然后进行通信。

于 2013-01-28T18:06:00.567 回答
0

正如我正确理解您的问题一样,您需要一个简单的解决方案,您希望通过该解决方案将 ARP 消息发送到特定主机而不是 ARP 请求广播。

AFAIK,有一个名为“arping”的工具可以做到这一点,但它有两个版本 1. arping(iputils lib 的一部分) 2. Thomas Habets 的 arping (这允许您将 APR 消息直接发送到目标.MAK地址)

默认情况下,大多数 Linux 都有 arping 工具(不是 Thomas Habets 的 arping),但您可以从 Internet 获取 Thomas Habets 的 arping 并使用它,唯一的问题是在系统上同时使用两种 arping 实现可能会引入冲突。

因此,要使其正常工作,必须删除前一个,并且 NetworkManager 也将被删除,因为它需要 iputils arping。

我希望这能帮到您。

于 2014-04-01T08:53:08.110 回答
0

我认为你在混淆一些东西。ARP 适用于 OSI 第 3 层,MAC 地址与 OSI 第 2 层上的以太网相关。要在 OSI 第 3 层上发送包(如 IP),您必须知道以太网的正确 MAC 地址。因此,您向所有站点发出广播(ARP 请求),您将得到一个带有正确 MAC 地址的答案(每个 usiccast)。比您可以发送具有该 MAC 地址的 IP 包。

于 2013-01-26T12:17:24.733 回答
0

直接通过 ARP 通信很困难,因为没有用于发送 ARP 消息的简单 API。在 Linux 上,您必须使用原始套接字(请参阅 参考资料man 7 raw)并自己实现 ARP 协议。

于 2013-01-26T12:45:19.367 回答