让我们具体看看每个问题并扩展您的问题,以帮助您更好地了解可能发生的情况。
1. 主机 A 是更新自己的 ARP 表,还是整个 LAN 之间共享的 ARP 表?
不,ARP 表不会在整个 LAN 之间共享。每个设备都有自己的 ARP 表。设备负责管理自己的 ARP 表,包括与条目关联的本地接口。
2. 如果 ARP 能力没有在所有 LAN 之间共享,如果其他主机没有,同一 LAN 上的其他主机是否会知道主机 A 刚刚收到的这个新信息?
对切换环境的简短回答是否定的。如果查看ARP 数据包的格式,您将看到该数据包包含发送方硬件 MAC 地址和 IP。当请求设备发送ARP请求报文时,报文被发送到广播地址,由交换机转发到局域网的所有接口(设备)。这允许具有请求的 IP 地址的设备回复并将回复数据包定位到请求它的设备的特定 IP 和 MAC 地址。网络交换机负责维护 MAC 地址表,以便将数据包仅转发到数据包中特定设备的交换机上的接口。下面是一个从 10.0.0.1 发出的 ARP 数据包搜索 10.0.0.2 的示例。
15:00:37.395072 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.2 tell 10.0.0.1, length 46
也就是说,设备可以发送一个免费的ARP 回复数据包,宣布它们拥有特定的 IP 地址。无偿的 ARP 应答包将被发送到广播地址,再次被转发到 LAN 上的所有设备。在这种情况下,接收该数据包的每个设备都必须选择如何处理该数据包。如果他们的 ARP 表中没有地址,他们通常会忽略它。但是,如果他们的 ARP 表中确实有该地址,则他们应该更新任何更改的信息。以下是从 10.0.0.2 向 LAN 通告的示例数据包:
15:00:38.462135 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.2 (ff:ff:ff:ff:ff:ff) tell 10.0.0.2, length 46
上面详述的所有行为都可以防止设备在不需要的数据包上浪费处理周期,并在不需要的表条目上浪费内存。