普通ARP和免费ARP

普通ARP和免费ARP及arping命令的使用


http://tenderrain.blog.51cto.com/9202912/1650245

问题:ARP协议是二层协议,还是三层协议?

答:ARP工作在二层和三层之间,但是属于三层协议(是TCP/IP协议的附属协议)


免费ARP是指主机发送ARP查找自己的IP地址。

通常,它发生在系统引导期间进行接口配置的时候。在互联网中,如果我们引导主机bsdi并在主机sun上运行tcpdump命令,可以看到如下所示的分组。

     0:0:c0:6f:2d:40  ff:ff:ff:ff:ff:ff   arp 60:
      arp who-has 140.252.13.35  tell140.252.13.35

对于ARP请求中的各个字段来说,发送端的协议地址和目的端的协议地址是一致的(因为是查询自己的IP地址):即主机bsdi的地址140.252.13.35。另外,以太网报头中的源地址0:0:c0:6f:2d:40,正如tcpdump命令显示的那样,等于发送端的硬件地址。

 

免费ARP的作用,目前免费ARP的作用有两种。

第一种就是刚才上面所说的宣告广播的作用,以告诉整个广播域,目前这个IP所对应的MAC地址是什么。

第二种是看看广播域内有没有别的主机使用自己的IP,如果使用了,则在界面上弹出“IP冲突”字样。

普通ARP和免费ARP的区别:

普通ARP请求报文(查找别人的IP地址,比如:我需要10.1.1.2MAC地址,10.1.1.2是别人的IP)广播发送出去,广播域内所有主机都 接收到,计算机系统判断ARP请求报文中的目的IP地址字段,如果发现和本机的IP地址相同,则将自己的MAC地址填写到该报文的目的MAC地址字段,并 将该报文发回给源主机。所以只要发送普通ARP请求的主机接收到报文,则证明广播域内有别的主机使用自己要访问的这个IP地址(这里不考虑路由器的ARP代理问 题)。

免费ARP的报文发(查找自己的IP地址,比如:我需要10.1.1.1MAC地址,而10.1.1.1就是自己的IP)出去是不希望收到回应的,只希望是起宣告作用;如果收到回应,则证明对方也使用自己目前使用的IP地址。在所有网络设备(包括计 算机网卡)up的时候,都会发送这样的免费ARP广播(多长时间发一次呢????),以宣告并确认有没有冲突。


举例如下:
0000 ff ff ff ff ff ff 0000 5e 00 01 ea 08 06 00 01
0010 08 00 06 04 00 01 00 00 5e 00 01 ea 86 4a ea 01
0020 00 00 5e 00 01 ea 86 4a ea 01 0000 00 00 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 00 00 00 00
报文中前48位是报文发送的目的MAC地址。
ff ff ff ff ff ff说明前48位都为1,表示这是一个局域网广播地址;
00 00 5e 00 01 ea是数据包发送的源MAC地址;
08 06表示为数据包类型为arp数据包;
00 01表示这是一个以太网数据包;
08 00表示为IP协议,6是硬件地址长度,4为协议地址长度;
00 01表示是ARP请求报文;
00 00 5e 00 01 ea发送者MAC地址;
86 4a ea 01(转换成十进制是134.74.234.1)是发送者的协议地址(由于协议是IP,所以这是IP地址);
86 4a ea 01是被请求的协议地址(可以看到请求的地址就是自身的IP地址);
00 00 5e 00 01 ea是被请求的MAC地址,正常情况下,如果不是免费ARP,这里应该为全0,在响应的时候,由目的主机来填写,但是在免费ARP的请求报文中,这里已经自动填写上自身的MAC地址。

免费ARP的漏洞及防范

根据上述第一种作用能发现免费ARP带来的漏洞,因为目前的局域网上都没有安全的 认证系统,所以任何主机都可以发送这样的免费ARP广播,这样就会出现MAC地址欺骗。假如某银行系统局域网内有服务器A,客户机B和客户机C,客户机B 正在向服务器A提交当天的信用卡消费和账号信息(通过某种安全通信机制进行通信,确保客户机C是无法接收到两者之间传输的数据包的),这时客户机C(攻击 者)向局域网内发送了一个免费ARP广播,其源IP地址为服务器A的地址,源MAC地址为客户机C自己的MAC地址。客户机B收到这样的报文后,会将自己 ARP缓存中服务器A的MAC地址改为客户机C的MAC地址,这就形成了MAC地址欺骗,这样客户机B会将所有该发给服务器A的信息都发送给客户机C,C 在通过抓包分析就知道了很多不该知道的信息。通常为了确保A不再发送信息给B以改变B的ARP缓存里A的IP对应的MAC地址,C可以通过其他手段先将A 工具瘫痪。这样就放心大胆地进行欺骗了。这是至今都很流行的攻击手段之一。

一个比较著名的ARP协议事实是,如果主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址对高速缓存中相应的内容进行更新。主机接收到任何ARP请求都要完成这个操作(ARP请求是在网上广播的,因此每次发送ARP请求时网络上的所有主机都要这样做)。
目前针对该攻击没都有很好的防范手段,当前使用的方法有:
1. 设置MAC地址和IP地址绑定。
2. 将交换机上某些端口设置为信任端口,来自这些端口的请求认为是可靠的,予以转发,其他的不转发。
    其实我们很多设备的漏洞都是这样产生的,为了解决一个问题,引入一项新的机制,但是通常由于缺乏全面的系统分析机制,没能对该项技术进行全方位的论证和考虑,导致了该技术存在一定的缺陷,引起系统的故障,然后在后继的过程中,只有通过打补丁或再引入其他机制进行预防。


