更好地理解 arp 协议

更好地理解 arp 协议

我不太清楚 ARP 协议。

示例网络如下所示:

示例网络

我想从 A 向 B 发送一条消息,ARP 协议将起作用:

  • 首先A将发送的MAC地址R1BIP
  • 然后R1就会与 进行通信R3,不仅R1发送R3MAC 地址,还会发送B的 IP。
  • 在此R3通信后R4R3发送R4MAC地址,但BIP
  • 包裹最终到达B

  • 我的逻辑正确吗?
  • 当我必须更改 2 个以上的节点时,是这样工作的吗?
  • 如果这样工作,那么前一个节点如何知道下一个节点的 MAC 地址?

答案1

你混淆了两件事 -地址解析协议路由

地址解析协议

ARP(地址解析协议)用于识别本地网络上(即:同一子网)的某台主机的硬件地址。

如果A(IP )想要与另一个IP 地址为 的10.0.1.2/24主机( )进行通信,并且该主机不在缓存中,则会发生以下情况:C10.0.1.5

  1. A广播“ARP 请求
    • 使用广播 MAC 地址 ( ff:ff:ff:ff:ff:ff)
    • 请求任何具有 IP 地址的主机10.0.1.5响应
  2. 如果远程主机(C)收到此数据包,则它会使用正确的 MAC 地址进行响应。

ARP 也可以主动发生,主机“宣布“试图减少查找产生的延迟,但这很容易导致欺骗和中毒。

路由

路由允许主机访问“当地的“网络。例如,主机B的 IP 地址为10.0.5.2,该地址位于主机A10.0.1.0/24子网之外。

为了将数据包发送到主机B,主机A必须通过路由器(又称“网关“)。如果没有给出默认路由(或者没有配置匹配的特定路由),那么主机将无法访问。

如果一条路线存在,则将A

  1. 使用 ARP 查找路由器的 ( R1) MAC 地址
  2. 发送一个数据包到B的 IP ( 10.0.5.2),但使用路由器R1的 MAC 地址
  3. 路由器将执行相同的查找,将数据包发送到(或)R1的 MAC 地址,但使用 的 IP 地址。R3R2B
  4. 这种情况持续到数据包到达B,或者路由器声明无法路由到给定主机。

如果这样工作,那么前一个节点如何知道下一个节点的 MAC 地址?

每个步骤都使用 ARP 来获取下一个主机的 MAC 地址。R1想要通过 转发数据包R3,因此它使用 ARP 来获取 的R3MAC 地址。

答案2

ARP 协议是仅有的用于发现与本地链路上主机的 IPv4 地址关联的 MAC 地址。

在您的示例中,当主机 A 想要向主机 B 发送消息时,它会将消息发送到适当的路由器进行传送。选择哪个路由器取决于主机 A 上的路由表。路由器与主机 A 位于同一链路上,要将消息发送到路由器,主机 A 需要路由器 R1 的 MAC 地址。如果主机 A 在其 ARP 缓存中找不到路由器 R1 的 MAC 地址,它会使用 ARP 协议来查找路由器 R1 的 MAC 地址。一旦知道 MAC 地址,就可以发送数据包。

一旦路由器 R1 收到消息,它就会重复主机 A 所做的操作:查阅其路由表,选择下一跳路由器(例如 R3)。如果 R1 不知道 MAC 地址 R3,它会使用 ARP 协议来查找。一旦它知道了 R3 的 MAC 地址,它就会使用该地址将消息发送给 R3。

重复此过程,直到消息到达目标主机 B(或发生某些错误)。

答案3

基本上,每当某个节点 X 拥有某个节点 Y 的 IP 地址但不知道 Y 的 MAC 地址时,它就会发送 ARP 请求。在这种情况下,具有此 IP 地址的节点 Y 将使用其自己的 MAC 地址进行响应。

这些分配缓存在每个主机上,并且仅当在缓存中找不到信息时才会发送新消息。

因此,当 A 想要与 B 通信时,消息没有固定的顺序;这取决于之前发生过的通信。

另请注意,由于节点之间有不同的 LAN 段,因此每个节点都会请求 IP 地址下一个节点(“下一跳”),而不是 B 的 IP 地址。因此,您需要适当的路由表才能使所有这些正常工作。

相关内容