什么时候使用 ARP 协议

网络工程 路由器 arp
2021-07-15 03:49:43

我是网络工程的初学者,所以请保持友善。我不确定我是否理解 ARP 协议在某些情况下是如何工作的。例如,如果我们有以下问题:

ARP缓存为空

  1. 主机 1(源)--> 路由器 1(默认)
  2. 路由器 1(决定)--> 路由器 2
  3. router2(决定)--> host2(目的地)

ARP 是在 1.、2. 或 3. 中使用还是全部使用?ARP 是在路由器之间使用还是仅在主机和路由器之间使用?如果某些路由器(例如 router1)是某些主机的默认设置,那么会使用 ARP 吗?

3个回答

地址解析协议 (ARP) 用于将IPv4 地址(32 位逻辑地址)解析 为物理地址(48 位 MAC 地址)。应用层的网络应用程序使用 IPv4 地址与另一个设备进行通信。但是在数据链路层,寻址是 MAC 地址(48 位物理地址)。

工作原理
步骤 1:如果源设备想要与另一台设备通信,源设备会检查其地址解析协议 (ARP) 缓存以查找是否已解析目标设备的 MAC 地址。如果存在,它将使用该 MAC 地址进行通信。

步骤2:如果本地缓存中没有ARP解析,源机器将生成地址解析协议(ARP)请求消息,将自己的数据链路层地址作为发送方硬件地址,将自己的IPv4地址作为发送方协议地址。它将目标 IPv4 地址填充为目标协议地址。目标硬件地址将留空,因为机器正在尝试找到它。

步骤 3:源向本地网络广播地址解析协议 (ARP) 请求消息。

第 4 步:由于消息是广播,因此 LAN 上的每个设备都会收到该消息。每个设备将目标协议地址(源试图与之通信的机器的 IPv4 地址)与其自己的协议地址(IPv4 地址)进行比较。不匹配的将丢弃数据包而不采取任何行动。

步骤 5:当目标设备检查目标协议地址时,它将找到匹配项并生成地址解析协议 (ARP) 回复消息。它从地址解析协议 (ARP) 请求消息中获取发送方硬件地址和发送方协议地址字段,并将这些值用于回复消息的目标硬件地址和目标协议地址。

步骤 6:目标设备将更新其地址解析协议 (ARP) 缓存,因为它需要尽快联系发送方机器。

步骤 7:目的设备发送地址解析协议 (ARP) 回复消息,它不会是广播,而是单播,以节省网络资源。

步骤 8:源机器将处理来自目的地的地址解析协议 (ARP) 回复,它将发送方硬件地址存储为目的地的第 2 层地址。

步骤 9:源计算机将使用从地址解析协议 (ARP) 回复消息中收到的发送方硬件地址和发送方协议地址更新其地址解析协议 (ARP) 缓存。

如果本地网络中的机器不知道彼此的 MAC 地址,则它们无法通信。无论是内部IP地址,可用于这一点。如果路由器想要与其客户端或其他路由器通信,则它必须知道其客户端和其他路由器的 MAC 地址。

您确实没有提供足够的信息来回答问题。

一些二层协议使用ARP从三层地址解析二层地址。并非所有第 2 层协议都使用 ARP。例如,需要在以太网上联系另一台主机(路由器只是第二层的另一台主机)的主机将使用 ARP,但需要使用 PPP 连接到另一台主机的主机将不使用 ARP。

例如,如果您的两个路由器通过 PPP 连接(这种情况并不少见),则不会在第二种情况下使用 ARP,但如果两个路由器通过以太网连接,则将使用 ARP。

让我们假设所有 arp 表最初都是空的(不是很现实,但是 meh)并且所有链接都使用类似以太网的协议。

  • Host1 在它的路由表中查找 host2 的 IP 地址以确定接口和下一跳 IP 地址。它找不到任何更好的匹配项,因此它使用默认网关。
  • Host1 在接口的 ARP 表中查找下一跳 IP 地址 (router1)。它没有找到匹配项。
  • Host1 对数据包进行排队并发出一个 ARP 请求以寻找 Router1。
  • Router1 回复 ARP 请求。
  • 主机 1 更新它的 ARP 表使数据包出列并将其发送到路由器 1
  • Router1 在它的路由表中查找 host2 的 IP 地址以确定接口和下一跳 IP 地址。它找到一个匹配项,表明它应该将数据包发送到路由器 2。
  • 路由器 1 在它的 ARP 表中查找面向路由器 2 的接口的下一跳 IP 地址(路由器 2)。它没有找到匹配项。
  • Router1 对数据包进行排队并发出一个 ARP 请求以寻找 router2
  • Router2 回复 ARP 请求。
  • 路由器 1 更新它的 ARP 表,使数据包出列并将其发送到路由器 2。
  • Router2 在它的路由表中查找 host2 的 IP 地址以确定接口和下一跳 IP 地址。它找到一个匹配项,表明 host2 位于本地子网上。所以下一跳IP地址与目的地址相同。
  • Router2 在它的 ARP 表中查找面向 host2 的接口的下一跳 IP 地址 (host2)。它没有找到匹配项。
  • Router2 对数据包进行排队并发出一个 ARP 请求以寻找 host2
  • host2 回复 ARP 请求。
  • Router2 更新它的 ARP 表,使数据包出队并将其发送到 host2。