ARP协议解析

2017-06-25 11:07 阅读 1,300 次 评论 0 条

什么是ARP协议?

ARP(Address Resolution Protocol):地址解析协议,即将ip地址转换成对应的MAC地址。此外,其对立的协议为RARP:反向地址解析协议,即将MAC地址转换成ip地址。

为什么要使用ARP协议?

在弄清这个问题之前,我们首先看看OSI模型,它将网络工作分为以下7层:

从图中可以看出,各层之间不是直接访问,而是通过接口传递信息,其中ip地址在网络层,MAC地址在数据链路层,协议在发送数据包时,首先要封装网络层与链路层的报头,但协议仅知道目的节点的ip地址,不知道其物理地址,又不能跨越第二、三层,因此引入了ARP协议。

这样说可能比较抽象,下面我们具体阐述一下:

☛ 在网络通讯时,源主机的应用程序知道目的主机的ip地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接受到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯之前必须先获取目的主机的硬件地址

☛ 当一台主机把以太网数据帧发送到位于同一局域网的另一台主机时,是根据48位的以太网地址来确定目的接口的,设备驱动程序从不检查ip数据报中的目的ip地址。ARP协议的功能就是IP地址到MAC地址的映射

ARP高速缓存

由于32位的ip地址与48位的MAC地址格式不同,并且在一个网络上可能会经常新增主机或删除主机,因此ip地址与MAC地址并不是简单的映射关系。

为了解决这个问题,我们在主机ARP高速缓存中存放了一个从ip地址到MAC地址的映射表(表示动态更新的)。

每台主机都维护了一张ARP缓存表,可以使用arp -a来查看:

如果表中的某一行没有使用,一般为20分钟,就会被删除,这样可以很大程序减少ARP缓存表的长度,加快查询速度。

ARP的通信原理(局域网)

当主机A向主机B中发送ip数据报时,会现在ARP缓存表中查看是否有主机B的ip地址,若有,就在ARP高速缓存中查出对应的MAC地址,将MAC地址写入MAC帧,然后通过局域网把该MAC帧发往硬件地址。

如果查询不到主机B的ip地址,具体会做以下几件事:

① ARP进程在本局域网广播一个ARP请求分组。

② 本局域网的所有主机上运行的ARP进程都会收到此ARP请求分组。

③ 主机B的IP地址与APR请求的IP一致,就收下这个ARP请求,并向主机A发送ARP响应分组,并在这个响应分组中写入自己的硬件地址。其他主机会丢弃这个APM请求。

④ 主机A收到主机B的ARP响应后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

上述是我用wireshark抓取的APR信息,红色框就是一次广播的APR请求及ARP应答过程。

ARP的通信原理(非局域网)

如下图所示,主机A与主机B属于不同的局域网,中间由路由器连接进行通信。

情景:假设HostA为发送方,要将IP数据报发送到另一个网络的HostB。过程如下:

⒈首先HostA会在局域网A中发送ARP请求广播,发现局域网A中未有主机应答。

⒉找到与局域网A上的一个路由器Route的硬件地址。

⒊发送方此时为路由器,把IP数据报转发到与Route相连的另一个网络,在局域网B内进行广播。

⒋HostB发现ARP请求报后,进行应答,将自己的硬件地址通过路由器发送给HostA。

ARP数据报格式

以太网目的地址:全1,即广播报,发给局域网的所有主机一个ARP请求包。

以太网原地址:发送端主机的地址。

帧类型:链路层上层协议类型,0x0806表示ARP。

硬件类型:链路层网络类型,0x0001表示以太网地址。

协议类型:0x0800表示IP协议。

OP操作:0x0001表示ARP请求,0x0002表示ARP应答,3表示RARP请求,4表示RARP应答。

发送端以太网地址:源主机MAC地址。

发送端IP地址:源主机IP地址。

目的端以太网地址:目标端MAC地址(若为请求报文,则全0)。

目的端IP地址:要接受主机的IP地址。

注意:由于以太网规定最小数据长度46字节,ARP协议只有28字节,所以有18个字节填充位。

问题:为什么ARP数据报中要存在两份源和目的MAC地址,有什么必要?一份不行吗?

答:一份不行。当我们在数据链路层接收到ARP数据报时会取出MAC首部,然后交付给上层ARP协议,而ARP协议看不到MAC帧的首部信息,因此各自存在一份MAC地址。

获取局域网内的MAC地址

下列程序后缀为.sh文件,我们可以使用bash [文件名]或chmod a+x [文件名]来执行此shell。

上述就是与我处于同一局域网的设备的MAC地址,如果你想了解更多的信息,需要使用tcpdump去抓包,感兴趣的可以去尝试一下。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:ARP协议解析 | 术与道的分享
分类:网络与安全 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情