「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》
使用Wireshark工具抓取ARP协议的数据包,分析ARP协议的地址解析过程、自主学习逻辑以及初次访问和多次访问的区别。
第一步:Ping本网段内任意主机
1)cmd执行下面这条命令获取局域网内所有主机:
for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.31.%i
命令的意思是:ping 192.168.0.1 到 192.168.0.255 之间的所有IP,注意将IP地址的第3位改成自己的网段。
2)cmd执行 arp -a 命令,从ARP表中查看本网段内有哪些主机。
3)记录一个本网段的IP,然后 arp -d 清空ARP表
4)cmd执行 arp -a,验证ARP表已被清空(第五步会解释为什么要清空)
5)Wireshark开启抓包后,ping 本网段的IP
第二步:过滤ARP协议的数据包
显示过滤器中输入:arp,过滤ARP协议的数据包。
抓到了两个数据包,第一个包是ARP请求包,第二个包是ARP响应包。
第三步:数据包分析
先分析一下这两个数据包做了什么
1)先看第一个数据包,源地址(Source字段)是我自己的MAC地址
cmd 执行 ipconfig /all 验证一下:
目标地址(Destination字段)是 Broadcast,就是广播的意思
Info 字段,是对当前动作的描述:
总结一下第一个数据包做了什么:
我的电脑,发送了一个广播,广播的内容是 “谁是192.168.31.118?告诉192.168.31.121”
192.168.31.121是我电脑的IP,意思就是:呼叫192.168.31.118,收到请回复我。
4)第二个数据包的目的地址(Destination 字段)是我电脑的MAC地址
结合 Info 字段的信息,总结一下第二个数据包做了什么:
有个主机,向我的电脑发送了一个信息,信息的内容是 “192.168.31.118 是 74:b5:87:db:06:ac”
这个主机把MAC地址告诉了我的电脑。
综上所述,我们可以得出一个结论:
ARP地址解析协议就像一个队内语音,他会向局域网内所有主机广播请求,索要目标IP的MAC地址;知道的主机就会响应具体的MAC地址。
第四步:数据内容分析
接下来我们根据包的数据分析一下,这两个包是怎么做的
1)第一个包的数据,重点看我圈起来的两个地方
- 第一处:ARP后面的括号里是 request,说明这是个请求包
- 第二处:源IP、源MAC、目标IP都有值,目标MAC却全是0,意思就是告诉他们:我不知道这个IP的MAC地址。
2)第二个包的数据,重点看我圈起来的两个地方
- 第一处:ARP后面的括号里是 reply,说明这是个响应包
- 第二处:源IP、源MAC、目标IP、目标MAC都有值,接收方可以从这里获取IP对应的MAC地址。
第五步:ARP自主学习
还记得第一步的时候,我们清空了ARP表吗?
再次使用 arp -a 查看ARP表
可以发现,表中添加了我们刚才 ping 的IP,以及对应的MAC地址,这就是ARP的学习能力:解析成功的MAC地址会被临时缓存,以节约资源。
第六步:再次访问
1)Wireshark开启抓包,重新访问这个主机
2)查看ARP请求包的目的MAC地址
由于是第二次访问,ARP表中已经缓存了MAC地址,所以这次ARP请求不再广播,而是直接从ARP表中获取。