如果 ARP 没有找到关联的 IP 会发生什么

What happens if ARP does not find an associated IP

我了解 ARP 工作原理的基础知识,一台主机发送 MAC 广播 "Who has this IP?",网络中的一些主机用 "I have that IP" 回复。

但是如果路由器连接到同一个 LAN 会发生什么情况,路由器的功能是将 LAN 连接到 WAN(希望我没说错)。请求地址的主机是否会自动切换并使用他的数据向连接的路由器发送消息,或者会发生什么?

实际情况是,您的 IP 堆栈首先确定需要将数据包发送到的位置。如果它去往一个直连网络中的IP地址,它会直接发送数据包,否则,它会把数据包发送到网关。

这对您来说可能听起来很抽象。对于一个简单的案例,假设您有以下网络:

     host_a        host_b
 +----------+   +----------+
 |10.1.1.101|   |10.1.1.102|
 +-----+----+   +-----+----+                           
       |              |           +--------+         <--------->
  -----+--------------+-----------+10.1.1.1|--------<  INTERNET >
                                  +--------+         <--------->
                                   Router

在您的 host_a 上,您将拥有

  • ip地址10.1.1.101
  • 网络掩码 255.255.255.0
  • 默认网关 10.1.1.1

在您的 host_b 上,您将拥有

  • ip地址10.1.1.102
  • 网络掩码 255.255.255.0
  • 默认网关 10.1.1.1

假设host_a想要发送一个数据包到10.1.1.102。如果您使用 IP 地址和网络掩码,您会发现它们位于同一子网中。因此,host_a 将向网络发送一个 ARP 请求,询问 "Hey, who has 10.1.1.102?" Host_b 将使用其 MAC-ID 进行响应。

现在假设 host_a 想要发送到 8.8.8.8。那不在本地网络上。因此,host_a 现在会将其发送到其默认网关 10.1.1.1。 Host_a 将发送 ARP 请求 "Hey, who has 10.1.1.1?",路由器将以其 MAC-ID 响应。

上面的过程大大简化了实际发生的事情,但它可能会帮助您进一步了解网络的工作方式。

(这个问题可能更适合另一个 SE 站点,但之后可能会有人迁移它)