基于 Wireshark 分析 ARP 协议

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 基于 Wireshark 分析 ARP 协议

前言


Wireshark是一个开源的网络协议分析工具,用于捕获和分析网络数据包。它可以在多个操作系统上运行,并提供了强大的功能和用户友好的界面。


通过Wireshark,用户可以捕获网络流量,并对其进行深入的分析。它支持多种协议的解析和显示,包括常见的网络协议如Ethernet、IP、TCP、UDP、HTTP等,以及更高级的协议如DNS、SSL/TLS等。


Wireshark的主要特点如下:


1. 数据包捕获:Wireshark可以实时捕获网络数据包,并以可视化的方式显示捕获的数据。用户可以选择特定的网络接口进行捕获,并应用过滤器来获取特定协议或目标的数据流量。


2. 数据包分析:Wireshark提供了强大的分析工具,可以对捕获的数据包进行深入的解析和分析。用户可以查看各个协议的字段和属性,并利用过滤器和统计功能来过滤和聚合数据。


3. 协议支持:Wireshark支持解析和显示多种网络协议,包括常见的协议和高级的应用层协议。用户可以根据需要选择关注的协议,并查看相关的数据包信息。


4. 插件支持:Wireshark支持插件扩展机制,用户可以根据需要安装和使用各种插件,以增强功能和定制分析过程。


Wireshark是一个强大的网络分析工具,广泛应用于网络管理、故障排查、安全审计等领域。通过使用Wireshark,用户可以深入了解网络流量和协议,分析和解决网络问题,并提高网络的性能和安全性。

一、环境准备

两台虚拟机,一台 Windows 10 安装了 WireShark,另一台随意(同一局域网内)

二、命令提示符基础

C:\Users\ydd33>arp /?
 
显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。
 
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]
 
  -a            通过询问当前协议数据,显示当前 ARP 项。
                如果指定 inet_addr,则只显示指定计算机
                的 IP 地址和物理地址。如果不止一个网络
                接口使用 ARP,则显示每个 ARP 表的项。
  -g            与 -a 相同。
  -v            在详细模式下显示当前 ARP 项。所有无效项
                和环回接口上的项都将显示。
  inet_addr     指定 Internet 地址。
  -N if_addr    显示 if_addr 指定的网络接口的 ARP 项。
  -d            删除 inet_addr 指定的主机。inet_addr 可
                以是通配符 *,以删除所有主机。
  -s            添加主机并且将 Internet 地址 inet_addr
                与物理地址 eth_addr 相关联。物理地址是用
                连字符分隔的 6 个十六进制字节。该项是永久的。
  eth_addr      指定物理地址。
  if_addr       如果存在,此项指定地址转换表应修改的接口
                的 Internet 地址。如果不存在,则使用第一
                个适用的接口。
示例:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09.... 添加静态项。
  > arp -a                                  .... 显示 ARP 表。
 
C:\Users\ydd33>

三、ARP 协议

ARP(Address Resolution Protocol)是一种用于将网络层地址(例如IP地址)解析为物理地址(例如MAC地址)的协议。它通常用于IPv4网络中,IPv6网络使用Neighbor Discovery Protocol(NDP)来执行类似的功能。

下面是ARP协议的详细解析:

  1. 工作原理

当主机A知道目标主机B的IP地址,但不知道其MAC地址时,它会发送一个ARP请求广播以获取目标主机B的MAC地址。

ARP请求广播包含了源主机A的IP地址和MAC地址,以及目标主机B的IP地址。

网络上的所有主机都会收到这个ARP请求广播,但只有目标主机B会响应。

目标主机B收到ARP请求后,会将自己的MAC地址作为响应发送给源主机A。

源主机A接收到ARP响应后,将目标主机B的IP地址和MAC地址的映射关系存储在其ARP缓存中。


数据结构


  • ARP协议定义了两种数据结构:ARP请求和ARP响应。
  • ARP请求中包含了源IP地址、源MAC地址、目标IP地址。
  • ARP响应中包含了目标IP地址、目标MAC地址、源IP地址、源MAC地址。


  1. 工作环境
  • ARP协议在局域网中使用,通常在同一个子网内才能正常工作。
  • 路由器通常不会转发ARP请求广播,因为它们只在子网间进行路由转发。


  • 主机在收到ARP响应后,会将目标主机的IP地址和MAC地址的映射关系存储在本地的ARP缓存中,以便以后快速查找。


  1. 缺点
  • ARP是一种不安全的协议,容易受到ARP欺骗(ARP Spoofing)攻击。
  • ARP请求和响应广播会增加网络流量,可能会导致网络拥堵。


总的来说,ARP是一种简单而有效的协议,用于解决IP地址到MAC地址的映射问题,但同时也存在一些安全和性能方面的考虑。

四、数据包结构

地址解析协议
偏移位 八位组 0 1 3 4
八位组 0~7 8~15 0~7 8~15
0 0 硬件类型 协议类型
4 32 硬件地址长度 协议地址长度 操作
8 64 发送方硬件地址
12 96 发送方硬件地址 发送方协议地址
16 128 发送方协议地址 目标硬件地址
20 160 目标硬件地址
24+ 192+ 目标协议地址


