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.1到192.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应答。

相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
wuyk5554 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
QYRdata4 天前
年均增速24.2%!机器人数据湖未来六年增长动能强劲
网络·机器人·服务发现
CHENKONG_CK4 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
chshang19924 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
萧瑟余晖4 天前
Netty 核心组件与 Reactor 模型详解
网络·架构
ITxiaobing20234 天前
IP 定位服务选型指南:从准确率到工程落地的技术考察
linux·服务器·网络
wuyk5554 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
z落落4 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
云运维笔记4 天前
华为设备IP地址配置全攻略
运维·网络·计算机网络·华为