应用背景
在以太网络中,由于数据在经过 OSI 七层网络时,数据经过数据链路层时,需要将数据包封装成数据帧进行转发,但在封装数据帧时,需要目标 MAC 地址,以确定目标主机在目标网络中的具体位置,由此产生 ARP 地址解析协议
作用范围
作用:根据目标 IP 地址,获取目标 MAC 地址
影响范围:二层同一局域网内。虽然是作用于二层网络,但实际为三层协议。我们知道,在网络中收到数据,本层如果无法处理,会交由上层协议进行处理
工作原理
1. 文字概述
目标主机会向局域网内发送一个 ARP recode: request (1)的广播请求包,询问目标主机的 MAC 地址。数据帧在到达二层交换机发现是一个广播数据帧,会在网络中泛洪,同一网络中所有终端设备都会收到这个 ARP 广播帧,终端收到这个帧后,会比对 IP 地址,同时将该 IP 地址对应的 MAC 地址放到自身 ARP 缓存表中,以便后续建立数据,如果发现是广播数据帧请求的是自身,同时会回复一个 opcode: reply(2) 的单播数据帧。如果不是自身,会直接丢弃该数据。
2. 流程概述
- 请求终端:发送 ARP 请求包(源 MAC:自身 MAC 地址,目的 ff:ff:ff:ff:ff ,源 IP:自身IP,目的 IP:目标主机 IP)
- 目标终端:学习 MAC 地址,比对 IP 地址,发送 ARP 响应包(源 MAC:自身 MAC 地址,目的 MAC:请求主机 NAC地址,源 IP:自身 IP,目的 IP:目标主机 IP)
- 其他终端:学习 MAC 地址,比对 IP 地址,丢弃数据
报文格式
字段详情
网络拓扑
这里我简单搭建了一个网络,用 PC1 来 ping 网关
数据抓包
这里解释一下,字段详情中的类型 0x0806 是数据帧的类型格式,也就是第一张图中的类型,第二张图片中的 0x0800 表明这个数据包是 IP 数据包。数据在交由上层协议时,会根据这个类型来判断交由什么协议处理
1. ARP 请求包
2. ARP 响应包
总结
ARP 协议,基于以太网产生的一个地址解析协议,通过建立 IP地址 与 物理地址 映射表来进行数据转发。在收到一个 ARP 请求包时,会将数据以广播的形式发送出去,目标在收到请求时主动回应,以此建立数据连接。由于是以以太网为基础产生的协议,所以在其他网络(PPP、帧中继等)网络中没有该协议