ARP 表不存储响应广播 ping 请求的设备

网络工程 MAC地址 arp
2021-07-10 21:51:06

我有一个简单的问题,我正在本地网络上执行广播 ping 请求,使用的是装有最新 Yosemite 10.10.4 的 Mac。

所以我ping 255.255.255.255,我得到了一堆设备的响应(都在本地 10.11.204.XX 网络上,掩码为 255.255.255.0)。但是,如果我查看带有 的 ARP 表arp -a,则看不到任何响应我的 ping 请求的设备。我只能在表中看到广播IP和MAC地址(10.11.204.255 | ff:ff:ff:ff:ff:ff)。

但是,如果我单独 ping 每个设备,它们就会出现在 ARP 表中。为什么会出现这种行为?

然后,如果我让 ping 请求循环,我会在一段时间后看到一些设备的 IP。这对我来说真的很奇怪。

4个回答

您的(未指定的操作系统)显然只是根据它直接联系的主机填充它的缓存。当它向 FF:FF:FF:FF:FF:FF 发送一个帧时,之前未知的响应节点都不会被学习。

如果广播依赖于 ARP,那么它首先怎么可能有 ARP 呢?您基本上将所有数据包发送到 FF:FF:FF:FF:FF:FF。由于您拥有源 mac 地址,您的计算机不会进行 ARP。

您想要做的是 ping 您所在网络(子网)的广播 IP。例如,xxx0/24 的网络地址为 xxx0,广播为 xxx255。如果您 p​​ing xxx255 而不是 255.255.255.255,您将开始接收响应,当您从 Mac 上的 terminal.app 发出 arp -a 时,您将看到条目。请记住,您可能需要让 ping 运行一段时间,以便捕获每个人。我会打开两个终端窗口,ping 我所在子网的广播 IP 地址并运行一个循环来检查 ARP 表:while true;做约会;arp -a; 睡 10

示例

Subnet = 10.0.0.0/24
Network Address = 10.0.0.0
Broadcast Address = 10.0.0.255
Range of available IP addresses: 10.0.0.1 to 10.0.0.254

简单解释这些 ping 是通过多播发送的,在您的第一个场景中为 FF-FF-FF-FF。路由器并不总是知道 mac 到 IP 的映射并发送一个无偿的 arp ......当它收到响应时,它不会告诉你每个多播主机收到消息并丢弃它或没有回复,因为它不匹配当您 ping 单个主机时,您将获得单个 MAC 到 IP 绑定,并且可以将其归档在 ARP 表中。