tcp/ip学习之4: ARP协议格式分析
ARP的协议内容
我们可以从wireshark中分析ARP公告的协议数据。

选择...as Hex Dump就可以将数据获得:
0000 ff ff ff ff ff ff 02 00 00 30 00 4a 08 06 00 01
0010 08 00 06 04 00 01 02 00 00 30 00 4a c0 a8 01 02
0020 00 00 00 00 00 00 c0 a8 01 02 00 00 00 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00
那这段数据是什么含义呢? 接下来我们分析ARP的协议格式。
ARP的协议格式

| 字段 | 长度(字节) | 说明 |
|---|---|---|
| 硬件类型 | 2 | 表示硬件类型,以太网为 0x0001 |
| 协议类型 | 2 | 表示协议类型,IPv4 为 0x0800 |
| 硬件地址长度 | 1 | 硬件地址(MAC 地址)的长度,以太网为 6 字节 |
| 协议地址长度 | 1 | 协议地址(IP 地址)的长度,IPv4 为 4 字节 |
| 操作码 | 2 | 操作类型,ARP 请求为 0x0001,ARP 响应为 0x0002 |
| 发送方硬件地址 | 6 | 发送方的 MAC 地址 |
| 发送方协议地址 | 4 | 发送方的 IP 地址 |
| 目标硬件地址 | 6 | 目标设备的 MAC 地址(ARP 请求为全零) |
| 目标协议地址 | 4 | 目标设备的 IP 地址 |
ARP协议内容分析
根据上面格式,可以很容易的将信息分析,详细如下:
1. 以太网帧头部(Ethernet Frame Header)
(1)目的MAC地址(Destination MAC Address)
0000 ff ff ff ff ff ff
- 含义:这是以太网帧的目的MAC地址。
- 值:
ff:ff:ff:ff:ff:ff - 说明:这是一个广播地址,表示该帧将被发送到本地网络中的所有设备。这符合ARP请求的广播特性。
(2)源MAC地址(Source MAC Address)
0000 02 00 00 30 00 4a
- 含义:这是以太网帧的源MAC地址。
- 值:
02:00:00:30:00:4a - 说明:这是发送ARP请求的设备的MAC地址。
(3)以太网类型(Ethernet Type)
0000 08 06
- 含义:这是以太网帧的类型字段,用于指示上层协议。
- 值:
0x0806 - 说明:
0x0806是ARP协议的以太网类型值,表示这是一个ARP数据包。
2. ARP报文(ARP Packet)
(1)硬件类型(Hardware Type)
0010 00 01
- 含义:表示ARP请求或响应所使用的硬件类型。
- 值:
0x0001 - 说明:
0x0001表示以太网(Ethernet)。
(2)协议类型(Protocol Type)
0010 08 00
- 含义:表示ARP请求或响应所使用的协议类型。
- 值:
0x0800 - 说明:
0x0800表示IPv4协议。
(3)硬件地址长度(Hardware Address Length)
0010 06
- 含义:表示硬件地址(MAC地址)的长度,单位是字节。
- 值:
0x06 - 说明:
0x06表示MAC地址长度为6字节。
(4)协议地址长度(Protocol Address Length)
0010 04
- 含义:表示协议地址(IP地址)的长度,单位是字节。
- 值:
0x04 - 说明:
0x04表示IP地址长度为4字节。
(5)操作码(Opcode)
0010 00 01
- 含义:表示ARP报文的类型。
- 值:
0x0001 - 说明:
0x0001表示这是一个ARP请求(ARP Request)。如果是0x0002,则表示ARP响应(ARP Reply)。
(6)发送方硬件地址(Sender Hardware Address)
0010 02 00 00 30 00 4a
- 含义:发送ARP请求的设备的MAC地址。
- 值:
02:00:00:30:00:4a - 说明:这是发送ARP请求的设备的MAC地址。
(7)发送方协议地址(Sender Protocol Address)
0010 c0 a8 01 02
- 含义:发送ARP请求的设备的IP地址。
- 值:
192.168.1.2 - 说明:这是发送ARP请求的设备的IP地址。
(8)目标硬件地址(Target Hardware Address)
0020 00 00 00 00 00 00
- 含义:目标设备的MAC地址。
- 值:
00:00:00:00:00:00 - 说明:在ARP请求中,目标硬件地址通常为全零,表示请求未知的MAC地址。
(9)目标协议地址(Target Protocol Address)
0020 c0 a8 01 02
- 含义:目标设备的IP地址。
- 值:
192.168.1.2 - 说明:这是发送方想要解析的目标IP地址。
从上面的数据容易看出来,发送方和目标方(即协议地址)都是相同的,我们可以这样为认为,ARP公告就是设备自己根据IP来请求自己的MAC地址。 但是设备自己都清楚这些信息了,所以就没有必要回复了。即可认为ARP公告就是一个非常特别的ARP。
3. ARP公告目标MAC
在 ARP请求协议中,目标 MAC 地址为 00:00:00:00:00:00 是一个非常重要的设计特性,它反映了 ARP 协议的工作原理和目的。以下是详细解释:
(1). ARP 请求的目的
ARP(地址解析协议)的主要功能是将一个已知的 IP 地址解析为对应的 MAC 地址。具体来说:
- 发送方:知道目标设备的 IP 地址,但不知道目标设备的 MAC 地址。
- 目标:通过广播 ARP 请求,询问网络中的其他设备:“谁拥有这个 IP 地址?请告诉我你的 MAC 地址。”
(2). 为什么目标 MAC 地址是 00:00:00:00:00:00
在 ARP 请求中,目标 MAC 地址被设置为 00:00:00:00:00:00 的原因如下:
(2.1)未知的 MAC 地址
- 背景:发送 ARP 请求的设备(发送方)在发送请求时,并不知道目标设备的 MAC 地址。因为如果它已经知道目标设备的 MAC 地址,就无需发送 ARP 请求了。
- 目的:通过广播 ARP 请求,让网络中的所有设备都能收到这个请求,从而找到拥有目标 IP 地址的设备。
(2.2)广播机制
- 广播帧:ARP 请求是一个以太网广播帧,其目的 MAC 地址是
ff:ff:ff:ff:ff:ff(广播地址)。这意味着该帧会被发送到本地网络中的所有设备。 - 目标 MAC 地址字段:在 ARP 请求报文中,目标 MAC 地址字段被设置为
00:00:00:00:00:00,表示“未知”。这是一个明确的信号,告诉接收方:“我正在寻找这个 IP 地址对应的 MAC 地址。”
(2.3)协议设计
- 协议规范:根据 ARP 协议的规范(RFC 826),在 ARP 请求中,目标 MAC 地址字段被设置为全零(
00:00:00:00:00:00)是一个标准行为。 - 逻辑一致性:这种设计确保了 ARP 请求的逻辑一致性。发送方明确表示它不知道目标设备的 MAC 地址,而接收方可以根据目标 IP 地址字段来判断是否需要响应。

浙公网安备 33010602011771号