![不响应 IP 0.0.0.0 请求的 ARP](https://linux22.com/image/118724/%E4%B8%8D%E5%93%8D%E5%BA%94%20IP%200.0.0.0%20%E8%AF%B7%E6%B1%82%E7%9A%84%20ARP.png)
我正在开发一个个人项目,涉及到 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。现在确实会产生明显的开销,但我想我只能忍受这一点。