前言
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协议的详细解析:
- 工作原理:
当主机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地址。
- 工作环境:
- ARP协议在局域网中使用,通常在同一个子网内才能正常工作。
- 路由器通常不会转发ARP请求广播,因为它们只在子网间进行路由转发。
- 主机在收到ARP响应后,会将目标主机的IP地址和MAC地址的映射关系存储在本地的ARP缓存中,以便以后快速查找。
- 缺点:
- 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 地址