为什么第二个 ARP 请求要等到 ping 结束后才会显示?

为什么第二个 ARP 请求要等到 ping 结束后才会显示?

我的一位教授向我介绍了这个问题,因为这个问题只发生在从 100Mb 网卡切换到千兆网卡之后。被 ping 的计算机发出的第二个 arp 请求(用于发送回复)直到 ping 完成之后才会发送。

我决定在家里用几台虚拟机进行一些测试,看看能否找到原因。

Wireshark 捕获示例

清除两台机器上的 arp 缓存(arp -d)并 ping 之后,我得到了与教授相同的结果,但我似乎无法弄清楚原因。

我进行了一些谷歌搜索,发现有人在使用 Linux 时遇到了类似的问题(我使用的是 Windows 10),它说 arp 表中存在过时的条目以及所谓的第一次探测延迟,但我从来没有能够找到有关 Windows 中这两件事的任何信息。

有人知道为什么会发生这种情况吗?或者如果不是为了找到第一个设备,那么第二个 arp 请求是用来做什么的?

答案1

这似乎是 Bruce Hartpence 所说的“Return ARP”。如此摘录从数据包指南到核心网络协议。

图 4-12 所示的对话说明了 ARP 的另一个重要方面 — 只有发起对话(生成 ARP 请求)的主机才会在其本地 ARP 表中放置目标主机的条目。也就是说,听到交换的其他站点,即使它们正在接收 ARP 请求,也不会将这些站点添加到自己的 ARP 表中。然而,许多主机(特别是路由器)在填充其表格时非常积极,并且在听到 ARP 流量或参与 ARP 消息时,随后会生成自己的 ARP 请求来填充其表格。

简短回答。目标主机现在了解了其他主机,正在填充它自己的 ARP 表。

相关内容