ARP报文格式
ARP报文格式
- 一、ARP请求报文
- 二、ARP回复报文
一、ARP请求报文
Who has 10.1.1.2? Te11 10.1.1.1:谁有10.1.1.2,告诉10.1.1.1
这个请求报文其实很明显了,主要分为三个部分看
- Frame 8 :抓包工具(如 Wireshark)给当前捕获到的第 8 个网络数据包分配的唯一序号,核心作用是 “定位和区分数据包”
- Ethernet Ⅱ:(以太网 Ⅱ 型帧)是 ARP 报文在数据链路层的封装载体 —— 简单说,ARP 报文本身不能直接在网络中传输,必须 “打包” 进一个以太网帧里,而这个以太网帧的格式就是Ethernet Ⅱ
- Address Resolution Protocol (request):直接点明了这个数据包的本质:它是一个 ARP 协议的 “请求报文”,核心目的是 “查询某个 IP 地址对应的 MAC 地址”
Frame 8:是抓包工具在这个给抓包过程中用来定位。
- Ethernet II:这是整个帧的 “格式标识”,表示当前数据包遵循 以太网 Ⅱ 型帧标准(最常用的以太网帧格式,区别于早期的 “802.3 帧”),是 ARP、IP 等上层协议在局域网传输的 “载体外壳”。
- Src: HuaweiTe_a8:48:d1 (54:89:98:a8:48:d1):即发送该以太网帧的设备物理地址(MAC 地址)
- Dst: Broadcast (ff:ff:ff:ff:ff:ff):即接收该以太网帧的设备物理地址(MAC 地址)
- Broadcast:抓包工具标注的 “广播” 含义 —— 表示这个帧会被局域网内所有设备接收(而非仅发给某个特定设备),常见于 ARP 请求、DHCP 发现等需要 “全网段通知” 的场景。
- (ff:ff:ff:ff:ff:ff):这是以太网的全局广播 MAC 地址(固定值),所有网卡收到目的 MAC 为该值的帧时,都会将其 “上交上层协议” 处理(不会丢弃),实现 “一次发送、全网接收”。
- 关于目的 MAC(Broadcast: ff:ff:ff:ff:ff:ff)的属性
- … …1. … … … … : LG bit: Locally administered address (this is NOT the factory default)
- LG bit = Local Group bit(局部管理位),是 MAC 地址第 2 字节的第 7 位(二进制)
- 此处值为 “1”(字段标注 “Locally administered”),表示该 MAC 地址是 “用户 / 管理员手动配置的局部地址”(非设备出厂时厂商烧录的默认地址);
- 而广播地址ff:ff:ff:ff:ff:ff是协议规定的 “特殊广播地址”,其 LG bit 固定为 1,不遵循常规的 “厂商默认地址” 规则
- … …1 … … … … = IG bit: Group address (multicast/broadcast):
- IG bit = Individual/Group bit(单播 / 组播位),是 MAC 地址第 2 字节的第 8 位(二进制)
- 此处值为 “1”(字段标注 “Group address”),表示该 MAC 地址是 “组播 / 广播地址”(对应 “发给一组设备”);
- 广播是 “组播的特殊形式”(组内包含所有设备),所以这里同时标注 “multicast/broadcast”,明确该帧是广播帧。
- 关于源 MAC(HuaweiTe_a8:48:d1)的属性
- … …0. … … … …= LG bit: Globally unique address (factory default)
- 源 MAC 的LG bit为 “0”(字段标注 “Globally unique”),表示该 MAC 地址是厂商出厂时烧录的 “全球唯一地址”(即 “工厂默认地址”)
- MAC 地址前 6 位(54:89:98)由国际组织(IEEE)分配给华为,后 6 位(a8:48:d1)由华为自行分配,确保全球所有设备的 MAC 地址不重复。
- … …0 … … … … = IG bit: Individual address (unicast)
- 源 MAC 的IG bit为 “0”(字段标注 “Individual address”),表示该 MAC 地址是单播地址(对应 “仅一个设备拥有该地址”):
- 源设备(华为设备)是 “唯一发送方”,所以用单播 MAC 标识,确保接收方知道 “回复时该发给谁”。
- … …1. … … … … : LG bit: Locally administered address (this is NOT the factory default)
- Type: ARP (0x0806):根据十六进制值0x0806自动识别的上层协议 —— 表示该帧内部装的是 “ARP 协议数据”(地址解析请求 / 响应)
- Padding:是为了满足以太网帧的 “最小长度要求” 而添加的 “无效数据”(全 0)。以太网协议规定:完整的以太网帧(头部 + 数据 + 校验和)最小长度必须是 64 字节(其中头部 14 字节、校验和 4 字节,因此 “数据区 + 填充” 至少需要 46 字节),这个帧封装的是 ARP 数据(ARP 数据区固定 28 字节),28 字节 < 46 字节,所以需要填充46-28=18字节的全0数据(你提供的0000…就是这些填充字节),填充字段的作用仅为 “凑够最小长度”,接收方会自动忽略这些全 0 数据,不影响上层协议(ARP)的解析
- Address Resolution Protocol (request):表示这是 “主动查询” 的报文(对应 ARP 操作码 = 1),而非 “回复查询” 的 ARP 响应报文(reply,操作码 = 2);作用是 “将 IP 地址(逻辑地址)映射为 MAC 地址(物理地址)
- Hardware type: Ethernet (1):Hardware type(硬件类型),定义 ARP 协议 “适用的物理网络类型”(即要解析的 “硬件地址” 属于哪种网络);Ethernet:抓包工具标注的网络类型,即 “以太网”(我们日常用的有线网、WiFi 都属于以太网范畴);(1):硬件类型的编码值(固定为 1),是 ARP 协议规定的 “以太网” 标识 —— 这意味着后续要解析的 “硬件地址” 是以太网 MAC 地址(6 字节),而非其他类型的硬件地址(如令牌环网地址)
- Protocol type: IPv4 (0x0800):Protocol type(协议类型),定义 ARP 协议 “要映射的上层协议地址类型”(即 “哪个协议的地址需要对应到硬件地址”);抓包工具标注的协议类型,即 “IPv4 协议”—— 表示当前要解析的是 “IPv4 地址” 与 MAC 地址的对应关系;
- Hardware size: 6:Hardware size(硬件地址长度),定义 “硬件地址(即 MAC 地址)的字节数”;以太网 MAC 地址固定为6 字节(12 位十六进制,如54:89:98:a8:48:d1),因此该字段值固定为 6—— 告诉接收方:“后续提到的 MAC 地址,每个都是 6 字节长”
- Protocol size: 4:Protocol size(协议地址长度),定义 “上层协议地址(即 IPv4 地址)的字节数”;IPv4 地址固定为4 字节(如10.1.1.1,每个十进制段对应 1 字节,4 段共 4 字节),因此该字段值固定为 4—— 告诉接收方:“后续提到的 IPv4 地址,每个都是 4 字节长”。
- Opcode: request (1):Opcode(操作码),定义 ARP 报文的 “具体操作类型”,是区分 “请求” 和 “响应” 的核心标识;request:表示当前是 “ARP 请求”,即 “主动询问目标 IP 的 MAC 地址”;(1):操作码的编码值(固定为 1),对应的 “ARP 响应” 编码为 2(Opcode=2)—— 接收方通过这个值判断:“这是一个需要我回应的查询,还是别人给我的回复”。
- Sender MAC address: HuaweiTe_a8:48:d1 (54:89:98:a8:48:d1):HuaweiTe_a8:48:d1:抓包工具根据 MAC 厂商代码(54:89:98是华为预留段)识别的设备品牌(华为设备);(54:89:98:a8:48:d1):完整的发送方 MAC 地址 —— 这是 “目标设备回复时的依据”:如果某设备发现 “自己是被查询的目标”,就会通过这个 MAC 地址单播回复(避免再广播)。
- Sender IP address: 10.1.1.1:10.1.1.1是发送方(华为设备)的 IPv4 地址 —— 作用是 “让目标设备知道‘谁在查我’”,后续回复时会在 “Target IP” 字段填写这个 IP,确保发送方识别 “这是对我查询的回应”
- Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff):Target MAC address(目标 MAC 地址),即 “ARP 查询要找的设备的物理地址”。因为是 “请求报文”,发送方(10.1.1.1)此时不知道目标设备的 MAC 地址,所以这里填写 “广播 MAC 地址(ff:ff:ff:ff:ff:ff)”—— 但注意:这并非 “真的要发给所有设备”,而是表示 “该地址未知,需要符合条件的设备主动认领”;后续 “ARP 响应报文” 中,这个字段会被替换为 “发送方的 MAC 地址(10.1.1.1 的 MAC:54:89:98:a8:48:d1)”,因为目标设备已明确 “要回复给谁”
- Target IP address: 10.1.1.2:Target IP address(目标 IP 地址),即 “ARP 查询的核心目标”—— 发送方想知道 “哪个设备的 MAC 地址”,就填哪个设备的 IP;10.1.1.2是发送方(10.1.1.1)要查询的 IPv4 地址 —— 局域网内所有设备收到这个 ARP 请求后,会对比 “自己的 IP 地址” 和 “Target IP”;如果某设备的 IP 是10.1.1.2,就会确认 “我是被查询的目标”,然后用自己的 MAC 地址生成 ARP 响应,回复给发送方(10.1.1.1);如果设备 IP 不是10.1.1.2,就会直接丢弃这个请求,不做处理。
二、ARP回复报文
回复报文和请求报文比较类似,这里指列出不同的点
- Ethernet Ⅱ的目的地址中,请求报文是1,回复报文是0,是因为G 位取值为0,表示该 MAC 是 “单播地址”(仅对应一个设备,只能被该设备接收);广播地址(IG=1)
- Opcode:reply(2):ARP 响应