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应答。

相关推荐
24zhgjx-fuhao8 小时前
HTTP的配置
网络·网络协议·http
安卓开发者9 小时前
第14讲:HTTP网络请求 - Dio库的使用与封装
网络·网络协议·http
报错小能手9 小时前
计算机网络自顶向下方法33——网络层 路由器工作原理 输入端口处理和基于目的地转发 交换 输出端口处理
网络·计算机网络·智能路由器
scd020810 小时前
11.10dns作业
运维·服务器·网络
Yurko1311 小时前
【计网】基于三层交换机和 RIP 协议的局域网组建
网络·学习·计算机网络·智能路由器
无序的浪11 小时前
网络初识~
网络
wzlsunice8812 小时前
用vir-manager创建kvm虚拟机(创建网桥和配置网络等)
运维·网络
思茂信息12 小时前
CST License(Flexnet)设置与问题处理方法
服务器·网络·单片机·3d·php·1024程序员节·cst
m0_7381207212 小时前
内网横向靶场——记录一次横向渗透(三)
开发语言·网络·安全·web安全·网络安全·php
Jerry25050913 小时前
微信小程序必要要安装SSL证书吗?小程序SSL详解
网络·网络协议·网络安全·微信小程序·小程序·https·ssl