设备的 arp 表是否仅在收到来自先前发出的 arp 请求的回复时才会更新,还是会在设备收到帧/数据包时更新?
例如,A 向
B 发送arp 请求B 向 A 发送 arp 回复
A 的 arp 表已更新。
或者
C 向 A 发送一个数据包(假设 C 的 arp 表中已经有 A 的 IP/MAC)
A 的 arp 表由于某种原因没有 C 的条目
A 立即用 C 的 IP/MAC 更新其 arp 表
设备的 arp 表是否仅在收到来自先前发出的 arp 请求的回复时才会更新,还是会在设备收到帧/数据包时更新?
例如,A 向
B 发送arp 请求B 向 A 发送 arp 回复
A 的 arp 表已更新。
或者
C 向 A 发送一个数据包(假设 C 的 arp 表中已经有 A 的 IP/MAC)
A 的 arp 表由于某种原因没有 C 的条目
A 立即用 C 的 IP/MAC 更新其 arp 表
RFC 没有解决您的第二种情况。这样做的原因是主机 C 发送到主机 A 可能与主机 A 不在同一网络上。在这种情况下,主机 A 具有 ARP 缓存条目是没有意义的,因为主机 A 永远不会在其 ARP 中查找主机 C缓存。主机 A 将始终知道主机 C 不在其网络上,因此当它想要发送到主机 C 时,它总是会在其 ARP 缓存中查找自己的网关条目。
可能有一些实现可以按照您的描述进行操作,但是标准没有解决它,并且似乎会浪费 ARP 缓存内存。
我会尝试一个接一个地回答你的每一个问题。但前提是,只有当它看到 ARP 响应时,才会在主机上生成 arp 条目。主机通常不会从所有帧中进行 mac 学习。开关执行该功能。
A 发送 arp 请求给 BB 发送 arp 回复给 AA 更新的 arp 表。
C 向 A 发送一个数据包(假设 C 的 arp 表中已经有 A 的 IP/MAC) 由于某种原因 A 的 arp 表没有 C 的条目 A 立即更新了 C 的 IP/MAC 的 arp 表
所有这些都假设它们在同一个子网上。否则,网关就会出现。请参阅 Ron 的回答。
我认为你有一些问题:
A 发送一个目的地址为 FF:FF:FF:FF:FF:FF 的 Arp 广播请求,询问谁有一些“IP 地址”。这个请求到达“IP地址”,这台电脑更新它的arp表并用它自己的MAC发送一个回复。