在 ping 请求中,Wireshark 不会在 ICMP 帧之前显示 ARP 帧

在 ping 请求中,Wireshark 不会在 ICMP 帧之前显示 ARP 帧

到目前为止,我知道如果 Wireshark 在 ICMP 帧之前不显示 ARP 帧,通常是因为缓存中有 ARP 请求。

我确实检查了缓存,并删除了缓存中的所有 ARP 数据:

sudo arp -d -a

然后,我启动 Wireshark,添加一个过滤器:arp or icmp过滤除 ARP 或 ICMP 数据之外的任何流量。之后,我尝试运行一个简单的ping请求:

ping -c4 www.google.com

成功了,Wireshark 成功显示了 ICMP 数据。但是,即使我清除了 ARP 缓存,ICMP 数据之前也没有 ARP 信息。

发生这种情况还有其他原因吗?

答案1

ARP 表中与访问 Google 相关的唯一地址是路由器的 MAC 地址(网关地址)。某些入站数据包(例如来自执行维护或 DNS 的 Windows 的数据包)可能在 ARP 清除后返回,并在您启动 wireshark 进行观察之前重置。

除了实际的 ARP 响应之外,其他数据包的数据也可以填充 ARP 表。

答案2

(除非您的路由器设置为半桥接模式(这种情况并不常见且不太可能),否则 ARP 表将仅包含与您的计算机位于同一子网上的系统的地址,即,如果您的 IP 地址是 192.168.xx,则 ARP 表中应显示的唯一地址将是 192.168.xx 和 127.xxx [127.xxx = 环回]。

为了到达 Google,您的计算机有一个到路由器的默认路由。因此,为了向 Google 发送数据包,它只需要知道这个地址,而当您生成 ICMP 流量时,它很可能已经知道这个地址,因此无需查找。

相关内容