干货:ARP协议详解、Wireshark抓包分析!建议收藏!

ARP地址转换协议,是一个根据IP地址来获取MAC地址的TCP/IP协议。在TCP/IP协议中,主机之间通过IP地址来定位,但实际定位则是通过主机硬件地址来确认,这个硬件地址就是MAC地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并有一个唯一的MAC地址。因此,主机发送信息前,必须通过 ARP 协议获取目标 IP 地址对应的 MAC 地址,才能正确地发送数据包。

MAC地址的长度是48位,6个字节,通常表示为12个16进制数,例如,54-89-98-A1-77-2B。前3个字节是表示网络硬件制造商的编号,由IEEE分配,后三个字节,由制造商自己分配,代表网卡的序列号。因此,MAC地址也称为网卡地址。

- ARP协议工作流程

ARP工作流程分为ARP请求过程和ARP响应过程。比如,主机A要与主机B通信,需要获取对方的MAC地址,流程是这样的:

主机 A 以广播形式向网络中所有主机发送 ARP 请求,请求报文中包含了目标 IP 地址。

主机 B 接收到请求,发现自己就是主机 A 要找的主机,返回响应,响应包中包含自己的 MAC 地址。如果发现不是,就丢弃相应的ARP报文。

为了避免重复发送ARP请求,产生大量的广播包,每台主机都有一个ARP缓存列表,当源主机得到 ARP 响应后,将目标主机的 IP 地址和物理地址存入本机 ARP 缓存中,并保留一定时间。下次请求 MAC 地址时,直接查询 ARP 缓存,而无须再发送 ARP 请求,从而节约了网络资源。当缓存生存期结束后,才会再次发送ARP请求报文。

  • ARP协议报文格式及封装

根据工作流程,ARP报文分为ARP请求和ARP应答报文两种,报文长度28个字节,其中ARP报头是18个字节,包含硬件类型、上层协议类型、MAC地址长度、IP地址长度、操作类型5个字段。除去报头外,剩余20个字段分别表示源、目的MAC地址和IP地址。如下图所示:

ARP报文格式
ARP是个独立的三层协议,并不需要IP协议封装,而是直接生成自己的报文,到达数据链路层后,由数据链路层协议进行封装,一般是以太网协议。封装的过程,就是在ARP报文的前面加上以太网帧头,再加上4字节的冗余校验码结尾,校验码用于检验数据传输是否出现损坏。

以太网帧头一共14个字节,包含目的MAC地址、源MAC地址、帧类型三个字段,如下图所示:

ARP帧格式
**以太网帧最小长度是64个字节,最长1518个字节。**封装后的ARP帧,实际就是一个最小以太网帧,包含14个字节的以太网帧头,28个字节的ARP报文,一共是42个字节。再加上4个字节的冗余校验码,其余18个字节用0来填充,共计64个字节。

  • Wireshark分析ARP协议

下面用Wireshark抓包工具在电脑本机上来分析ARP协议。先用arp -d命令删除arp缓存表,因此来触发本机发送ARP报文。其中,192.168.16.1是无线路由器IP地址,MAC地址是20-f4-1b-b6-44-ba。

在这里插入图片描述
在Wireshark过滤器中输入arp,过滤掉其它不相关的数据包。可以看到相应的ARP请求和响应报文。

在这里插入图片描述

以太网第48帧是电脑发送的ARP请求报文,在以太网帧头中,前面6个字节是目的MAC地址,因为是广播帧,所以地址是FF-FF-FF-FF-FF-FF。源MAC地址即本机MAC地址,这个可以用ipconfig /all命令查询得到,说明这个帧是电脑本机发出的。

目的主机的IP地址包含在ARP请求报文中,封装在以太网帧中。目的主机IP地址是192.168.16.1,即无线路由器地址。由于不知道目的MAC地址,用00-00-00-00-00-00表示,表示任意地址。

在这里插入图片描述

不过,用华为eNSP软件,模拟ARP请求报文,抓包显示目的MAC地址是广播地址FF-FF-FF-FF-FF-FF,我们以实际生产环境为准。广播地址和任意地址,此前网规考试上午题有考过。

分组报文窗口的最下边一栏,左边就是Wireshark实际抓取的数据包,以十六机制的数值表示,右边是以则是ACII码的形式表示。一般情况下,我们只需要关注十六进制的数值即可。

再来看第49帧,ARP应答报文。

在这里插入图片描述

在以太网帧头中,源MAC地址是20-f4-1b-b6-44-ba,这正是无线路由器地址,说明这是无线路由器发送给本机电脑的ARP应答报文。从ARP报文中,也可以看出,相应的地址是无线路由器地址192.168.16.1。

从以上的帧分析中,我们可以清楚的看出ARP帧的结构,各个字段的长度、数值。值得说明的是,Wireshark抓取的ARP帧,在生产环境是42个字节。在华为eNSP模拟环境中,是60个字节。eNSP、Wireshark安装请看下面这篇文章。

华为 eNSP V100R003C00 和 eNSP 设备包大全,来这里一键下载!快捷方便,网络仿真不用愁!

这似乎与以太网帧的最小长度64个字节不相符合,其实这是因为以太网封装的有效字段是42个字节,其余用0填充的字节,还有冗余校验码4个字节,都被Wireshark丢弃掉了。

本文首发公号:软考网络规划设计师(ruankaowg)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值