tcp/ip学习之4: ARP协议格式分析

ARP的协议内容

我们可以从wireshark中分析ARP公告的协议数据。
image

选择...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的协议格式

image

字段 长度(字节) 说明
硬件类型 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 地址字段来判断是否需要响应。
posted @ 2025-07-26 16:54  cupid8505  阅读(67)  评论(0)    收藏  举报