一、定义
  ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
  ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
二、工作原理
  在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。
这里以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。
  当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。
  这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
三、查看ARP缓存表
ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了。用“arp -d”命令可以删除ARP表中某一行的内容;用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应。
1)  arp -a命令来查看当前本机储存在本地系统ARP缓存中IP和MAC对应关系的信息。
2)  arp -d命令,将储存在本机系统中的ARP缓存信息清空,这样错误的ARP缓存信息就被删除了,本机将重新从网络中获得正确的ARP信息。
3)  arp -s 192.168.2.1 00-14-78-a7-77-5c命令。这样就将网关地址的IP与正确的MAC地址绑定好了,本机网络连接将恢复正常了;因为每次重新启动计算机的时候,ARP缓存信息都会被全部清除。所以我们应该把这个ARP静态地址添加指令写到一个批处理文件(例如:bat)中,然后将这个文件放到系统的启动项中。当程序随系统的启动而加载的话,就可以免除因为ARP静态映射信息丢失的困扰了。
具体操作方法:
编写一个批处理文件
@echo off
arp -d
arp -s 192.168.1.1 00-01-02-03-04-05
保存为:rarp.bat。
步骤三:
运行批处理文件将这个批处理文件拖到“Windows→开始→程序→启动”中,如果需要立即生效,请运行此文件。
四、添加路由信息应对ARP欺骗
一般的ARP欺骗都是针对网关的,那么我们是否可以通过给本机添加路由来解决此问题呢。只要添加了路由,那么上网时都通过此路由出去即可,自然也不会被ARP欺骗数据包干扰了。
删除默认的路由: route delete 0.0.0.0;
添加路由:       route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 1;
确认修改:       route change
此方法对网关固定的情况比较适合,如果将来更改了网关,那么就需要更改所有的客户端的路由配置了。