在网络层我们知道有一个地址解析协议ARP,在实际应用中,我们经常会遇到这样的问题:已经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的物理地址;或者反过来,已经知道了物理地址,需要找出相应的IP地址。地址解析协议ARP和逆地址解析协议RARP就是用来解决这样的问题的。我们今天主要来看看ARP协议。
一、什么是ARP协议?
我们知道,网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但IP地址和下面的网络的硬件地址之间由于格式不同而存在简单的映射关系。(IP地址有32位,局域网的硬件地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或者撤走一些主机。更换网络配置器也会使主机的硬件地址改变。地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中应存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增加或者超时删除)。
从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或者路由器要和本网络上的另一个已知IP地址的主机或者路由器进行通信,ARP协议就会自动地把这个IP地址解析为链路层所需要的硬件地址。下面我们归纳出使用ARP的四种典型情况。
(1)发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。
(2)发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器完成。
(3)发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。
(4)发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
在许多情况下需要多次使用ARP,但这只是以上一种情况的反复使用而已。
二、编写arp脚本抓取对应主机的MAC地址
我们使用ping命令连通IP地址为192.168.140.1---192.168.140.254的网络,抓取对应的MAC地址
运行结果的一部分如下:
我们使用arp -a查看和当前设备有连接的所有IP地址和对应的MAC地址,可以发现有两个设备连接。