TCP/IP协议专栏——ARP详解——网络入门和工程维护必看
ARP简介
ARP( Address Resolution Protocol)即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
ARP报文结构
ARP缓存表
ARP缓存是个用来储存IP地址和MAC地址的缓冲区
其本质就是一个IP地址–>MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。
每一个以太网或令牌环网络适配器都有自己单独的表。
当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。
为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。
ARP更新和老化
在交换机中,ARP缓存表都有老化时间(9默认老化时间为4h=14400s).
ARP缓存表老化时间按不延迟.
老化时间可以是手动配置的也可以是默认设置的。
ARP表的老化时间字段为age(min) ,指这条ARP表项存在了多长时间。
老化时间从0开始计算,当ARP表中某一条表项的老化时间达到了设定的老化时间值时,触发交换机发起ARP请求来查看网络中是否还存在这个IP地址对应的设备,如果收到ARP应答说明还有对应的设备存在于网络中,则更新ARP老化时间即将ARP表项的老化时间刷新为0;如果没有收到ARP应答说明对应的设备已离开该网络,老化掉此条ARP表项也即是删除此ARP表项。
在ARP更新过程中,交换机发送的ARP更新请求报文与普通的ARP请求报文的区别在于:
主机ARP请求报文DMAC为全F的广播地址,
交换机ARP更新请求报文DMAC为目的主机的MAC地址,是一个单播报文,其余字段相同。
ARP更新和老化条件
ARP更新条件
1、设备收到来自某IP的ARP请求包或者免费ARP。
2、设备的现有ARP表项中已经存在该IP对应的ARP表项。
ARP表老化时间定时器的重设
1、设备相应的ARP表项更新时。
2、设备调用ARP表项转发数据后。
ARP老化条件
1、ARP表项达到老化时间且没有相关更新操作。
免费ARP
免费ARP,它是指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置的时候。
免费ARP请求与ARP请求的差别在于免费ARP请求的DIP为自身的IP地址。
免费ARP可以有两个方面的作用:
1、一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。
2、如果发送免费ARP的主机正好改变了硬件地址(比如,主机关机并更
换了一块接口卡,然后重启),那么这个分组就可以使其它主机高
速缓存中旧的硬件地址进行相应的更新。
ARP欺骗
地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:
ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。
ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。
ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
ARP代理
ARP(地址解析协议)工作在一个网段中
而代理ARP(Proxy ARP,也被称作混杂ARP(Promiscuous ARP) )工作在不同的网段间,其一般被像路由器这样的设备使用,用来代替处于另一个网段的主机回答本网段主机的ARP请求。
代理ARP协议使得子网化网络拓扑对于主机来说时透明的(或者可以说是路由器以一个不真实的PC2的MAC地址欺骗了源主机PC1)。