不响应 IP 0.0.0.0 请求的 ARP

不响应 IP 0.0.0.0 请求的 ARP

我正在开发一个个人项目,涉及到 ARP 请求具体的/已知的IP 0.0.0.0 的 MAC:Who has 0.0.0.0? Tell x.x.x.x.据我所知任何接收主机应该对此做出响应,但似乎某些操作系统(特别是 *nix 风格)不太符合要求。我的 Android 手机响应良好,但我的 OS X/Debian 盒子却没有。当我具体询问他们自己的 IP 时,他们确实做出了回应,所以这并不是说他们完全忽略单播请求。我还没有测试Windows。

任何已知的原因和/或如何解决/解决这个问题?基本上我需要通过 MAC 地址探测 LAN 上的主机并检查它是否仍然存在(即响应探测)。如果除了 ARP 之外还有更好的方法来做到这一点,我会接受任何建议,但不会将 LAN 上所有可能的 IP 的请求发送到特定的 MAC。

答案1

将其作为单独的答案发布,以便我可以接受它。 =]

我最终将整个 ARP 更改为使用 ICMP,因为显然这Who has 0.0.0.0?毕竟是非法的。

224.0.0.1我的程序现在发送带有 IP 目的地(第 3 层,多播到所有主机)的ICMP 回显请求 (ping) 数据包,它将目标 MAC(第 2 层)设置为我正在监视的特定 MAC。现在确实会产生明显的开销,但我想我只能忍受这一点。

相关内容