ARP 报文和 IP 数据报的 区分与联系
核心关系可总结为 “ARP 为 IP 铺路,IP 依赖 ARP 完成链路层投递,二者通过链路层封装关联”,
ARP报文格式:

图1
IP数据报格式:

图2
一、协议层次与职责
| 协议 | 所属层次 | 核心职责 | 类比场景(寄快递) |
|---|---|---|---|
| ARP 报文 | 链路层辅助协议 | 解析 “IP 地址 ↔ MAC 地址” 映射 | 查 “收件人 IP 对应的家庭住址(MAC)” |
| IP 数据报 | 网络层协议 | 跨网络路由数据包(含 IP 地址) | 写 “快递单(源 / 目的 IP)+ 包裹内容” |
二、协作流程(发送 IP 数据报的完整过程)
当主机要发送 IP 数据报但未知对端 MAC 地址时,ARP 和 IP 数据报会按以下步骤配合:
1. 触发 ARP:IP 数据报 “需要 MAC 地址才能发送”
主机构造好 IP 数据报(填好源 IP、目的 IP、数据),准备通过链路层发送时,
发现目的 MAC 地址未知 → 暂停 IP 数据报发送,触发 ARP 流程。
2. 发送 ARP 请求:广播询问 “IP 对应的 MAC”
主机构造 ARP 请求报文(图1):
- 硬件类型 = 1(以太网)、协议类型 = 0x0800(IPv4)。
- 发送方硬件地址 = 自己的 MAC,发送方协议地址 = 自己的 IP。
- 目标硬件地址 = 全 0(未知),目标协议地址 = 对端的 IP。
将 ARP 请求报文 封装到以太网帧(目的 MAC 填广播地址 FF:FF:FF:FF:FF:FF),链路层广播发送。
3. 接收 ARP 响应:获取对端 MAC 地址
对端主机收到 ARP 请求后,发现 “目标协议地址是自己的 IP”,构造 ARP 响应报文(图1):
- 目标硬件地址 = 请求方的 MAC,目标协议地址 = 请求方的 IP。
- 发送方硬件地址 = 自己的 MAC,发送方协议地址 = 自己的 IP。
将 ARP 响应报文封装到以太网帧(目的 MAC 填请求方的 MAC),单播回复。
4. 封装并发送 IP 数据报:利用 ARP 结果完成投递
请求方主机收到 ARP 响应,缓存 “对端 IP ↔ MAC” 映射,然后将 之前暂停的 IP 数据报:
- 封装到以太网帧(目的 MAC 填刚拿到的对端 MAC)。
- 通过链路层发送,完成网络通信。
三、格式与封装的关联
1. ARP 报文的封装
ARP 报文本身是链路层的数据部分,
封装结构:![]()
2. IP 数据报的封装
IP 数据报是链路层的数据部分,同时可承载上层数据(如 TCP/UDP),
封装结构:![]()
3. 关键区别:以太网帧的 “类型字段”
- 当类型 = 0x0806 时,数据部分是 ARP 报文(处理地址解析)。
- 当类型 = 0x0800 时,数据部分是 IP 数据报(处理网络层路由)。
四、核心关系总结
- 依赖关系:IP 数据报发送时,若缺 MAC 地址,必须依赖 ARP 解析。
- 封装关系:二者都被封装到链路层帧,但通过 “以太网类型字段” 区分。
- 协作关系:ARP 解决 “IP→MAC” 的映射问题,为 IP 数据报的链路层投递铺路;IP 数据报负责网络层路由,承载上层数据跨网传输。
简单说:
ARP 是 IP 数据报的 “问路向导”,IP 数据报是网络通信的 “包裹”,二者配合让数据包准确送达
