介绍地址解析协议 ARP 之前我们必须要先了解一下 为什么要使用 ARP,这就要先知道 IP 地址和硬件地址的关系。👇
IP 地址与硬件地址
💡 我们首先要明确 IP 地址与硬件地址是不同的地址。
- ✅ 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
- ✅ IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。
从图中可以看到 IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部。
下面我们步入正题,来看一下 地址解析协议 ARP 👇
地址解析协议 ARP
我们经常会遇到这样的问题:已经知道了一个机器(主机或路由器)的 IP 地址,需要找出其相应的硬件地址。地址解析协议 ARP
就是用来解决这样的问题的。
地址解析协议 ARP 要点
- ✅ 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
- ✅ 每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
比如:
TTL (Time To Live):地址映射有效时间 。
🔴 当主机 A 要向本局域网上的某台主机 B 发送 IP 数据报时:
- 1️⃣ 就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 2️⃣ 如果有,就在 ARP 高速缓存中查出其对应的硬件地址,再把这个硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址。
- 3️⃣ 如果没有,主机 A 就自动运行 ARP ,然后按 以下步骤 👇 找出主机 B 的硬件地址。
- 🕛 ARP 进程在本局域网上广播发送一个 ARP 请求分组;
- 🕧 在本局域网上的所有主机上运行的 ARP 进程都可以收到此 ARP 请求分组。
- 🕐 主机 B 的 IP 地址与 ARP 请求分组中要查询的 IP 地址一致,就收下这个 ARP 请求分组,并向主机 A 发送 ARP 响应分组同时在这个 ARP 响应分组中写入自己的硬件地址。
- 🕜 主机 A 收到主机 B 的 ARP 响应分组后,就在其
ARP高速缓存
中写入主机 B 的 IP 地址到硬件地址的映射。
其实就是 请求 和 响应 。
🚀 值得一提的是,如果将上面的主机替换为路由器也同样适用,我们只需将请求发给路由器,剩下的转发工作交给路由器来完成。