假设一个数据包来自互联网,比如说来自 Web 服务器的 HTTP 响应。
路由器将数据包定向到交换机。但交换机不会更改目标和源 MAC。这意味着路由器必须事先知道哪个 MAC 地址属于具有该 IP 的主机。
那么问题是,路由器是否有自己的ARP缓存,就像任何装有Windows和Linux的主机在内存中一样?
答案1
路由器将数据包传送至交换机。
不是。路由器将数据包发送到 IP 地址。
为此,它需要知道下一跳 ARP 地址。因此,它将使用自己的缓存或延迟,直到它发送“谁有 XXXX 的 ARP?”之后。
但交换机不会更改目标和源 MAC。这意味着路由器必须事先知道具有该 IP 的主机的 MAC 地址。
正确。这种情况没有什么特别之处。无论有没有交换机。数据报到达,都会被解析。路由现在知道目的地(并且这个目的地不是路由器本身)。因此,检查路由表以确定哪个网络(和哪个 NIC)需要输出到下一跳。以及是否需要下一跳的 ARP。
并且 ARP 遵循完全正常的方法:1a 检查。1b) 如果未知,则检索并存储在缓存中。2) 发送。
答案2
是的,路由器有自己的 ARP 存储。而且通常实际上是基于 Windows 或 Linux 的机器。