网络通信 频道

追根究底 菜鸟轻松认识ARP协议

  【IT168专稿】最近很多网管比较烦,为什么?都是被ARP病毒欺骗的,轻则导致部分计算机无法上网,重则欺骗网吧,使整个网络中断,这都是ARP协议被一些病毒所利用的原因。
  ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。今天我们就和大家一起来追根究底,一起来认识一下ARP协议。

  一、初识ARP协议
  ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写,是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
  ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
  使用arp命令,你能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外,使用arp命令,也可以用人工方式输入静态的网卡物理/IP地址对,你可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项操作,有助于减少网络上的信息量。
  按照缺省设置,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。例如,在Windows NT网络中,如果输入项目后不进一步使用,物理/IP地址对就会在2至10分钟内失效。因此,如果ARP高速缓存中项目很少或根本没有时,请不要奇怪,通过另一台计算机或路由器的ping命令即可添加。所以,需要通过arp命令查看高速缓存中的内容时,请最好先ping 此台计算机(不能是本机发送ping命令)。

  二、ARP协议原理
  在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如图1,我们以主机A(192.168.0.20)向主机B(192.168.0.88)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.0.88的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.0.88的MAC地址是 00-00-1c-d0-4d-8e”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

  三、实战ARP命令
  ARP命令用于显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。
  ARP命令显示并修改Internet到以太网的地址转换表。这个表一般由地址转换协议(ARP)来维护。当只有一个主机名作为参数时,arp显示这个主机的当前ARP条目。如果这个主机不在当前ARP表中那么ARP就会显示一条说明信息。

  ARP语法:
  arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]

  参数
  -a [InetAddr] [-N IfaceAddr] 和-g [InetAddr] [-N IfaceAddr]
  显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。

  -N 参数区分大小写。

  -d InetAddr [IfaceAddr]
  删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。

  -s InetAddr EtherAddr [IfaceAddr]
  向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。

  举例说明:
  1、要显示所有接口的 ARP 缓存表,可键入命令(如图1):arp -a

图1

  2、对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,使用命令:
  arp -a -N 192.168.0.20

  3、要删除ARP表中指定的IP地址项,使用命令:arp -d 192.168.0.20

  4、要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,使用如下命令:arp -s 192.168.0.88 00-AA-BB-CC-DD-EE,添加成功后我们可以使用“arp -a”来查看操作结果(如图2) 。

图2

  对arp协议有了全面的了解后,在防范arp病毒的欺骗上是不是有了更深一步的认识呢!知已知彼,在清除arp病毒时才能更加得心应手。

0
相关文章