ARP报文格式详解
ARP报⽂格式详解
ARP 协议包(ARP 报⽂)主要分为 ARP 请求包和 ARP 响应包,本节将介绍 ARP 协议包的格式。
ARP 报⽂格式
ARP 协议是通过报⽂进⾏⼯作的,ARP 报⽂格式如图所⽰。
ARP 报⽂总长度为 28 字节,MAC 地址长度为 6 字节,IP 地址长度为 4 字节。
其中,每个字段的含义如下。
硬件类型:指明了发送⽅想知道的硬件接⼝类型,以太⽹的值为 1。
协议类型:表⽰要映射的协议地址类型。它的值为 0x0800,表⽰ IP 地址。
硬件地址长度和协议长度:分别指出硬件地址和协议的长度,以字节为单位。对于以太⽹上 IP 地址的ARP请求或应答来说,它们的值分别为 6 和 4。
操作类型:⽤来表⽰这个报⽂的类型,ARP 请求为 1,ARP 响应为 2,RARP 请求为 3,RARP 响应为 4。
发送⽅ MAC 地址:发送⽅设备的硬件地址。
发送⽅ IP 地址:发送⽅设备的 IP 地址。
⽬标 MAC 地址:接收⽅设备的硬件地址。
⽬标 IP 地址:接收⽅设备的IP地址。
ARP 数据包分为请求包和响应包,对应报⽂中的某些字段值也有所不同。
ARP 请求包报⽂的操作类型(op)字段的值为 request(1),⽬标 MAC 地址字段的值为 Target 00:00:00_00:00:00(00:00:00:00:00:00)(⼴播地址)。
ARP 响应包报⽂中操作类型(op)字段的值为 reply(2),⽬标 MAC 地址字段的值为⽬标主机的硬件地址。
构造 ARP 报⽂
ARP 报⽂默认由操作系统⾃动发送。⽤户可以⾃⼰构造 ARP 报⽂,向⽬标主机发送请求,从⽽获取⽬标主机的 MAC 地址。这时,可以使⽤ netwox ⼯具提供的编号为 33 的模块。
【⽰例】使⽤ netwox ⼯具构造 ARP 包。
1) 查看 netwox 所在主机默认的 ARP 包的相关信息,执⾏命令如下:
root@daxueba:~# netwox 33
输出信息如下:
Ethernet________________________________________________________.
| 50:E5:49:EB:46:8D->00:08:09:0A:0B:0C type:0x0806              |
|_______________________________________________________________|
ARP Request_____________________________________________________.
如何查看ip地址
| this address : 50:E5:49:EB:46:8D 0.0.0.0                      |
| asks        : 00:00:00:00:00:00 0.0.0.0                      |
|_______________________________________________________________|
上述输出信息中,Ethernet 部分为以太⽹信息。ARP Request 部分为 ARP 请求。this address 表⽰源地址信息。其中,50:E5:49:EB:46:8D 为源主机 MAC 地址;asks 为⽬标地址信息,这⾥为 ARP 请求包。由于还没有构造请求,因此地址为 0。
2) 构造 ARP 请求包,请求⽬标主机 192.168.12.102,执⾏命令如下:
root@kali:~# netwox 33 -i 192.168.12.102
输出信息如下:
Ethernet________________________________________________________.
| 50:E5:49:EB:46:8D->00:08:09:0A:0B:0C type:0x0806              |
|_______________________________________________________________|
ARP Request_____________________________________________________.
| this address : 50:E5:49:EB:46:8D 0.0.0.0                      |
| asks        : 00:00:00:00:00:00 192.168.12.102              |
|_______________________________________________________________|
此时,ARP Request 部分 asks 中的 00:00:00:00:00:00 为⽬标 MAC 地址,因为正在请求⽬标主机的 MAC 地址,所以为00:00:00:00:00:00。
192.168.12.102 为⽬标主机的IP地址,表⽰向该主机进⾏ ARP 请求。
3) 为了验证构造的 ARP 请求包,使⽤ Wireshark 进⾏抓包,如图所⽰。
其中,第⼀个数据包为构造的 ARP 请求包。在 Address Resolution Protocol(request) 部分中,Opcode 的值为 request(1),表⽰该数据包为 ARP 请求包;Target MAC address 的值为 00:00:00_00:00:00(00:00:00:00:00:00),表⽰此时没有获取⽬标 MAC 地址;Target IP address 的值192.168.12.102,表⽰请求主机的 IP 地址。
4) 如果请求的⽬标主机存在,将成功返回 ARP 响应数据包,如图所⽰。
其中,第 2 个数据包为 ARP 响应数据包。在 Address Resolution Protocol(reply) 部分中,Opcode 的值为 reply(2),表⽰该数据包为 ARP 响应包;Sender IP address 的值为 192.168.12.102,表⽰此时源主机为⽬标主机;Sender MAC address 的值为 Giga-Byt_17:cf:21(50:e5:49:17:cf:21),表⽰ 50:e5:49:17:cf:21 为⽬标主机 192.168.12.102 的 MAC 地址。
免费 ARP 包
免费 ARP(Gratuitous ARP)包是⼀种特殊的 ARP 请求,它并⾮期待得到 IP 对应的 MAC 地址,⽽是当主机启动的时候,发送⼀个Gratuitous ARP 请求,即请求⾃⼰的 IP 地址的 MAC 地址。
本节将介绍免费 ARP 包的结构、作⽤,以及如何发送免费 ARP 包。
免费 ARP 包的结构
免费 ARP 报⽂与普通 ARP 请求报⽂的区别在于报⽂中的⽬标 IP 地址。普通 ARP 报⽂中的⽬标 IP 地址是其他主机的 IP 地址;⽽免费ARP 的请求报⽂中,⽬标 IP 地址是⾃⼰的 IP 地址。
作⽤
免费 ARP 数据包有以下 3 个作⽤。
该类型报⽂起到⼀个宣告作⽤。它以⼴播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机⾃⼰的 IP 地址和 MAC 地址。
可⽤于检测 IP 地址冲突。当⼀台主机发送了免费 ARP 请求报⽂后,如果收到了 ARP 响应报⽂,则说明⽹络内已经存在使⽤该 IP 地址的主机。
可⽤于更新其他主机的 ARP 缓存表。如果该主机更换了⽹卡,⽽其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。
构造免费 ARP 包
⽤户可以使⽤ netwox ⼯具中编号为 33 的模块构造免费的 ARP 数据包。
构造免费的 ARP 数据包。
1) 构造免费的 ARP 数据包,设置源 IP 地址和⽬标 IP 地址为 192.168.59.132,执⾏命令如下:
root@daxueba:~# netwox 33 -g 192.168.59.132 -i 192.168.59.132
输出信息如下:
Ethernet________________________________________________________.
| 00:0C:29:AA:E0:27->00:08:09:0A:0B:0C type:0x0806              |
|_______________________________________________________________  |
ARP Request_____________________________________________________.
| this address : 00:0C:29:AA:E0:27 192.168.59.132                    |
| asks        : 00:00:00:00:00:00 192.168.59.132                          |
|_______________________________________________________________  |
2) 使⽤ Wireshark 进⾏抓包,验证构造的免费 ARP 数据包,如图所⽰。
其中,第⼀个数据包的 Info 列显⽰ Gratuitous ARP for 192.168.59.132(Request),表⽰该数据包为构造的免费 ARP 数据包。
在 Address Resolution Protocol(request/gratuitous ARP) 部分中,Sender IP address 和 Target IP address 的值为同⼀个 IP 地址 192.168.59.132。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。