ARP协议
ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。
下面以图解的方式来深入了解ARP协议是如何工作的
在介绍arp工作原理时先介绍一下arp缓存:
当主机发送一个ARP请求时,先查看ARP高速缓存表,如果存在对应条目,则直接返回MAC地址,否则向局域网发送ARP请求广播。(windows主机可通过arp -a查看)
arp缓存存在优缺点:
优点:从ARP高速缓存的使用中可以看到,ARP高速缓存可以减小广播量,进而减小网络通信量,提高计算机之间的通信效率。
缺点:造成安全隐患(arp 攻击 / arp 欺骗)
1.局域网内的arp工作原理
如图:pc1,pc2,pc3处于同一局域网且通过交换机相连,ip地址,mac地址如图所示,当pc1与pc2进行通信时会检查本地的arp缓存表,若表中没有记录,则会向整个局域网发送arp广播请求,此时pc1与交换机连接的接口会记录pc1的mac地址存储在MAC地址表中,pc2,pc3均会收到广播请求,正常情况下只有pc2做出响应,将自己的mac地址信息发送给pc1(单播),此时pc2与交换机连接的接口会记录pc2的mac地址信息存储在MAC地址表中。下次pc1与pc2通信就可以通过交换机的MAC地址表进行通信,不用在发送广播请求。
2.非相同局域网的ARP工作原理
相关ip与路由接口信息如图所示,当pc1与pc2通信时,应用数据到传输层添加相应的tcp部,到网络层添加ip头部(包含了源IP:pc1的ip 192.168.10.1 目的ip:pc2的ip 192.168.30.1),发送arp广播数据包,因为pc1与pc2不在同一局域网,pc2不会进行响应,因此arp广播请求会询问网关的mac地址,相应信息封装在mac头部中(源mac:pc1的mac 目的mac:pc1网关路由接口的mac),到达路由器1后,通过ARP协议发送广播请求寻找下一跳的mac地址(mac 头部信息 源mac:路由接口192.168.20.1的mac地址 目的mac:路由接口192.168.20.2的mac地址 )重新封装数据发送到路由器2,继续通过arp协议,发送广播请求,寻找pc2的mac地址信息,(mac头部信息 源mac:路由接口pc2网关 192.168.30.254的mac地址 目的mac:pc2的mac地址)重新封装头部信息发送的pc2。
ARP攻击与欺骗(简单介绍)
1.ARP攻击
借助kali进行arp欺骗 需要安装工具 dsniff
执行命令 :arpspoof -t 目标ip 网关ip地址
2.ARP欺骗(单向)
kali 开启流量转发:echo 1 >> /proc/sys/net/ipv4/ip_forward
执行命令:arpspoof -t 目标ip 网关ip地址
3.ARP欺骗(双向)
kali开启流量转发,需要开启两个命令窗口,做目标主机和网关的双向欺骗,kali充当中间人
窗口一:欺骗目标主机 arpspoof -t 目标ip 网关ip地址
窗口二:欺骗网关 arpspoof -t 网关ip地址 目标ip