我知道如果目标主机位于另一个网络中,则返回的 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。