ARP协议详解及其Wireshark抓包测试

文章目录

简介

ARP,即Address Resolution Protocol,地址解析协议,可以将IP地址转换为MAC地址。在OSI模型中,MAC地址在第二层(数据链路),IP地址则在第三层(网络),二者之间无法直接通信,ARP就是沟通二者之间的桥梁。

Windows命令行中提供了arp命令,可用于查询本机ARP缓存中IP和MAC地址的对应关系,示例如下

bash 复制代码
C:\Users\wx>arp -a

接口: 192.168.3.170 --- 0x10
  Internet 地址         物理地址              类型
  192.168.3.1           8c-de-f9-7f-f0-63     动态
  192.168.3.255         ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

其中,第一条192.168.3.1 → \to →8c-de-f9-7f-f0-63是默认网关,就是说,当本机发送数据后,若发现目标IP并不在本地子网,则交给该IP,这这个是路由器的功能。在网上找一个MAC地址查询工具,输入8c-de-f9-7f-f0-63,可以查到设备厂商为小米,这正是我们用的红米路由器,在浏览器中输入192.168.3.1即可进其设置界面。

后面的静态地址与其他协议有关,此处略去不讲。

发现局域网中其他设备

本地缓存的ARP对应表并不是一层不变的,只要触发ARP请求,就会产生一组对应地址。根据这个原理,可以搜索局域网中所有的网络设备,代码如下

复制代码
for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.3.%i
arp -a

其原理是,首先,对192.168.3.1192.168.3.254之间的所有IP进行扫描,在扫描结束后,在查看本机ARP缓存地址列表,就可以找到局域网中的设备。当然,如果局域网中的设备多于254个,那么需要根据子网掩码,扫描更多的IP。

Wireshark抓包测试

打开Wireshark,选择一个网络(我这里是WLAN2),在过滤器输入框中输入arp,然后回车,wireshark就会自动过滤出ARP协议的数据。

由于ARP协议作用于IP到MAC转换的过程,所以想要获取ARP报文,只需连接一个之前未曾连接过的IP即可。

这里面的问题是,如果这个IP是某个外部的网络,计算机并不会直接与之相连,而是通过路由器这个桥梁,从而实际连接到的是路由器的IP,对应的自然也是路由器的物理地址,而这个地址早已写入了电脑的缓存表里,不会重新产生ARP报文。

所以具体操作方法为,先在当前网络中添加一个IP地址,并马上删除,然后再去ping这个IP地址,从而产生ARP协议报文。测试后,将这个IP删除,并设为自动IP以恢复网络。

bash 复制代码
# 测试过程会断网
>netsh interface ip add address "WLAN 2" 192.168.3.123 255.255.255.0
>arp -d 192.168.3.123
>ping 192.168.3.123
> netsh interface ip delete address "WLAN 2" 192.168.3.123
> netsh interface ip set address "WLAN 2" dhcp

最终在Wireshark中截获的数据如下。

其右侧数据含义如下

6c 1f f7 78 87 69 以太网目标MAC地址
8c de f9 7f f0 63 以太网源MAC地址
08 06 ARP协议标识
00 01 硬件类型,0001是以太网
08 00 协议类型,
06 MAC长度
04 IP长度
00 01 操作类型,0001为ARP请求
8c de f9 7f f0 63 发送MAC地址
c0 a8 03 01 发送IP
00 00 00 00 00 00 ARP目标MAC地址,没找到
c0 a8 03 aa 目标IP

协议总结

Wireshark截获的ARP报文,可以分为两层,外层是其在以太网中的封装,格式如下

字节长度 6 6 6 28 18 4
说明 目标地址 源地址 帧类型 报文 PAD CRC
默认值 - - 0x0806

报文内容如下

字节长度 2 2 1 1 2 6 4 6 4
说明 硬件类型 协议类型 MAC长度 IP长度 发送者MAC 发送者IP 目标MAC 目标IP
默认值 0x0001 0x0800 0x06 0x04

其中,操作类型为2时表示ARP应答。

相关推荐
暖馒6 小时前
Modbus应用层协议的深度剖析
网络·网络协议·c#·wpf·智能硬件
可可南木7 小时前
3070文件格式--15--bootptab文件
功能测试·测试工具·pcb工艺
yunfuuwqi7 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
迎仔7 小时前
C-算力中心网络隔离实施方法:怎么搞?
运维·网络
代码游侠7 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
枷锁—sha8 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Zach_yuan9 小时前
深入浅出 JSONCpp
linux·服务器·网络·c++
迎仔10 小时前
B-算力中心网络隔离的必要性:为什么必须隔离?
网络
野指针YZZ11 小时前
一键配置RK3588网络与SSH远程连接
网络·ssh·rk3588
迎仔11 小时前
10-网络安全监控与事件响应:数字世界的智能监控与应急系统
网络·安全·web安全