大多数计算机程序/应用程序使用逻辑地址(IP 地址)来发送/接收消息,但是实际通信发生在物理地址(MAC 地址)上,即来自 OSI 模型的第 2 层。因此,我们的任务是获取有助于与其他设备通信的目标 MAC 地址。这就是 ARP 出现的地方,它的功能是将 IP 地址转换为物理地址。
首字母缩略词 ARP 代表地址解析协议,它是 OSI 模型中网络层最重要的协议之一。
注意: ARP 从已知 IP 地址查找主机的硬件地址,也称为媒体访问控制 (MAC) 地址。
让我们看看 ARP 是如何工作的。
想象一下,一个设备想要通过互联网与另一个设备进行通信。 ARP有什么作用?它是否向源网络的所有设备广播了一个数据包。
网络设备从称为帧的协议数据单元 (PDU) 中剥离数据链路层的标头,并将数据包传输到网络层(OSI 的第 3 层),在那里数据包的网络 ID 与目标 IP 的验证数据包的网络 ID,如果相等,则使用目标的 MAC 地址响应源,否则数据包将到达网络网关并将数据包广播到与之连接的设备并验证其网络 ID
上述过程一直持续到路径中的倒数第二个网络设备到达其得到验证的目的地,而 ARP 又以目的地 MAC 地址进行响应。
与 ARP 相关的重要术语是:
- ARP缓存:解析MAC地址后,ARP将其发送到源,并存储在表中以备将来参考。后续通信可以使用表中的MAC地址
- ARP Cache Timeout:表示ARP缓存中MAC地址可以驻留的时间
- ARP 请求:这只不过是通过网络广播数据包来验证我们是否遇到了目标 MAC 地址。
- 发件人的物理地址。
- 发件人的 IP 地址。
- 接收方的物理地址为FF:FF:FF:FF:FF:FF 或1。
- 接收方的IP地址
- ARP 响应/回复:它是源从目标接收到的 MAC 地址响应,有助于数据的进一步通信。
- CASE-1:发送方是一台主机,想要向同一网络上的另一台主机发送数据包。
- 使用 ARP 查找另一台主机的物理地址
- CASE-2:发送方是一台主机,想要将数据包发送到另一个网络上的另一台主机。
- 发件人查看其路由表。
- 查找此目的地的下一跳(路由器)的 IP 地址。
- 使用ARP查找路由器的物理地址
- CASE-3:发送者是一个路由器并收到了一个发往另一个网络上的主机的数据报。
- 路由器检查其路由表。
- 查找下一个路由器的 IP 地址。
- 使用 ARP 查找下一个路由器的物理地址。
- CASE-4:发送方是一个路由器,它收到了一个发往同一网络中主机的数据报。
- 使用 ARP 查找此主机的物理地址。
注意: ARP 请求是广播,ARP 响应是单播。
测试自己 :
用交叉电缆连接两台PC,假设A 和B。现在您可以通过键入以下命令来查看 ARP 的工作情况:
1. A > arp -a
表中将没有条目,因为它们从未相互通信。
2. A > ping 192.168.1.2
IP address of destination is 192.168.1.2
Reply comes from destination but one packet is lost because of ARP processing.
现在,通过键入命令可以看到 ARP 表的条目。
这是 ARP 表的样子: