1.ARP_抓包分析

ARP 抓包分析

首先,了解ARP报文格式:

字段123456789101112
含义以太网目的地址以太网源地址帧类型硬件类型协议类型硬件地址长度协议地址长度op发送端以太网地址发送端IP地址目的以太网地址目的IP地址
长度662221126464

字段1:是ARP请求的目的以太网地址,全1时代表广播地址,目的是让局域网上所有主机都收到ARP请求包;

字段2:发送ARP请求的MAC地址;

字段3:以太网帧类型,表示的是后面大数据类型,ARP请求和ARP应答包的这个值都为0X0806;

字段4:表示硬件地址类型,硬件地址不止以太网一种,以太网类型是此值为1;

字段5:表示要映射的协议地址类型,对IPv4地址进行映射时,此值为0X0800;

字段6和7:分别表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节;

字段8:表示操作类型字段,值为1表示进行ARP请求,值为2表示ARP应答,值为3表示RARP请求,值为4表示RARP应答;

字段9:表示发送端ARP请求或应答的硬件地址也就是源MAC地址,与2相同;

字段10:表示发送ARP请求或应答的IP地址;

字段11和12:分别表示目的端的硬件地址和协议地址。

前3个字段14个字节是以太网的首部,后面9个字段28个字节是ARP请求/应答的信息。

先查看一下本地主机的IP和MAC分别是:192.169.0.2和74:d4:35:c1:8b:bb

一、广播的ARP request包以及replay包:

正常情况下的request包和reply包:

1**、Request包**:

由于主机(192.169.0.2)的ARP缓存中没有目的主机(192.169.0.1)的MAC缓存映射,所以主机直接将ARP请求进行广播;其相关字段分别是:

1、以太网目的地址(Destination):ff:ff:ff:ff:ff:ff ,此地址全为1,是广播地址;

2、以太网源地址(Source):74:d4:35:c1:8b:bb

3、帧类型(Type):ARP(0x0806);

4、硬件类型(Hardware):Ethernet(1);

5、协议类型(Protocol):IPv4(0x0800);

6、硬件地址长度(Hardware size):6

7、协议地址长度(Protocol):4

8、Opcode:操作类型为ARP请求request(1)

9、发送端MAC地址(Sender MAC address):74:d4:35:c1:8b:bb

10、发送端IP(Sender IP address):192.169.0.2

11、目的MAC地址(Target MAC address):00:00:00:00:00:00 (此地址需要根据目的IP去获取,在请求报文中为全0);

12、目的IP地址(Target IP address):192.169.0.1;

2**、Reply包**:此包将自己的MAC 3c:d1:6e:09:e4:a6封装到ARP报文然后回复给请求方,reply包的字段含义跟requset差不多,其中op为:reply(2):

上述replay包的详细数据如下:

二、特殊request包分析

再次进行抓包分析,过滤出一部分ARP包如下:

其中第五个分组的Sender IP address是:0.0.0.0。为什么广播时的发送端IP是0.0.0.0而不是192.169.0.2?

可能是因为网卡还处于启动状态正在进行IP冲突检测,IP地址将其理解为不存在然后就以0.0.0.0代替IP来组装ARP请求包。此问题还在求证中……

另外分组33request包的Target MAC是一个非全0的正常的MAC地址;

但正常情况下,request包的Target MAC应该是全0的,因为这是需要通过请求来获取。但是当ARP缓存表项的生存时间到了的时候,后台进程就会将其移除。

如果arp表中的表项生存时间一到,直接删除此表项,则还需要重新发送广播帧来请求目的mac地址,这样做因为广播而打扰其他站点。考虑到如果以太网中的主机很多,那么每台机器中的arp表中的表项也会很多,如果每条表项生存时间一到就直接删除表项,那么局域网中的广播数量会很多,这会在一定程度上影响网络的利用率,因此在删除表项之前,直接向该表项的目的地址发送一条请求报文来确认。如果短时间内没有收到回复,则说明此mac地址的拥有者已经改变了ip地址,或者已经离开了此以太网,直接删除此表项即可。

所以就会有一部分的request包的Target MAC是非全0,如下面的分组33所示,而分组34这是33的reply包。

三、ARP工作过程分析:

在这里插入图片描述

结合上述抓包分析数据以及相关知识,对ARP工作过程进行分析:

主机A的IP地址为192.169.0.2,MAC地址为 74:d4:35:c1:8b:bb;主机B的IP地址为192.169.0.1,MAC地址为 3c:d1:6e:09:e4:a6;当主机A要与主机B通信时,ARP可以根据主机B的IP地址(192.169.0.1)解析成主机B的MAC地址,以下为工作流程:

首先,根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.169.0.1。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

如果主机A在ARP缓存中没有找到映射,它将询问192.169.0.1的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址以及主机B的IP地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查主机B的IP地址是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

如果主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值