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

学习使用Wireshark的读书笔记

地址解析协议

24d7bb85ccac60c50d1267b440c2d38b.jpg

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

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

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

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

ARP头

ARP数据包结构.png

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

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

ping 192.168.3.5

开始抓包分析。

ARP请求

ARP请求

上图是一个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响应

ARP响应

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

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

ARP缓存列表

执行以下命令

arp -a
arp -a

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

无偿的ARP

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

image.png

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

我是咕咕鸡,一个还在不停学习的全栈工程师。
热爱生活,喜欢跑步,家庭是我不断向前进步的动力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,134评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,092评论 0 8
  • ARP协议 什么是ARP协议 协议分析篇第一个要研究的就是ARP协议。ARP(Address Resolution...
    kevinhuangk阅读 2,522评论 0 4
  • 4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址。数据链路如以太网或令牌环网都有自己的寻...
    张芳涛阅读 1,012评论 0 3
  • 由硬件交换的帧需要使用正确的硬件地址定位到正确的接口;否则,无法传输数据。一个传统IPv4网络需要使用自已的地址:...
    Myth52125阅读 1,088评论 0 0