当局域网中的主机使用 ARP 时,它会被广播,因为主机不知道目标主机在哪里,但路由器知道它必须使用哪个接口才能到达下一个路由器。那么它真的需要ARP吗?它可以将数据包放在可以到达其他路由器的接口上。
ARP如何在两台路由器之间工作?
它可以将数据包放在可以到达其他路由器的接口上。
你的前提有问题。请记住,链路上的帧是通过第 2 层协议传送的,并且该协议可能具有必须解析的地址才能将数据包封装到帧中。如果帧使用 MAC 地址,则需要 ARP 将下一跳第 3 层地址解析为第 2 层地址。
此外,如果链路是多路访问链路,路由器如何将数据包定向到多路访问链路上的多台主机之一?数据包只有源和目标第 3 层地址,没有任何中间跳地址。是的,路由器知道数据包必须通过特定接口,但它必须有某种方式将帧定向到多路访问接口上的特定设备(路由器)。
是的,有第 2 层协议可能会在帧上使用其他地址或不使用地址。如果没有寻址,例如 PPP,则路由器知道如何创建帧,并且链路上只有一个其他设备,但是还有许多其他第 2 层协议(帧中继、ATM 等)使用其他寻址,路由器将使用ARP以外的方法来解析下一跳的二层地址。
当局域网中的主机使用 ARP 时,它会被广播,因为主机不知道目标主机在哪里,但路由器知道它必须使用哪个接口才能到达下一个路由器。
路由器还知道主机连接在哪个接口上。请记住,在第 2 层,另一个路由器只是网络上的主机。与主机相比,路由器对另一台路由器的了解并不多。
此外,仅广播 ARP 请求。ARP 还规定主机创建一个 ARP 表,ARP 可以简单地在 ARP 表中查找第 2 层地址,而不使用广播。
- 从源到目标:IP 地址不会改变。
- 在源 MAC 地址将由计算机添加,目标 Mac 地址将是网关 Mac 地址,而不是目标。
- 逐跳 MAC 地址将更改,直到到达目的地。
ARP 用于检索目标主机的 MAC 地址。在第 3 层,它知道目标 IP,但是当它必须添加 L2 标头时,它不知道目标主机的 mac 地址。因此,为了获取 mac 地址,它会发送一个 ARP 数据包。收到响应后,它将更新其 ARP 表以供将来查找。
它是终端主机、路由器还是网关并不重要。这就是网络堆栈的实现和工作方式。此外,通过添加包含下一跳 MAC 地址的新标头,在每一跳替换 L2 标头
当局域网中的主机使用 ARP 时,它会被广播,因为主机不知道目标主机在哪里,但路由器知道它必须使用哪个接口才能到达下一个路由器。那么它真的需要ARP吗?它可以将数据包放在可以到达其他路由器的接口上。
是否使用 ARP 不取决于设备是“主机”还是“路由器”,而是取决于数据包退出的接口类型。
首先在路由表中查找目的地。这将指定一个输出接口和可能的下一跳地址。如果未指定下一跳地址,则目的地将用作下一跳地址。
接下来会发生什么取决于接口的类型。如果它是以太网接口,则将在 arp 表中查找,如果 arp 表中没有条目,则在发生 arp 请求时,数据包将被搁置一旁。该 arp 表条目将用于将下一跳 IP 地址映射到接收路由器的 MAC 地址。接收路由器将依次使用 MAC 地址来过滤传入流量*。
即使有问题的以太网接口碰巧直接连接到另一个路由器,这也适用。路由器不知道也不关心它只关心接口是以太网接口。
另一方面,如果接口是某种其他类型,则可能根本没有映射过程,或者可能存在某些特定于链接类型的其他映射过程。
* 这很重要,因为如果没有它,以太网网络上的多个路由器会导致数据包重复。