arp协议与rarp协议

说起arp,那么什么是arp呢?arp协议是什么呢?以及如果编写arp脚本抓取对应主机mac地址?这都是我以下需要讲的:

1.什么是ARP协议

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

2.ARP协议的工作原理

这里写图片描述
名词解释如下:
以太网目的地址:目的主机的硬件地址。目的地址全为1的特殊地址是广播地址。(由于刚开始并不知道目的主机的MAC地址所以全设置为F,作为广播)
以太网源地址:源主机的硬件地址。
帧类型:对于ARP协议,该字段为0x0806。对于RARP协议,该字段为0x8035。
硬件类型:表示硬件地址的类型。值为1时表示以太网地址。也就是说ARP协议不仅仅应用于以太网协议,还可以支持别的链路层协议。
协议类型:表示要映射的协议地址类型。值为0x0800时表示IP协议。
硬件地址长度:与硬件类型对应的硬件地址的长度,以字节为单位。如果是以太网,则是6字节(MAC长度)。
协议地址长度:与协议类型对应的协议地址长度,以字节为单位。如果是IP协议,则是4字节(IP地址长度)。
操作类型(op):四种操作类型。ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。
发送端硬件地址:如果是以太网,则是源主机以太网地址,此处和以太网首部中的源地址对应。
发送端协议地址:如果是IP协议,则表示源主机的IP地址。
目的端硬件地址:如果是以太网,则是目的以太网地址,和以太网首部中的目的地址对应。
目的端协议地址:如果是IP协议,则表示源主机要请求硬件地址的IP地址。
对应ARP请求包来说,目的端的硬件地址字段无须填充,其他字段都需要填充。对于ARP回复包来说,所有字段都需要填充。

ARP协议是用于由节点IP地址解析其MAC地址,然后进行局域网内部通信的。例如要与某主机连接,可以在浏览器或运行窗口中输入其IP地址,然而在局域网内是没有网络层的,*网络中的主机设备不能识别IP地址,只识别MAC地址,所以这时就需要ARP协议来转换。ARP协议的基本功能就是通过数据包中的目标节点的IP地址查询目标节点的MAC地址,以便把数据包发送到目标设备中。

下面我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。

当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;
如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问(广播):“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。
同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

以太网数据报最小长度是60字节(14字节的以太网头,不包含4字节的FCS),ARP数据包长度为42字节(14字节的以太网头和28字节的ARP数据),需要加入填充字符到以太网最小长度要求:60字节。

3.如何查看ARP缓存表

ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了,如附图所示。
这里写图片描述

用“arp -d”命令可以删除ARP表中某一行的内容;用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应。

有时候需要手动清除arp缓存,曾经就是因为arp缓存没有做清理,导致迷惑了很久。遇到的问题:

1) 制作了一个写路由器MAC地址的工具,每次写完MAC地址,重启路由器,会发现无法telnet登陆路由器。IP地址没变,但是MAC地址更改了,而ARP缓存表中IP地址映射的仍然是旧的MAC地址。

2) 类似的问题,有两个路由器具有相同的IP地址。先连接一个路由器,登陆成功后,再去连接另一台路由器,却发现登陆不了。

4、ARP和RARP协议工作原理

MAC地址与IP地址是计算机网络通信中非常重要的两类地址,缺一不可。因为在OSI/RM网络层以上是通过IP地址进行寻址的,而在OSI/RM网络层以下则是通过MAC地址进行寻址的。可以说是两类地址各司其职,共同完成一个完整的计算机网络通信。当然在一些网络通信中,还可能有传输层的”端口”号参与到IP寻址中。

RARP:将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。RARP协议广泛应用于无盘工作站引导时获取IP地址。

RARP允许局域网的物理机器从网管服务器ARP表或者缓存上请求其IP地址。

RARP工作原理:

1). 主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。

2). 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。

3). 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。

4). 如果不存在,RARP服务器对此不做任何的响应。

5). 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

5、编写arp脚本抓取对应主机mac地址:
以下是代码:

#!/bin/bash 
index=1
num=0
while[ $index -le 254 ]
do
        if[ $num -lt 20 ];then
          sleep 1
          num=0
          continue
        fi
        ping -cl "192.168.0.$index"&  //加&表示在后台运行
        let index++
        let num++
done

运行结果:
抓包正确结果:1 received,0% packet loss
这里写图片描述
抓包错误结果:0 received,100% packet loss
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值