ARP 协议究竟如何工作

ARP 协议究竟如何工作

我知道如果目标主机位于另一个网络中,则返回的 MAC 地址是路由器的 MAC,而不是指定主机的 MAC。我现在想知道它是如何工作的。如果我的假设是正确的,当发送方发送 ARP 广播时,路由器会检查目标主机是否在 LAN 中,如果是,则将广播消息转发到 LAN 主机中,如果不是(目标主机在 LAN 之外),路由器会用自己的 MAC 进行应答,而不会将消息广播到 LAN,从而避免不必要的网络流量?

答案1

不,它不像您描述的那样工作。将以太网 LAN 想象成分成多个段,其中段上的每个主机都可以与段上的其他主机通信。(在每个人都转向使用交换机的点对点连接之前,以太网最初的工作方式就是这样的)。因此,一个段如下所示:

          <--- 192.168.3.0/24  --->
   ---------------------------------------------------    
      |                |             |            |
    Router          Host 1        Host 2       Host 3
    192.168.3.254   192.168.3.1  192.168.3.2  192.168.3.3
      |
... ----

网络掩码描述该段上允许的 IP 地址范围,在本例中为 192.168.3.0 至 192.168.3.255。

现在让我们看看主机 1。它的网络适配器将具有地址192.168.3.1/24,因此可以将 LAN 上的 IP 地址与其他地址区分开来。它还将有一个包罗万象的路由条目,其中只写着“使用 192.168.3.254 作为其他所有 IP 的网关”。

因此,当它向某个 IP 地址发送数据包时,它将知道要使用 LAN 上的哪个“本地”IP 地址,要么直接使用本地主机之一,要么使用具有网关地址的路由器。

接下来,它会在本地 ARP 缓存中查找此 IP。如果 IP 地址不在缓存中,无论它是路由器 IP 地址还是另一个主机 IP 地址,都会通过 LAN 发送以太网广播,内容为“您好,我的 MAC 地址是 00:11:22:33:44:55,我正在寻找 IP 192.168.3.x 的 MAC 地址”。IP 地址为 192.168.3.x 的盒子(路由器或主机)会回答“您好 00:11:22:33:44:55,我的 MAC 地址是 66:77:88:99:AA:BB,我是 IP 地址 192.168.3.x 的所有者”。

这就是发生的一切。

答案2

arp 不会发送给路由器,arp 会发送给整个网络。路由器或任何主机都可能回复。

我知道如果目标主机在另一个网络中,则返回的 MAC 地址是路由器的 MAC,而不是指定主机的 MAC。我现在想知道它是如何工作的。

您的计算机将查看其本地路由表。如果目的地位于本地网络上(由本地 IP 和掩码确定),则计算机将尝试直接对目的地地址进行 arp。如果目的地不在本地网络上,并且找到匹配的路由,则计算机将对路由中定义的网关地址进行 arp。

相关内容