ARP协议
ARP(Address Resolution Protocol)协议,地址解析协议。
在以太网环境中,数据的传输所依赖的是MAC地址而非IP地址,而ARP协议就是将已知的IP地址转化为MAC地址。
在局域网中,网络中实际传输的是 数据帧 ,帧里面是有目的主机的MAC地址的,而所谓地址解析,就是在发送帧之前将目的IP地址转化为MAC地址。
ARP工作流程:
在应用程序发送一个数据包之前,数据经过OSI层次模型一层一层的封装,网络层需要知道目的IP地址,数据链路层自然也需要知道目的MAC地址。
当不知道目的MAC地址时,首先需要发送一个ARP请求报文,根据目的主机的IP地址询问其MAC。
ARP原理:
①发送ARP广播请求报文;
②接收ARP单播应答报文。
ARP攻击或欺骗的原理:
通过发送伪造的虚假ARP报文(广播或单波),来实现的攻击或欺骗。
- 如果虚假报文的mac是伪造的不存在的,实现ARP攻击,结果为中断通信;
- 如果虚假报文的mac地址是攻击者自身的,实现ARP欺骗,结果是可以监听、窃取、篡改、控制流量,但不终端通信。
1.两通信注意位于同一网络中
主机A→主机B:
- ①主机A确定好主机B的IP地址后,首先根据本地ARP缓存中查找B的MAC地址。如果没有找到,那么会在本地网络中广播一个包含A的IP地址,MAC地址和B的IP地址的ARP报文。
- ②所有主机接收到A的ARP请求报文后,与自身IP地址对比,如果不匹配则丢弃此报文;若匹配,则将主机A的IP地址和MAC地址的映射关系存到本地ARP请求中,并发送ARP回复报文给主机A。
- ③主机A收到来自B的ARP回复报文,更新本地ARP缓存,此时就可以与主机B进行通信。
2.两通信主机位于不同网络
由于ARP请求报文是广播,而广播无法跨网段发送。
1.代理ARP:
当ARP请求跨网段时,网关设备将自身MAC返回给请求主机,即代理ARP。
例如PC访问服务器:
①PC在本地网络中广播ARP请求
②网关收到ARP数据包后,发现目的主机不在此网段,则将自身的MAC地址返回给PC。即:
③然后网关收到数据包后再进行ARP请求并转发数据包。
由此可见代理ARP是一个“欺骗”,即MAC254并不是主机8.8.8.8的MAC地址,而是一个错误的映射。
注:一般代理ARP有网络中的网关设备执行,包括路由器、多层交换机、无线路由器、防火墙等。如果网关没有未开启代理ARP,那么网关就和网段中其他电脑设备一样,会将ARP请求丢弃。
但在实际网络中,通常使用正常的ARP,而不是代理ARP。代理ARP特定的使用场景是当网络中没有网关的情况下使用;当网络中有网关时,无需使用代理ARP。
下面是网络有网关和没网关情况下的对比:
1.当PC未配置网关(没有网关),路由器开启代理ARP功能:
2. 有网管 ,路由器关闭代理ARP功能
也就是有网关的时候,PC会直接问网关的MAC地址发送广播包。
由对比可以看出,当使用代理ARP时,IP-MAC映射关系是 服务器IP-路由器MAC ,而不使用代理ARP时,IP-MAC映射关系是 路由器IP-路由器MAC
不管是否使用代理ARP,PC最终拿到的MAC地址都是路由器的MAC地址。
当需要跨网段通信时,归纳:
- 当PC没有网关(采用ARP代理)时,访问谁就问谁的MAC。
- 当PC有网管(不使用ARP代理)时,访问谁都问网管的MAC。
数据包中的MAC地址的变化(IP地址始终不会变):
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存(ARP没有验证机制);
由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。