一.地址解析协议(Address Resolution Protocol)的作用
ARP协议为IP地址到对应MAC地址提供动态映射。
简而言之,就是根据目的IP地址找到MAC地址(数据帧在数据链路层传输过程中,需要目的MAC地址、ip)
二.ARP分组格式(这里指局域网电脑间的状态,利于理解)
以太网首部 从左到右分别为:
以太网目的地址,这里指接受端电脑的MAC地址(全1时代表广播地址)
以太网源地址地址,这里指发送端电脑的MAC地址
以太网帧类型,表示数据类型,这里指ARP协议 ,值为0x0806
ARP请求/应答 从左到右分别为:
硬件类型,这里指以太网地址,值为1
协议类型,这里指IP协议,值为0x0800
硬件地址长度,这里指MAC地址,值为6
协议地址长度,这里指IP地址,值为4
操作类型,ARP请求,值为1;ARP应答,值为2;RARP请求,值为3;RARP请求,值为4;
发送端以太网地址,这里指发送端电脑的MAC地址
发送端IP地址
目的以太网地址(在ARP Request报文中,不知道目的以太网地址,该字段填充值为0)
目的IP地址
扩展:
电脑A向电脑B发送ARP请求时,电脑B收到后,操作类型加1变成2,发送ARP应答
因为ARP请求/应答格式相同,通过OpCode字段确定操作类型
实验验证ARP分组格式
工具:
eNSP V1.2.00.510
Oracle VM VirtualBox 5.2.22
Wireshark 1.4.3
WinPcap 4.1.3
如下图所示:
1.在主机A命令行输入: arp -a
可以看到主机A中没有ARP缓存(IP地址和物理地址映射关系),就需要通过ARP协议寻址
2.抓取主机B端口的以太网数据帧,在主机A命令行输入:ping 10.1.1.2
抓取到ARP请求/应答数据帧
ARP请求数据帧(主机A发送),对照RAP分组格式食用,其中操作类型为1,目的地址全为1(广播)
ARP应答报文(主机B发送),对照RAP分组格式食用,其中操作类型收到后+1
主机A命令行中:输入arp -a
可以看到arp缓存中,有主机B的IP地址与MAC地址的映射
3.ARP高速缓存
定义:
ARP缓存是一个缓冲区,用来储存IP地址和MAC地址,本质就是<IP地址,MAC地址>的对应表。表中一个条目记录了网络上一个主机的IP地址和其对应的MAC地址。
每一个以太网或令牌环网络适配器都有自己单独的表。
当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。
ARP缓存表项的生存时间TTL
ARP缓存包含动态和静态项目:
动态项目随时间推移自动添加和删除,每个动态ARP缓存项都有都设置了TTL(生存时间),TTL为0时此项目就从表中删除,Windows下TTL一般不超过10分钟。
静态 ARP 缓存条目是永久性的,可以使用 TCP/IP 工具手动添加和删除。静态 ARP 缓存条目用来禁止节点发送对常用的本地IPv4地址(例如路由器和服务器的 IPv4 地址)的ARP请求。
ARP高速缓存的使用
当主机发送一个ARP请求时,先查看ARP高速缓存表,如果存在对应条目,则直接返回MAC地址,否则向局域网发送ARP请求广播。
ARP高速缓存的优缺点
优点:从ARP高速缓存的使用中可以看到,ARP高速缓存可以减小广播量,进而减小网络通信量,提高计算机之间的通信效率。
缺点:造成安全隐患(参考下面免费ARP的作用)。
4.免费ARP
定义
免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时。
与标准ARP的区别就是免费ARP分组的目的IP地址字段封装的是自己的IP地址,即向所在网络请求自己的MAC地址。
作用
免费ARP的作用有:
1) 一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址。
正常情况下发送免费ARP请求不会收到ARP应答,如果收到了一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突。
2)更新其他主机高速缓存中旧的硬件地址进行。
如果发送免费ARP的主机正好改变了硬件地址,如更换了接口卡。
其他主机接收到这个ARP请求的时候,发现自己的ARP高速缓存表中存在对应的IP地址,但是MAC地址不匹配,那么就需要利用接收的ARP请求来更新本地的ARP高速缓存表表项。
3)网关利用免费ARP防止ARP攻击
有些网关设备在一定的时间间隔内向网络主动发送免费ARP报文,让网络内的其他主机更新ARP表项中的网关MAC地址信息,以达到防止或缓解ARP攻击的效果。
4)利用免费ARP进行ARP攻击
ARP协议并不只在发送了ARP请求才接收ARP应答,计算机只要接收到ARP应答数据包,就会使用应答中的IP和MAC地址对本地的ARP缓存进行更新。
主机可以构造虚假的免费ARP应答,将ARP的源MAC地址设为错误的MAC地址,并把这个虚假的免费ARP应答发送到网络中,那么所有接收到这个免费ARP应答的主机都会更新本地ARP表项中相应IP地址对应的MAC地址。更新成功后,这些主机的数据报文就会被转发到错误的MAC地址,从而实现了ARP欺骗的攻击。
5.代理ARP
定义
代理ARP就是通过使用一个主机(通常为router),来作为指定的设备使用自己的 MAC 地址来对另一设备的ARP请求作出应答。
为什么需要代理ARP?
先要了解,路由器的重要功能之一就是把局域网的广播包限制在该网内,阻止其扩散,否则会造成网络风暴。
ARP请求是个广播包,它询问的对象如果在同一个局域网内,就会收到应答。但是如果询问的对象不在同一个局域网该如何处理?路由器就提供的代理ARP为这个问题提供了解决方案。
工作过程
两台主机A和B处于同一网段但不同的广播段时,主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播包的原因,ARP请求只能到达路由器。如果路由器启用了代理ARP功能,并知道主机B属于它连接的网络,那么路由器就用自己接口的MAC地址代替主机B的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在。
代理ARP的优缺点
优点:代理ARP能在不影响路由表的情况下添加一个新的Router,使子网对该主机变得透明化。一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。
缺点:从工作工程可以看到,这其实是一种ARP欺骗。而且,通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括。此外,代理ARP增加了使用它的那段网络的ARP流量,主机需要更大的ARP缓存空间,也不会为不使用ARP进行地址解析的网络工作。
转载于博主:非书非云