本文主要目的是利用Wireshark抓取arp数据包,来验证arp网络协议。arp协议主要完成ip地址到mac地址的映射,为方便获取计算机的mac地址,使用主机上安装虚拟机来搭建验证平台。虚拟机使用Ubuntu系统,并且安装在VirtualBox上,Wireshark安装在主机上,抓取主机和虚拟机之间的数据报文。

1、抓包之前的系统配置:

在windows命令行端口,采用ipconfig命令查看当前机器的网卡的ip地址;其中的ip地址为192.168.3.7,另外系统还配置有默认的网关:

图1 windows主机的ip地址

再次输入arp –a命令,可以看到当前接口对应的arp缓存表,可以发现其中并没有关于下面虚拟机的映射条目。条目的类型有动态和静态方之分:动态表示如果主机一段时间内不与此ip通信,将删除对应的条目;而静态arp缓存条目则是永久性的。

图2 Windows主机的arp缓存表

开启virtualbox中的ubuntu虚拟机,并且采用网桥方式开启链接,采用ifconfig命令查看当前虚拟机的ip地址为:192.168.3.73。在ubuntu虚拟机中调用命令arp –a可以看到如下的输出:当前ubuntu主机的ARP缓存表只有一条项目,并不是windows主机的mac地址,所以需要使用arp数据请求报文获得windows主机的mac地址。

图3 Ubuntu虚拟机的mac地址

这是我的Wireshark的配置页:

图4 Wireshark的配置

主要的设置:1.ip地址选择windows主机的ip地址;2.capture Filter填写arp协议,只过滤捕捉arp协议的数据报文;3.抓取的数据报文存储到arp.pcapng文件中。配置完后,就可以点击start开始,

2、抓包:

默认情况,主机不会主动发起arp协议,我们需要在windows命令行模式下,运行ping命令来触发arp协议:ping 192.168.3.73。

图5 ping命令触发arp数据报文

完成ping操作后,我们再去看wireshark捕捉到的文件(同时在ubuntu虚拟机和windows主机下分解运行arp –a命令后,可以发现分别添加对方的ip-mac的映射条目):

图6 捕捉到arp数据报文

我们注意上图6中获得192.169.3.73的mac地址的请求数据包;

图7 arp数据报文

双击以后,可以看到如上的信息,他是一个arp的请求包(request),广播来获得关于ip地址192.168.3.73的MAC地址。整个数据包的长度为:42字节其中的字节的信息依次是,如下的信息:

图8 来自主机的arp请求报文

然后,我们还可以看到关于上述的request的reply的数据包,该数据包的发送者就是192.168.3.73(我们的ubuntu虚拟机)。

图9 来自虚拟机的arp应答报文