地址解析协议,即 ARP,是根据 IP 地址获取物理地址的一个 TCP/IP 协议。主机发送信息时将包含目标 IP 地址的 ARP 请求广播到局域网络上的所有主机,并接收返回的消息,以此确定目标物理地址;收到返回消息后将该 IP 地址和物理地址存入本机 ARP 缓存中并保留一定时间,下次请求时直接查询 ARP 缓存以达到节约资源的目的。
原因分析
我们分析一下,图中的交换机属于二层设备,也就是说,它支持 MAC 地址,但不能识别 IP 地址。而发送的 Ping 包,仅包含 IP 地址,下图为 PC0 去 Ping 通 PC3 时数据包内容:
查询效果
当数据包到交换机上时,交换机不能识别数据包中 IP 地址,那这个数据发给谁?事实上这个数据包就是 ARP 请求包,交换机会把这个数据包,分别转给连接交换机的其它设备,当数据包被接收后,终端设备会判断自身的 IP 是否和请求包中数据相符。如果相同,则会回复;如果不同,则会丢弃。PC0 在接收到返回的请求包后,会在包里提取出 PC1 的 MAC 地址,并在本地做 ARP 映射,下次再发送数据时,直接附上 MAC 地址而不需要 IP 地址:
流程扩展
发送端在给接收端发送数据包时,会先查看本地的 ARP 列表。
如果列表中有接收端的 MAC 地址则直接调用。
如果列表中没有接收端的 MAC 地址,则会优先发送一个 ARP 请求包,询问接收端 MAC 地址。
请求包经交换设备转发,因为交换机为二层设备「OSI 第二层」所以无法识别包含在 ARP 请求包中的 IP 地址,而 ARP 请求包中的目标 MAC 地址无效,故会将此请求包分发给除发送端外的所有设备。
其它设备收到该请求包之后,会判断该请求包是否是发给自身。
如果不是,则会直接丢弃。
如果是发给自身的,则将本身的 MAC 地址写入该请求包,并返回发送端。
发送端收到包含接收端 MAC 地址的请求包后,会将该 MAC 地址保存到 ARP 列表,以备下次通信使用。
条评论