《Wireshark数据包分析实战》(三)地址解析协议(ARP)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Wireshark数据包分析实战》(三)地址解析协议(ARP)相关的知识,希望对你有一定的参考价值。

参考技术A 网络上的通信会使用到逻辑地址(IP地址)和物理地址(MAC地址)。逻辑地址可以使得不同网络以及没有直接相连的设备之间能够进行通信。物理地址则用来在单一网段中交换机直接连接的设备之间进行通信。在大多数情况下,正常通信需要这两种地址协同工作。

我们假设这样一个场景:你需要和你网络中的一个设备进行通信,这个设备可能是某种服务器,或者只是你想与之共享文件的另一个工作站。你所用来创建这个通信的应用已经得到这个远程主机的IP地址(通过DNS服务),也意味着系统已经拥有用来构建它想要在第3层到第7层中传递的数据包所需要的信息。这时它所需要的唯一信息就是第2层包含目标主机MAC地址的数据链路层数据。

之所以需要MAC地址,是因为网络中用于连接各个设备的交换机使用了内容寻址寄存器(CAM)。这个表列出了它在每一个端口所有连接设备的MAC地址。当交换机收到一个指向特定MAC地址的流量,它会使用这个表,来确定应该使用哪一个端口发送流量。如果目标的MAC地址是未知的,这个传输设备会首先在它的缓存中查找这个地址,如果没有找到,那么这个地址就需要在网络上额外的通信来解析了。

TCP/IP网络(基于IPv4)中用来将IP地址解析为MAC地址的过程称为地址解析协议(Address Resolution Protocol,ARP),它的解析过程只使用两种数据包:一个ARP请求与一个ARP响应。

让我们做个小实验,在局域网内ping一个主机IP,假设是第一次ping,本机的ARP表并未缓存,可以通过 arp -a 命令查看。

本机IP192.168.3.7,ping局域网内192.168.3.5的主机,执行以下命令:

开始抓包分析。

上图是一个ARP请求数据包,通过Wireshark的Packet Details面板中,检查以太网头,来确定这个数据包是否是一个真的广播数据包。这个数据包的目的地址是ff:ff:ff:ff:ff:ff:ff。这是一个以太网的广播地址,所有发送到这个地址的数据包都会被广播到当前网段中的所有设备。这个数据包中以太网头的源地址就是我的MAC地址。

在这个给定的结构中,我们可以确定这的确是一个在以太网上使用IP的ARP请求,从数据包的操作码(opcode)为1可以得知。这个ARP的头列出了发送方的IP(本机的IP 192.168.3.7)和MAC地址,以及接收方的IP地址192.168.3.5。我们想要得到的目标MAC地址,还是未知的,所以这里的目的MAC地址填写为00:00:00:00:00:00。

这是一个回应ARP请求的响应,opcode现在是2表示这是一个响应而不是请求。

发送方和接收方的地址发生了转换,重要的是现在数据包中所有的信息都是可用的,也就是说我们现在有了192.168.3.5主机的MAC地址。

执行以下命令

可以得知192.168.3.5及其对应的MAC地址已经被缓存。

大多数情况下,一个设备的IP地址是可以改变的。当这样的改变发生后,网络主机中缓存的IP和MAC地址映射就不再有效了。为了防止造成通信错误,无偿的ARP请求会被发送到网络中,强制所有收到它的设备去用新的IP和MAC地址映射更新缓存。

检查上述数据包,你会看见这个数据包是以广播的形式发送,以便网络上的所有主机都能收到它。这个ARP头的特点就是发送方的IP地址和目标IP地址是相同的。当这个数据包被网络中的其他主机接收到之后,它会让这些主机更新映射表,由于这个ARP数据包时未经请求的,却导致客户端更新ARP缓存,所以会称之为无偿。

如何解码分析wireshark捕获的数据包

用wireshark只能捕获到程序安装所在计算机上的数据包,dns解析是一个涉及不同域名服务器的过程,你无法在本机上得知全部过程,但是能捕获到解析请求和最终的返回结果。
1、首先打开wireshak,开始捕捉。
2、打开浏览器,访问网站
大概的过程就这些,等网站被打开,你所描述的数据基本上都有了。
分析其中的数据,dns、tcp握手等都在其中。看协议类型即可。
ip地址、mac地址也在数据包中,wireshark默认不显示mac地址,你可以在column preferences中添加新栏目hardware src(des) address即可
下面是数据包的截图,前两个dns,后面是tcp握手,接下来就是http请求和数据了,访问的是新浪网站,浏览器为maxthon4。
参考技术A 运行wireshark软件,打开一个保存的数据包文件。

以第4360号http数据包为例,进行解析。双击该数据包,进入解码页面。

点击frame前面的“+”展开该项,这里面的基本信息是,帧序号(4360)和大小(739bytes),以及到达时间。

同理,进入Ethernet II(数据链路层)。此层所展示的,是发送方与接收方的Mac地址,即原Mac地址与目的Mac地址。

而到了internet protocol(网络层),则主要显示了原IP地址与目的IP地址,以及IP首部的大小等。

下面最后三个,主要是transmission control protocol(传输层)。这一层所揭示的基本信息,是通信双方所开的端口号。即原端口与目的端口。

以上是关于《Wireshark数据包分析实战》(三)地址解析协议(ARP)的主要内容,如果未能解决你的问题,请参考以下文章

如何解码分析wireshark捕获的数据包

wireshark数据包分析实战 第二章

如何提取wireshark捕捉到的数据包内容

如何使用wireshark捕获访问某个网站的数据包

wireshark数据包分析实战 第一章

01WireShark——ARP 协议包分析