一、ARP
ARP,即地址解析协议(Address Resolution Protocol),是用于在局域网(LAN)中将网络层(IP 层)的地址(如IPv4地址)转换为数据链路层(MAC层)的硬件地址(MAC地址)。简单来说,ARP的主要作用是在IP地址和物理地址之间建立映射关系。
当一台设备需要与同一网络中的另一台设备通信时,它首先知道对方的IP地址,但为了实际发送数据包,还需要知道对方的MAC地址。这时就会用到ARP协议来查询目标IP地址对应的MAC地址。
- ARP请求:源设备广播一个ARP请求,询问谁拥有特定的IP地址。
- ARP响应:拥有该IP地址的目标设备以单播形式回复其MAC地址给源设备。
- ARP缓存:为了避免每次都进行ARP查询,设备会缓存最近的IP-MAC映射一段时间。
ARP 数据包长度 = 28 字节
二、抓取包
若本机 ARP 缓存表中有对应,ip 和 mac 映射关系,则进行 ping 时,则不会再发送 arp 请求,故为了效果,需要删除 arp 缓存。
查看 ARP 缓存表
arp -a
删除 ARP 缓存
arp -d 172.17.0.2
ping ip,并发送数据 6162 (ab)
ping -c 3 -p 6162 172.17.0.2
tcpdump 在服务器上抓包
root@fdc276a87cec:~# tcpdump -n -v -X
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:48:11.656415 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.1, length 28
0x0000: 0001 0800 0604 0001 6eaf 59d5 3b59 ac11 ........n.Y.;Y..
0x0010: 0001 0000 0000 0000 ac11 0002 ............
11:48:11.656425 ARP, Ethernet (len 6), IPv4 (len 4), Reply 172.17.0.2 is-at d6:84:7e:c7:af:a1, length 28
0x0000: 0001 0800 0604 0002 d684 7ec7 afa1 ac11 ..........~.....
0x0010: 0002 6eaf 59d5 3b59 ac11 0001 ..n.Y.;Y....
三、解析包
ARP 请求解析:
字段 | 值 | 含义 | |
---|---|---|---|
硬件类型 htype | 0001 | 表示以太网(Ethernet) | |
协议类型 ptype | 0800 | 表示 IPv4 协议 | |
硬件地址长度 hlen | 06 | MAC 地址长度为 6 字节 | |
协议地址长度 | plen | 04 | IPv4 地址长度为 4 字节 |
操作类型 opcode | 0001 | 表示这是 ARP 请求(Request) | |
发送方 MAC 地址 | 6e:af:59:d5:3b:59 | 发起请求的主机 MAC | |
发送方 IP 地址 | ac 11 00 01 | 172.17.0.1发起请求的主机 IP | |
目标 MAC 地址 | 00 00 00 00 00 00 | 未知,ARP 请求中不填 | |
目标 IP 地址 | ac 11 00 02 | 172.17.0.2 要查询的 IP |
ARP 响应解析
字段 | 值 | 含义 | |
---|---|---|---|
硬件类型 htype | 0001 | 以太网 | |
协议类型 ptype | 0800 | IPv4 | |
硬件地址长度 hlen | 06 | MAC 地址长度 | |
协议地址长度 plen | 04 | IPv4 地址长度 | |
操作类型 opcode | 0002 | 表示这是 ARP 响应(Reply) | |
发送方 MAC 地址 | d6:84:7e:c7:af:a1 | 响应方 MAC 地址 | |
发送方 IP 地址 | ac 11 00 02 | 172.17.0.2 | 响应方 IP 地址 |
目标 MAC 地址 | 6e:af:59:d5:3b:59 | 请求方 MAC | |
目标 IP 地址 | ac 11 00 01 | 172.17.0.1 | 请求方 IP |