6.3.4 利用Wireshark进行协议分析(四)----ARP协议解析
我们知道对于单跳网络内部的数据传输,使用的是网络接口层的技术,比如以太网技术,以太网将报文数据封装在数据帧中进行传送,帧头指明发送方网卡的地址和接收方网卡的地址。(5.2.6 地址解析协议ARP)为了获得接收方的MAC地址,就需要使用ARP协议,ARP协议负责将IP地址转换成硬件地址或MAC地址,一般情况下主机都会在本地设置ARP高速缓存,存放已经解析好的IP地址和响应的硬件地址,在封装数据帧时首先是根据下一跳协议的地址来查看本地ARP的高速缓存,如果能够找到对应的硬件地址直接将地址填入到帧头,如果没有找到才会启动ARP的地址解析过程。
一、查看本地ARP高速缓存
进入命令行窗口,输入
arp -a
该命令返回的是缓存中包含的所有的地址对信息,每一行都显示了IP地址对应的物理地址以及地址的类型。如图
地址类型有静态和动态之分,他们的区别在于是否参与到缓存的定时维护过程中,动态的地址具有时效性,如果在一段时间内没有更新或使用过会被删除掉,而静态地址则可以一直保留在缓存中。
二、ARP报文的捕获过程
-
启动Wireshark,并设置Wireshark的捕获条件为arp
-
点击开始按钮,为确保能够捕获到网络中的arp报文,先清空本地的ARP缓存
在命令行中输入命令
arp -d
这里会出现一个问题,如果直接运行cmd命令行,会提示报错如图,提示ARP 项删除失败: 请求的操作需要提升。
这是因为没有管理员权限,解决方法是,开始找到cmd右键以管理员身份运行,再次输入上述命令即可。如图
运行结果如图所示
-
回到Wireshark中查看报文捕获情况,我们看到捕获面板中的arp数据包列表中出现了两个arp报文
如图
第一条报文是由本机所产生的广播请求,它的含义是我的地址是192.168.184.133,谁的地址是192.168.184.2
第二条arp报文给出了我们所要解析的结果,告诉我们192.168.184.2所对应的硬件地址
-
查看arp报文的结构
如图
选择第一条报文,分组详情窗口显示了两层封装结构,帧头和arp报文,说明arp报文是直接封装在数据帧中进行传输的,这个帧长42个字节,帧的头部是14个字节,目的MAC地址是6个字节全部为1,类型字段是16进制的0806表示帧里面包含的是arp报文。
展开arp报文里面包含的内容如图
- 硬件类型
- 协议类型
- 硬件地址长度
- 协议地址长度
- 操作码,操作码取值为1表示是请求报文
- 后面是两对地址信息,源MAC地址,源IP地址,目的MAC地址以及目的IP地址,其中源MAC地址正是发送arp请求的主机的MAC地址。目的IP地址是网关的地址,目的MAC地址全零。
-
对照查看第二个报文
与第一个报文相比第二个报文当中操作码为2如图
表示这是一个应答报文,两对地址信息中源MAC地址正是我们所要解析的结果,是网关网卡的地址,从中我们可以看到ARP协议的解析过程,是基于问答形式的,以广播的方式请求,以单播的形式做出应答,而且ARP报文是直接封装在数据帧内进行传送的