arp脚本

在网络的分层中,网络层最重要的协议为IP协议,与IP协议配套使用的还有四个协议:

(1)ARP(地址解析协议);

(2)RARP(逆地址解析协议);

(3)ICMP(网际控制报文协议);

(4)IGMP(网际组管理协议).

如图:


其中ICMP、IGMP在IP上部,表示它们使用IP协议,而ARP、RARP在下面表示IP经常使用这两个协议.


ARP协议介绍:

背景:我们首先要知道IP地址与物理地址区别:物理地址是数据链路层和物理层使用的地址,IP地址则是网络层和以上各层使用的地址(逻辑地址由软件实现的)。      在发送数据时,从高层到低层,使用IP地址数据报交给数据链路层,其被封装为MAC帧,MAC帧在被传送时的原地址和目的地址都为硬件地址,在MAC帧首部中,而其他接收设备在接收到MAC帧时,其根据为MAC帧首部的硬件地址,并看不见包藏在MAC帧数据中的IP地址,只有在剥去MAC帧首部尾部将数据交给上层网络层后,网络层才能在IP数据报中首部找到原IP地址与目的IP地址。

由以上可知,在实际网络链路传送数据帧时,必须知道通信双方的硬件地址,而ARP协议与RARP协议即是解决这一问题的:

ARP:知道对方的IP地址,获得对方的硬件地址;

RARP:知道对方的硬件地址,获得对方的IP地址.


为了解决IP地址与硬件地址格式不同和网络中主机、适配器等的变化,地址解析协议ARP则在ARP高速缓存中存放一个经常动态更新的从IP地址到硬件地址的映射表。

每台主机维护这个ARP缓存表,可以用arp -a命令查看。缓存映射表中的表是动态更新的,有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。


主要过程如下:

源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中,此时采用点对点方式返回给源主机,并其也将会把源主机的IP地址与硬件地址映射存入自己缓存映射表中,以备后面需要相互通信时使用。


ARP数据报格式如下:


以上:

硬件类型指链路层网络类型,1为以太网;

协议类型指要转换的地址类型,0x0800为IP地址;

面两个字段表示地址长度:对于以太网地址和IP地址分别为6和4(字节);

op字段为1表示ARP请求,op字段为2表示ARP应答.

注意:

1.源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,是由于在链路层会将以太网首部剥离上交给网络层,ARP请求则需要知道源MAC与目的MAC地址,所以ARP请求中也要出现一次.
2.由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。


具体实现过程如下:

例如:

主机A的IP地址为IPA,MAC地址为MACA,其知道主机B的IP地址为IPB,现在主机A要发送ARP请求知道主机B的MACB地址。

步骤:

(1)首先填写上述ARP请求数据报:

以太网首部:

以太网目的地址:(现不知道,以广播形式发送),为:FF:FF:FF:FF:FF:FF;

以太网源地址:MACA;

帧类型:ARP(0806);


ARP请求数据报:

硬件类型:以太网(1);

协议类型:IP地址(0800);

硬件地址长度:6;

协议地址长度:4;

OP:请求为1;

发送端以太网地址:MACA;

发送端IP地址:IPA;

目的以太网地址:全0(待填写);

目的IP地址:IPB;

(2)用广播形式在同一网段发送请求,则在此网段的主机都会收到此ARP请求,其不会直接丢弃,每台主机对此数据帧进行分离上交到网络层,先查看OP字段判断是ARP请求还是应答;

(3)当是ARP请求时,其查看字段目的IP地址,判断是否与自己匹配,若不匹配,则丢弃;

(4)若匹配,则当前主机在自己ARP缓存映射表中保存发送端的IP地址与MAC地址,然后进行将自己的MAC地址发送给请求端,进行ARP应答;

(5)填写ARP应答数据报:

以太网首部:

以太网目的地址:MACA;

以太网源地址:MACB;

帧类型:ARP(0806);


ARP请求数据报:

硬件类型:以太网(1);

协议类型:IP地址(0800);

硬件地址长度:6;

协议地址长度:4;

OP:应答为2;

发送端以太网地址:MACB;

发送端IP地址:IPB;

目的以太网地址:MACA;

目的IP地址:IPA;

(6)进行点对点发送(由于此时在同一网段,并已知道网络两端主机MAC地址与IP地址);

(7)主机A最后接收到ARP应答数据报,得到主机B的MACB地址.


注意:ARP是解决同一个局域网上主机或路由器的IP地址与硬件地址的映射问题,若要跨网络传输,则是先ARP请求将路由器的硬件地址找到返回,然后将数据传输到此路由器,然后此路由器在进行查找下一个路由器或主机MAC地址,然后再次进行数据传输,直至到目标主机。


以下实现一个arp脚本:来找到当前主机连接的局域网的中所有主机的MAC地址:

#!/bin/bash

net='192.168.58.'
i=1;

count=0
while [ $i -le 254 ]
do
	if [ $count -eq 20 ];then
		count=0
		sleep 1
	fi
	ping -c1 $net$i &  
	let i++
	let count++
done

wait
echo '###############################################'
arp -a | grep -v 'incomplete'
echo '###############################################'

结果如下:







  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值