1、什么使ARP协议
ARP协议,全称"Address Resolution Protocol" ,中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应的物理地址(MAC地址)。
在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网络上传输,还必须要知道对方目的主机的物理地址(MAC)才行。这样就存在把IP地址转换成物理地址的地址转换的问题。
我们以以太网环境为例说明,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为目的主机48位以太网地址(MAC地址)。这就需要在互连层有一个服务或功能将IP地址转换为相应的物理地址(MAC地址),这个服务或者功能就是ARP协议。
所谓的"地址解析",就是主机在发送帧之前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证主机间互相通信的顺利进行。
ARP协议要求通信的主机双方必须在同在一个物理网段(即局域网环境)
2、ARP协议工作原理及过程
如上图所示
、主机10.1.1.1向发送数据给主机10.1.1.,检查缓存,发现没有10.1.1.2的MAC地址
、主机10.1.1.1发送ARP广播
、所有主机都接收到10.1.1.1的ARP广播,但只有10.1.1.2给10.1.1.1一个单播回复,并缓存10.1.1.1的MAC地址
、主机10.1.1.1将10.1.1.2的MAC地址保存到缓存中,发送数据
2.1 ARP缓存表
在每台安装有TCP/IP协议的电脑里都会有一个ARP缓存表(windows命令提示符里输入arp -a即可),表里的IP地址与MAC地址是一一对应的
有arp缓存表可以加快ARP的解析速度(减少广播风暴)。
arp缓存表,给恶意黑客带来的攻击服务器主机的风险,这就是arp欺骗或者arp攻击
3、为什么要使用ARP协议
OSI模型把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址工作在第三层,MAC地址工作在第二层。当协议在发送数据包时,需要先封装第三层(IP地址),第二层(MAC地址)的报头,但协议只知道目的节点的IP地址,不知道其MAC地址,又不能跨第二三层,所以用ARP协议服务。(ARP协议属于三层)
4、ARP在生产环境产生的问题和解决方法。
- ARP病毒、ARP欺骗
- 高可用服务器对切换时要考虑ARP缓存的问题。
- 路由器等设备无缝迁移时要考虑ARP缓存的问题,例如:换办公室的路由器。
5、ARP欺骗原理
ARP攻击就是通过伪造IP地址和MAC地址对实现ARP欺骗的,如果一台主机中了ARP病毒,那么它就能够在网络中产生大量的ARP通信量(它会以很快的频率进行广播),以至于使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改局域网中目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过"ARP 欺骗"手段截获所在网络内其他计算机的通信信息,并因此造成网内其他计算机的通信故障。
6、服务器切换ARP问题
当网络中一台提供服务的机器宕机后,当在其他运行正常的机器添加宕机的机器的IP时,会因为客户端的ARP table cache的地址解析还是宕机的机器的MAC地址。从而导致,即使在其他运行正常的机器添加宕机的机器的IP,也会发生客户依然无法访问的情况。
解决方法是:当机器宕机,IP地址迁移到其他机器上时,需要通过arping命令来通过所有网络内机器清楚其本地的ARP table cache,从而使客户机访问时重新广播获取MAC地址。
这个在自己开发脚本实现服务器的高可用时要必须考虑的问题之一,几乎所有的高可用软件都会考虑这个问题。
ARP广播而进行新的地址解析