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

相关推荐
swordbob38 分钟前
NIO 的 Channel 里有多个 BIO 吗?
linux·网络·nio
天天讯通42 分钟前
OKCC 呼叫中心安全性能全解析:技术防护与管理措施指南
大数据·开发语言·网络·人工智能·安全·语音识别
leo_yu_yty2 小时前
Go语言分布式计算(RPC入门)
网络·网络协议·rpc
2401_868534783 小时前
2025下半年网络规划设计师真题(选择题、案例分析)
运维·服务器·网络
TechWayfarer3 小时前
查IP归属地接入实战:保险理赔如何做动态风险监控与预警
网络·python·tcp/ip·安全·flask
Resurgence_zc4 小时前
openGauss 资源池化主备页面交互流程梳理
网络·交互·数据库开发
Dlrb12114 小时前
Linux网络编程-网络基础概念(IP, UDP协议)
linux·服务器·网络·网络基础·端口号·ip协议·udp协议
shushangyun_4 小时前
汽车服务行业B2B平台+AI解决方案哪家专业:2026年最新测评
java·运维·网络·数据库·人工智能·汽车
一RTOS一4 小时前
东土科技:智能制造系统高性能工业网络解决方案揭榜挂帅项目正式验收达标
网络·科技·制造
森G4 小时前
64、完善聊天室程序(TLV拓展)---------网络编程
网络·c++·tcp/ip