[转]ARP协议

ARP协议(Address Resolution Protocol,地址解析协议)的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。他是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被icmp v6所替代。

基本功能

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理(ARP Proxy)。

原理

在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的,如下表所示。

主机名称 IP地址 MAC地址
A 192.168.38.10 00-AA-00-62-D2-02
B 192.168.38.11 00-BB-00-62-C2-02
C 192.168.38.12 00-CC-00-62-C2-02
D 192.168.38.13 00-DD-00-62-C2-02
E 192.168.38.14 00-EE-00-62-C2-02
... ...

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

ARP欺骗

ARP欺骗(ARP Spoofing),又称ARP下毒(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术。此种攻击可让攻击者取得局域网上的数据分组甚至可篡改分组,且可让网络上特定电脑或所有电脑无法正常连接。最早探讨ARP欺骗的文章是由Yuri Volobue所写的《ARP与ICMP转向游戏》(ARP and ICMP redirection games)

运作机制

ARP欺骗的运作原理是由攻击者发送假的ARP分组到网络上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的闸道(被动式分组嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middle attack)。攻击者亦可将ARP分组导到不存在的MAC地址以达到阻断服务攻击的效果,例如netcut软件。

例如某一网上闸道的IP地址是192.168.0.254,其MAC地址为00-11-22-33-44-55,网络上的电脑内ARP表会有这一笔ARP记录。攻击者发动攻击时,会大量发出已将192.168.0.254的MAC地址篡改为00-55-44-33-22-11的ARP分组。那么网络上的电脑若将此伪造的ARP写入自身的ARP表后,电脑若要通过网上闸道连到其他电脑时,分组将被导到00-55-44-33-22-11这个MAC地址,因此攻击者可从此MAC地址截收到分组,可篡改后再送回真正的闸道,或是什么也不做,让网络无法连接。

防制方法

最理想的防制方法是网络内的每电脑的ARP一律改用静态的方式,不过这在大型的网络上是不可行的,因为需要经常更新每电脑的ARP表。

另外一种方法,例如DHCP snooping,网络设备可借由DHCP保留网络上各电脑的MAC地址,在伪造的ARP分组发出时即可侦测到。此方式已在一些厂牌的网络设备产品所支持。

有一些软件可监听网络上的ARP回应,若侦测出有不正常变动时可发送电子邮件通知管理者。例如UNIX平台的Arpwatch以及Windows上的XArp v2或一些网络设备的Dynamic ARP inspection功能。

正当用途

ARP欺骗亦有正当用途。其一是在一个需要登录的网络中,让未登录的电脑将其浏览网页强制转向到登录页面,以便登录后才可使用网络。另外有些设有备援机制的网络设备或服务器,亦需要利用ARP欺骗以在设备出现故障时将讯务导到备用的设备上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值