ARP协议简介
ARP协议简介
ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。
数据链路如以太网或令牌环网都有自己的寻址机制,这是使用数据链路的任何网络层都必须遵守的,IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址(MAC地址)传输以太网数据包,设备驱动程序从不检查IP数据报中的目的IP地址。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为目的硬件地址(MAC地址),以保证通信的顺利进行。
1 ARP帧结构
ARP帧的具体结构,如图1 ARP帧结构 所示。
图1 ARP帧结构
以太网帧头中的前两个字段是以太网的目的地址和源地址。目的地址为全1时为广播地址。
两个字节长的以太网帧类型表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0X0806.
硬件类型字段:指明了发送方想知道的硬件地址的类型,以太网的值为1;
协议类型字段:表示要映射的协议地址类型,IP为0X0800;
硬件地址长度和协议地址长度:指明了硬件地址和高层协议地址的长度,这样ARP帧就可以在任意硬件和任意协议的网络中使用。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
发送端的以太网地址:源主机硬件地址,6个字节;
发送端IP地址:发送端的协议地址(IP地址),4个字节;
目的以太网地址:目的端硬件地址,6个字节;
目的IP地址:目的端的协议地址(IP地址),4个字节。
2 ARP的工作原理
在硬件层次上进行的数据帧交换必须有正确的接口地址(即硬件地址),但是,TCP/IP有自己的地址:32 bit的IP地址,知道主机的IP地址并不能让内核(如以太网驱动程序)发送一帧数据给主机,内核必须知道目的端的硬件地址才能发送数据,ARP的功能是在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。从逻辑Internet地址到对应的物理硬件地址需要进行翻译,这就是ARP的功能。
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项都有一个默认的生存时间,起始时间从被创建时开始算起。
ARP高速缓存中的表项一般都要设置超时值,完整的表项(如IP地址有相应的MAC地址对应的表项)设一个超时值(例如20分钟),不完整的表项(IP地址没有相应的MAC地址对应,即不存在此主机的表项)设置另外一个超时值(例如3分钟)。如果表项被再次使用时未超时,它的超时值会被重新设定为默认值;如果表项被再次使用时已超时,表明这个表项不可信,需要重新发送ARP请求更新此表项。
在Windows操作系统中,可以在:开始->运行,输入cmd,进入控制台,执行arp/?可以查看ARP的所有命令。
ARP的工作原理如下:
1、首先,每台主机都会在自己的ARP高速缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
2、当源主机需要将一个数据包发送到目的主机时,会首先检查自己 ARP列表中是否存在该IP地址对应的MAC地址,如果有﹐就直接使用此MAC地址;如果没有,主机就先将目标主机的IP地址与自己的子网掩码进行"与"操作,以判定目标主机与自己是否位于同一网段内。假如目标主机与自己在同一网段内,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址;如果目的主机在一个远程网络上,那么就通过路由器等路由设备转发此ARP请求到远程网络中广播。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
3、源主机和目的主机在一个网络内的情况下:网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP和自己的IP地址是否一致。如果不相同就不回应,但是该主机仍然会检查自己的ARP高速缓存,如果此请求的源IP地址已经在高速缓存中,那么就用ARP请求帧中的发送端硬件地址对高速缓存中相应的内容进行更新;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉它需要查找的MAC地址;
如果源主机和目的主机不在一个网络内, ARP请求将由路由器转发至其它网络。如果能找到目的主机,就将此路由器的MAC地址当作目的主机的网络地址发给源主机,以后源主机和目的主机之间的信息交换都要经过此路由器,这个路由器就被称作ARP代理;如果没有找到目的主机,在ARP高速缓存中会产生一条不完整的表项记录下来。
4、源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
3 免费ARP
免费ARP是指主机发送ARP查找自己的MAC地址。这通常发生在系统引导期间进行接口配置的时候。
免费ARP有两方面的作用:
1、 一个主机可以通过它来确定另一个主机是否设置了相同IP地址。主机并不希望对此请求有一个回答。但是,如果收到一个回答,它会在日志上产生一个错误消息。这样就可以警告系统管理员,某个系统配置有误。
2、 如果发送免费ARP的主机正好改变了硬件地址(例如:换了一块网卡)那么这个ARP请求可以使其它主机高速缓存中旧的硬件地址进行相应的更新。
4 ARP欺骗
ARP欺骗是指通过一定的手段使自己拥有其它的身份,从而达到欺骗的目的。ARP协议的工作原理决定ARP欺骗只会存在于局域网内。
ARP欺骗主要分为二种,一种是对路由器ARP表的欺骗;另一种是对内网主机的网关欺骗。
第一种ARP欺骗的原理是―――截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断通知路由器,使真实的地址信息无法保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常主机无法收到信息。
第二种ARP欺骗的原理是―――冒充网关。它的原理是冒充网关,不停的向网络中发送构造好的广播ARP帧,让其它主机的ARP高速缓存中保存的网关的IP地址对应的MAC地址是本机的MAC地址,让被欺骗的主机向本机发数据,本机就可以截获这些数据,如果本机向外转发这些数据,那些被欺骗的主机感觉一切正常,它们感觉不到数据已经被截获了;本机如果不转发这些数据,那些被欺骗的主机就无法对外进行通信了。
当然,还有其它欺骗方式:如欺骗某一台主机、用ARP进行泛洪攻击等。
5 ARP欺骗攻击的防范
1、建立MAC数据库,把局域网内所有网卡的MAC和对应的IP地址记录下来,以便及时查询备案。
2、用监控软件可以监控是否受到ARP攻击。例如网关监听:网关上面使用监控程序截取每个ARP帧,用分析软件分析这些ARP帧。ARP欺骗攻击的帧一般有以下两个特点,满足之一可视为攻击帧:(1)以太网数据包头的源地址、目标地址和ARP数据帧的协议地址不匹配;(2)ARP数据包的发送和目标地址不在自己网络网卡MAC数据库内,或者与自己网络MAC数据库 MAC->IP 不匹配。查看这些数据包(以太网数据包)的源地址(也有可能伪造),就大致知道哪台机器在发起攻击了。