前言

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缓存中。
  2. 数据结构

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

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

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

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

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

四、数据包结构

地址解析协议
偏移位八位组0134
八位组0~78~150~78~15
00硬件类型协议类型
432硬件地址长度协议地址长度操作
864发送方硬件地址
1296发送方硬件地址发送方协议地址
16128发送方协议地址目标硬件地址
20160目标硬件地址
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包主要有以下几个应用场景和作用:

  1. 宣告作用:当主机或系统启动时,或者进行网口/接口配置时,会发送免费ARP包来宣告其存在,确保网络中IP的唯一性,并检查是否有IP冲突。
  2. MAC地址变更通知:当主机更换网卡或MAC地址发生变化时,为了避免ARP表项老化前其他设备仍然使用旧的MAC地址,会发送免费ARP包来通知其他设备其MAC地址已经变更。
  3. 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 地址 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