免费ARP 免费ARP,也称无为ARP(Gratuitous ARP)正常,通常是指只有请求,没有响应或者无需请求,就有响应的ARP协商
ARP的两个作用
一、探测IP地址冲突
主机广播发送ARP Req报文,其总,Dst IP Address就是自己的地址,其余参数都是正常值。
如果一直没有收到ARP Response,则说明本广播域中没有IP地址冲突;如果有相同的IP,则对端收到之后会在操作系统的协调下将网卡置为不可用
通常,主机在初始化、复位网卡时自动发出
二、强制更新对方的ARP表项
强制更新对方的ARP表项,通常用于网管应用和ARP欺骗。该功能可有两种方式实现,分别是通过ARP Req和Response实现,理解时请参阅ARP流程图。
例如:
PC1、PC2等在上网时,需要通过网关Rouer的ARP信息,但由于ARP协议中没有必要的认证等安全机制,导致Cheater有机可乘:
1、Cheater广播一个ARP Response报文,其中的Src MAC Addr为Cheater的网卡地址,但是SrcIPAddr为Router的IP,即网关地址,其余的还是按照正常值设置
局域网中所有的PC收到更新之后都会更新自己的网关ARP信息,但实际上是错误信息。
2、Cheater单播一个ARP Request报文给的PC,其中的SrcMACAddr为Cheater的网卡地址,SrcIPAddr为Router的IP,DstIP为的PC的地址,其余的还是按照正常值设置
相关PC收到ARP请求之后会更新自己的ARP信息。
ARP欺骗小结
从欺骗的角度来看,用广播ARP Response比较简单,一次广播即可解决问题;但对与被欺骗者的具体信息则不清楚;
从流量、网络管理的角度来看,使用多次单播ARP Request的方式较好,虽然复杂一些,但对于网中用户可以详细监管,例如“P2P*”软件就是使用这种方式
代理ARP可能会引发其他的问题,如:
路由器GW的外网口连接的是广播型的以太网,GW路由的下一跳是R1,但使用者在写路由器时,将GW的端口名字作为了next-hop,此时路由器在请求ARP时,永远只会请求IP包中目的IP的ARP信息,由于以太网广播的关系,R1和R2都能收到该请求,如果R1和R2都能到达目的地,且都开启了代理ARP,则GW的ARP表会产生错乱