答案1
地址解析协议
ARP(地址解析协议)用于识别本地网络上(即:同一子网)的某台主机的硬件地址。
如果A
(IP )想要与另一个IP 地址为 的10.0.1.2/24
主机( )进行通信,并且该主机不在缓存中,则会发生以下情况:C
10.0.1.5
A
广播“ARP 请求“- 使用广播 MAC 地址 (
ff:ff:ff:ff:ff:ff
) - 请求任何具有 IP 地址的主机
10.0.1.5
响应
- 使用广播 MAC 地址 (
- 如果远程主机(
C
)收到此数据包,则它会使用正确的 MAC 地址进行响应。
ARP 也可以主动发生,主机“宣布“试图减少查找产生的延迟,但这很容易导致欺骗和中毒。
路由
路由允许主机访问“当地的“网络。例如,主机B
的 IP 地址为10.0.5.2
,该地址位于主机A
的10.0.1.0/24
子网之外。
为了将数据包发送到主机B
,主机A
必须通过路由器(又称“网关“)。如果没有给出默认路由(或者没有配置匹配的特定路由),那么主机将无法访问。
如果一条路线做存在,则将A
:
- 使用 ARP 查找路由器的 (
R1
) MAC 地址 - 发送一个数据包到
B
的 IP (10.0.5.2
),但使用路由器R1
的 MAC 地址 - 路由器将执行相同的查找,将数据包发送到(或)
R1
的 MAC 地址,但使用 的 IP 地址。R3
R2
B
- 这种情况持续到数据包到达
B
,或者路由器声明无法路由到给定主机。
如果这样工作,那么前一个节点如何知道下一个节点的 MAC 地址?
每个步骤都使用 ARP 来获取下一个主机的 MAC 地址。R1
想要通过 转发数据包R3
,因此它使用 ARP 来获取 的R3
MAC 地址。
答案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 地址。因此,您需要适当的路由表才能使所有这些正常工作。