ARP

来自站长百科
跳转至: 导航、​ 搜索

ARP即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。需层有一组服要在互连务将IP地址转换为相应物理地址,这组协议就是ARP协议。

ARP基本功能[ ]

  • 在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
  • 当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理。

ARP工作原理[ ]

在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,以主机A向主机B发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到目标IP地址,主机A就会在网络上发送一个广播,A主机MAC地址是“主机A的MAC地址”,这表示向同一网段内的所有主机发出这样的询问:“我是A地址,我的硬件地址是"主机A的MAC地址"。请问IP地址为A地址的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“A主机的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时A和B还同时都更新了自己的ARP缓存表(因为A在询问的时候把自己的IP和MAC地址一起告诉了B),下次A再向主机B或者B向A发送信息时,直接从各自的ARP缓存表里查找就可以了。ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

ARP协议的数据结构[ ]

typedef structarphdr

{

 unsigned short arp_hrd;/*硬件类型*/

 unsigned short arp_pro;/*协议类型*/

 unsigned char arp_hln;/*硬件地址长度*/

 unsigned char arp_pln;/*协议地址长度*/

 unsigned short arp_op;/*ARP操作类型*/

 unsigned char arp_sha[6];/*发送者的硬件地址*/

 unsigned long arp_spa;/*发送者的协议地址*/

 unsigned char arp_tha[6];/*目标的硬件地址*/

 unsigned long arp_tpa;/*目标的协议地址*/

}

ARPHDR,*PARPHDR;

ARP欺骗[ ]

ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。该命令只有在安装了TCP/IP协议之后才可用。

arp -a [inet_addr] [-N [if_addr]

arp

arp -d inet_addr [if_addr]

arp -s inet_addr ether_addr [if_addr]

参数

-a

通过询问TCP/IP显示当前ARP项。如果指定了 inet_addr,则只显示指定计算机的IP和物理地址。

-g

与-a相同。

inet_addr

以加点的十进制标记指IP地址。

-N

显示由if_addr指定的网络界面ARP项。

if_addr

指定需要修改其地址转换表接口的IP地址(如果有的话)。如果不存在,将使用第一个可适用的接口。

-d

删除由inet_addr指定的项。

-s

遭受ARP攻击后现象[ ]

  • ARP欺骗木马的中毒现象表现为:使用局域网时会突然掉线,过一段时间后又会恢复正常。比如客户端状态频频变红,用户频繁断网,IE浏览器频繁出错,以及一些常用软件出现故障等。如果局域网中是通过身份认证上网的,会突然出现可认证,但不能上网的现象(无法ping通网关),重启机器或在MS-DOS窗口下运行命令arp -d后,又可恢复上网。
  • ARP欺骗木马只需成功感染一台电脑,就可能导致整个局域网都无法上网,严重的甚至可能带来整个网络的瘫痪。该木马发作时除了会导致同一局域网内的其他用户上网出现时断时续的现象外,还会窃取用户密码。如盗取QQ密码、盗取各种网络游戏密码和账号去做金钱交易,盗窃网上银行账号来做非法交易活动等,这是木马的惯用伎俩,给用户造成了很大的不便和巨大的经济损失。

相关条目[ ]

参考来源[ ]