如果 ARP 使用广播,我可以用它找出 MAC 地址和 IP 吗?

网络工程 MAC地址 ARP
2022-02-22 01:28:24

我有一个外围设备,通过以太网连接到我的 Ubuntu。我想找出它的 IP,不幸的是,它没有缓存在我的ARP表中。

ARP 将消息广播到每个可访问的 MAC 地址,对吗?因此,如果没有暴力扫描,我希望 ARP 协议能够广播来自我的笔记本电脑的请求,并且我希望外围设备能够回答并显示其 IP。

是否有这样的功能,如果没有,是否有充分的理由?

3个回答

我希望 ARP 协议能够广播来自我的笔记本电脑的请求,并且我希望外围设备能够回答并显示其 IP。

不完全是:您需要先知道 IP。给定 IP,ARP 用于查找 MAC 地址。实际上,您会问:“IP abcd 的硬件地址是什么?” 具有该 IP 地址的计算机将以其 MAC 地址回答。因此,为了获得 MAC,您需要 IP。

您还可以侦听网络上的所有 ARP 请求。随着各种主机发送它们或免费的ARP,您可以发现网络上主机的MAC地址。

ARP 将消息广播到每个可访问的 MAC 地址,对吗?

ARP请求是广播的,ARP回复通常是单播的。

因此,如果没有暴力扫描,我希望 ARP 协议能够广播来自我的笔记本电脑的请求,并且我希望外围设备能够回答并显示其 IP。

这不是 ARP 的工作原理。ARP 解析给定 IP 地址的 MAC 地址。

对于另一种方式(长期过时) ,定义了RARP,它将给定的 MAC 地址解析为一个或多个 IP 地址(通过询问中央 RARP 服务器)。它的采用率很低,当 BOOTP 尤其是 DHCP 变得流行时,它就被淘汰了——您可以使用这些预留来将所需的 IP 地址分配给给定的 MAC 地址。

还有逆向ARP,但我认为它从未被使用过。

简而言之:如果没有 DHCP 服务器,您可以要求您必须进行暴力扫描,或者使用更高层的发现方法。例如,您可以在单播以太网帧中制作地址为 255.255.255.255(或定向广播)的 UDP 数据包。

正如 Ron Maupin 在他的评论中指出的那样,发现另一台机器的最佳实践和面向未来的 (IPv6) 方法是使用IP 多播通过相应的网络配置,多播甚至可以跨路由器工作。

通常 arp 是一个请求-响应协议,发送方发出 arp 请求以将 IP 地址转换为 MAC 地址。不幸的是,这对您没有帮助,因为您不知道 IP 地址。

在数据包嗅探器运行时启动设备以查看它是否尝试发送任何内容是值得的。

一些设备会在启动时尝试通过发送对自己地址的 arp 请求来执行重复地址检测。

也有可能在启动过程中,设备会尝试与某个服务器通信,从而为服务器的预期 IP 或默认网关的预期 IP 发出 arp 请求。

AIUI 您应该能够通过查看“发送方地址”字段来区分重复检测 arp 和常规 arp 之间的区别,重复检测 arp 应为 0.0.0.0,常规 arp 应为发送者的 IP 地址。