ARPING 命令解析:
arping 命令:
说明:arping是用于发送arp请求到一个相邻主机的工具;
arping使用arp数据包,通过ping命令检查设备上的硬件地址。
语法:arping [-bqfDUAV] [-ccount] [-w timeout] [-I device] [-s source] destination
参数:
-b 用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast(单播)地址。

-q quiet output 不显示任何信息;
-f 表示在收到第一个响应包后就退出;

-D 重复地址检测模式(不常用)

-U 主动的ARP模式,主动更新邻居的ARP caches,与 –s 配合使用

-A ARP回复模式,与-U选项类似,但是发送的是ARP 回复报文,而不是ARP请求报文,与–s 配合使用

-V 显示版本信息

-c count表示发送指定数量的 ARP 请求数据包后就停止。如果制定了deadline选项,则arping会等待相同数量的arp响应包,直到超时为止;
-w timeout设定一个超时时间,单位是秒。如果到了指定时间,arping 还没有完全收到响应则退出;

-I interface设置ping使用的网络接口;
-s source设定 arping发送的 arp数据包中的  SPA字段的值。如果为空,则按下面处理
如果是 DAD模式(冲突地址探测),则设置为 0.0.0.0
如果是 Unsolicited ARP模式(Gratutious ARP)则设置为目标地址;--即设置了-A/-U参数
否则从路由表得出;
destination设置目标地址。

使用示例:

示例一、arping -c 5 -I eth1 -s VIP GATEWAY

示例二、arping –Uq –I em2 –s 10.100.2.249 10.100.2.254

通过em2网卡,向10.100.2.254请求10.100.2.249是否可用,并广播通知其他机器(抢占10.100.2.249这个IP

示例三、arping -c 4 -A -I eth1 192.168.2.119

示例四、-A和-U参数的使用区别

[root@robin network-scripts]# arping  -c 4 -U -I eth1 -s 192.168.90.99 192.168.90.96         
ARPING 192.168.90.96 from 192.168.90.99 eth1
Unicast reply from 192.168.90.96 [00:21:F6:00:00:3B]  0.981ms
Unicast reply from 192.168.90.96 [00:21:F6:00:00:3B]  0.739ms
-U参数有回复包,第一次使用广播,然后就使用单播Unicast。
[root@robin network-scripts]# arping  -c 4 -A -I eth1 -s 192.168.90.99 192.168.90.96  
ARPING 192.168.90.96 from 192.168.90.99 eth1
Sent 4 probes (4 broadcast(s))
Received 0 response(s)

-A参数没有回复包。

示例四中的192.168.90.99和192.168.90.96在一个局域网中(即一个Vlan,都是90网段),如果跨Vlan,那么这个命令执行的时候不是有效的,返回结果如下:

root@2-13:/root# arping  -c 4 -U -I eth1 -s 192.168.1.248 
arping: Weird MAC addr 192.168.1.248

这个时候需要Telnet登录到交换机,进行清除cache操作。如下:

在交换机上查看某个IP对应的MAC

show arp | in 192.168.1.248

清除交换机缓存

clear arp-cache

show arp | in 192.168.1.248


我的总结:

l  ARP工作在二层和三层之间,属于三层协议(是TCP/IP的附属协议)。

l  免费ARP是指主机发送ARP查找自己的IP地址。

在免费ARP报文中,源协议地址目的协议地址都为自己的IP,而源硬件地址目标硬件地址都是自己的MAC地址。

l  免费arp作用:

Ø  宣告广播,告诉整个广播域,目前这个IP对应的MAC地址是什么。

Ø  看看广播域内有没有别的主机使用自己的IP,如果有,则提示IP冲突。

网络设备up时,会首先发送免费ARP在广播域内通告自己的arp信息,以宣告并确认没有IP冲突。

附录:

ARP的报文格式:

长度(位)

48

48

16

16

16

8

8

16

48

32

48

32

数据类型

目标以太网地址

源以太网地

帧类型

硬件类型

协议类型

硬件地址长度

协议地址长度

操作码

源硬件地址

源协议地址

目标硬件地址

目标协议地址

组成

以太网传输层

以太网报文数据

以太网传输层

·       目标以太网地址:目标MAC地址。ff:ff:ff:ff:ff:ff 为广播地址。

·       源以太网地址:发送方MAC地址。

·       帧类型:以太类型ARP0x0806

以太网报文数据

·       硬件地址类型:如以太网(0x0001)、分组无线网

·       协议地址类型:如网际协议0x8000)、IPv60x86DD)。

·       硬件地址长度:每种硬件地址的字节长度,一般为6

·       协议地址长度:每种协议地址的字节长度,一般为4

·       操作码:1为请求,2为回显。

·       源硬件地址:n个字节,n由硬件地址长度得到,一般为发送方MAC地址。

·       源协议地址:m个字节,m由协议地址长度得到,一般为发送方IP地址。

·       目标硬件地址:n个字节,n由硬件地址长度得到,一般为目标MAC地址。

·       目标协议地址:m个字节,m由协议地址长度得到,一般为目标IP地址。


  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值