偏移位(Offset):指的是每个字段在数据包中的偏移量,以字节为单位。偏移位表示字段从数据包的起始位置开始的位置。

八位组:指的是字节(Byte)的位(Bit)组成,即8个二进制位。通常以十六进制表示。

硬件类型(Hardware Type):2个字节,表示硬件地址的类型,例如以太网

协议类型(Protocol Type):2个字节,表示协议地址的类型,例如IPv4

硬件地址长度(Hardware Address Length):1个字节,表示硬件地址的长度,以字节为单位

协议地址长度(Protocol Address Length):1个字节,表示协议地址的长度,以字节为单位

操作(Operation):2个字节,表示ARP数据包的类型,如请求或响应

发送方硬件地址(Sender Hardware Address):长度由硬件地址长度字段指定,表示发送ARP数据包的设备的MAC地址

发送方协议地址(Sender Protocol Address):长度由协议地址长度字段指定,表示发送ARP数据包的设备的IP地址

目标硬件地址(Target Hardware Address):长度由硬件地址长度字段指定,表示ARP请求或响应的目标设备的MAC地址

目标协议地址(Target Protocol Address):长度由协议地址长度字段指定,表示ARP请求或响应的目标设备的IP地址  

五、实验模拟

本地输入 arp -a 查看 arp 表

开启抓包后 Ping 另一台主机的 IP 地址

Wireshark 中输入 arp 过滤其他协议后点击一个分析

六、ARP 请求分析

可以发现这个数据包的目的地址是虚拟机的广播地址,源地址(发送方)是本机自己。这里咱们可以查看本机 MAC 地址确认


下方的地址解析协议(请求)也证明了这一点,操作为 1 对应请求包,目标 IP 地址为 192.168.134.129

七、ARP 响应分析

点击第二个包进行分析

可以发现目的地址变成了咱,源地址是另一台主机(查看另一台主机地址验证)


下方的操作为 2 对应响应,即咱已经获得了目标主机的 MAC 地址,现在再来查看 ARP 表

八、免费 ARP 分析

免费ARP包,也被称为Gratuitous ARP或无故ARP,是一种特殊的ARP请求。与一般的ARP请求不同,免费ARP包并非期待得到IP对应的MAC地址,而是设备使用自己的IP地址作为目的IP地址来发送ARP请求,即请求自己的IP地址对应的MAC地址。在发送免费ARP包时,Sender IP和Target IP字段是相同的。


免费ARP包主要有以下几个应用场景和作用:


宣告作用:当主机或系统启动时,或者进行网口/接口配置时,会发送免费ARP包来宣告其存在,确保网络中IP的唯一性,并检查是否有IP冲突。

MAC地址变更通知:当主机更换网卡或MAC地址发生变化时,为了避免ARP表项老化前其他设备仍然使用旧的MAC地址,会发送免费ARP包来通知其他设备其MAC地址已经变更。

VRRP备份组状态变化通知:在VRRP备份组中,当主备状态发生变化时,会发送免费ARP包来通知同一网段的其他设备其状态已经变化。

免费ARP包是广播发送的,其目标MAC地址是全F。当设备接收到免费ARP包后,如果发现地址存在冲突,会发送一个免费ARP包来告知其他设备地址冲突的情况;如果地址不冲突,则会根据接收到的ARP包中携带的IP、MAC等信息进行维护。


需要注意的是,发送免费ARP的主机或设备往往并不希望收到ARP应答,因为若是收到了,说明网络上有人使用相同的IP,这会造成IP冲突。因此,免费ARP包的主要作用是用于宣告和通知,而不是用于获取MAC地址信息。


免费 ARP 报文与普通 ARP 请求报文的区别在于报文中的目标 IP 地址。普通 ARP 报文中的目标 IP 地址是其他主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP 地址是自己的 IP 地址



相关文章
|
1月前
|
网络协议 安全 NoSQL
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
|
3月前
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
2月前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
37 0
|
4月前
|
网络协议
用户态协议栈04-定时arp-table的实现
用户态协议栈04-定时arp-table的实现
|
4月前
|
缓存 网络协议
用户态协议栈02-arp reply实现
用户态协议栈02-arp reply实现
|
4月前
|
网络协议 安全 网络安全
ARP协议详解及其工作原理
【8月更文挑战第31天】
261 0
|
4月前
|
存储 缓存 监控
|
4月前
|
存储 缓存 网络协议
MAC协议原理与ARP协议
总结一下,MAC协议是控制同一网络媒介上多个设备的数据访问的规范,而ARP是解决局域网络中的IP地址到MAC地址的转换问题,以确保IP包能在本地网络上传输到正确的设备。尽管这两种协议服务于网络通信中的不同层面,但它们都是网络正常操作的基本要素,保证了数据能从一个设备准确无误地传递到另一个设备。
68 0
|
5月前
|
存储 缓存 网络协议
ARP 地址解析协议
ARP 地址解析协议
94 0
|
5月前
|
人工智能 缓存 网络协议
网络层之三层交换、icmp协议、arp协议
网络层之三层交换、icmp协议、arp协议