网络知识之ARP
ARP协议
一、基础知识
1、基本概念
ARP协议是地址解析协议(Address Resolution Protocol),其作用是根据目的主机的IP地址获取到目的MAC地址,在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。
数据在传输的时候是以数据帧的形式传送的,数据帧被网卡解析成电信号或者光信号传递到对端。而数据帧中是包含源MAC地址和目的MAC地址的,如果发送者只知道目的主机的IP地址,不知道目的主机的MAC地址,就不能把这个数据包转换成数据帧发走,ARP协议就是负责地址解析的,根据目的主机的IP地址获取到目的MAC地址。
如果发送者和接收者在同一局域网中,ARP解析的就是接收者的MAC地址,如果发送者和接收者不再同一局域网中,那么ARP解析的就是这个局域网内网关的接口MAC地址。
2、工作原理
(1)局域网内通信
假设PC1
想与PC3
通信,那么需要知道PC3
的MAC
地址,则会发送一个ARP广播请求报文,该报文所表达的核心内容可以理解为:“我的IP地址是IP1
,MAC地址是MAC1
,谁的IP地址是IP3
,你的MAC地址是多少?”PC1
的网卡将这个ARP广播请求报文添加一个帧头,源MAC是PC1
的MAC地址,目的MAC是FF-FF-FF-FF-FF-FF
(意思是广播),交换机收到这个ARP广播请求报文后,发现目的MAC地址是12个F,那么就会向广播域里的所有主机发送这个报文,PC2
发现并不是找自己的,不会予以答复,而IP地址为IP3
的PC3
接收到这个ARP广播请求报文后,会发送一个ARP单播应答报文,单独发送给PC1
,PC1
接收这个报文后就得知了PC3
的MAC地址,并加入到ARP缓存表中。
(2)跨局域网通信
假如PC1
想与PC5
通信,那么需要知道PC5
的MAC地址,但是PC1
与PC5
并不在同一个局域网中,二者处于不同的广播域内,那么这种情况就需要中间设备(路由器)进行代理ARP。PC1
依旧会发送一个ARP广播请求报文,该报文所表达的核心内容可以理解为:“我的IP地址为IP1
,MAC地址是MAC1
,谁是网关,你的MAC地址是多少?”路由器R1
会回应一个ARP单播应答报文,来告诉PC1
网关的MAC地址为MAC8
,在PC1
接收到单播应答报文后,会重新封装数据帧(IP1,IP5,MAC1,MAC8)
,再次发送给路由器R1
,路由器收到后再次进行封装,发送广播报文(IP1,IP5,MAC9,FF-FF-FF-FF-FF-FF)
(注意:因为路由器默认是不转发广播报文的,所以当路由器收到ARP请求时,它将启动代理ARP服务,将发送广播ARP报文),PC5
单播响应,路由器收到PC5
的单播响应报文后就知道了PC5
的MAC地址,再单播给PC1
,那么PC1
就知道PC5
的MAC地址了。
3、注意事项
(1)ARP协议是一个内网协议,即:局域网内使用的协议,因为ARP协议在工作过程中涉及到了发送ARP广播报文,而路由器是隔离广播域的,所以在同一个局域网中发送的ARP广播报文,外网是收不到的,因此该协议是一个内网协议。
(2)交换机无法隔离广播域,路由器可以隔离广播域。(通过路由器来隔离广播域的方式属于物理隔离)
4、相关命令
Windows系统:
arp -a //查看ARP缓存表
arp -d //清除ARP缓存
arp -s //ARP绑定
二、相关攻击
1、ARP攻击
ARP攻击是通过伪造虚假的ARP报文和虚假的MAC地址,从而中断通信或者断网。
攻击主机可以制造假的ARP应答报文,报文中包含了假的MAC地址,比如PC1
在与PC3
的通信过程中,PC3
反馈给了PC1
正确的MAC地址后,PC1
会更新自己的ARP缓存表,但是ARP协议遵循着后到后得的原则,即:不像DHCP一样以第一个到的报文作为标准,而是以最后到的为标准,因此如果攻击者构造了假的ARP应答报文,就会导致存放了正确MAC地址的ARP缓存信息被替换成假的MAC地址,这样PC1
就永远都找不到PC3
,从而导致通信终端;如果目标地址不在同一局域网里,那么就会造成断网。
2、ARP泛洪攻击
设备处理ARP报文和维护ARP表项都需要消耗系统资源,同时为了满足ARP表项查询效率的要求,一般设备都会对ARP表项规模有规格限制。攻击者就利用这一点,通过伪造大量源IP地址变化的ARP报文,使得设备ARP表资源被无效的ARP条目耗尽,合法用户的ARP报文不能继续生成ARP条目,导致正常通信中断。
3、ARP欺骗
在ARP攻击的基础上,如果攻击者伪造的ARP报文中,MAC地址并不是伪造的,而是自己的MAC地址,那么就会实现ARP欺骗,即:两台主机之间的通信流量都会经过攻击者这个中介,因此ARP欺骗的结果并不是造成通信的中断或者断网,而是监听、窃取、篡改、控制流量。
三、防护方法
1、ARP静态绑定
2、ARP防火墙和相关安全软件
3、动态ARP检测