我想知道 ping 命令要工作需要多少个 ARP 请求/答复?
假设我们有两台机器点对点连接,其 IP 分别为 192.168.110.2 和 192.168.110.3,并从机器 192.168.110.3 执行 ping 命令
ping 192.168.110.2-c 1
现在,需要多少个 ARP 请求/回复才能成功 ping?
在这种情况下只需要一个 ARP 请求和一个 ARP 答复?
答案1
理论上是两个,但实际上一个就足够了:发送 ping 的一方需要知道将 ping 发送到哪里。接收方需要知道将回复发送到哪里,但根据从 ping 收到的信息,应该已经知道了这些信息。当然,除非其中一台或多台计算机在其 arp 表中有相关条目。
我们将发送 ping 的计算机称为 A,将目标称为 B。
- A 知道这是一个本地连接(根据其路由表,不需要路由),并通过其 arp 表查找与计算机 B 的 IP 匹配的 IP。
- 如果未找到,A 将广播 arp 请求。我记得在 wireshark 上看到此 arp 请求为“谁有 192.168.0.123?”或类似内容。
- B 将发送一个 arp 响应(我不记得这是有针对性的还是广播的。最有可能是有针对性的)
- 此时,A 已准备好发送 ping 所需的一切。
- B 收到 ping 后,进行相应处理并做出响应。
- 此时,B 可能已经将 A 添加到其 arp 表中,因为它已经从 ICMP Ping 数据包中收到了所有这些信息。但为了便于说明,我们假设它没有。在这种情况下,它将执行与 A 完全相同的操作,以便发送响应。