流量分析三之ARP协议
ARP协议
Address Resoluion Protocol地址解析协议,它能通过目的IP地址获取目标设备的MAC地址,从而实现数据链路层的可达性。
ARP报文格式
ARP报文不能穿越路由器,不能转发到其他广播域。
Hardware Type表示硬件地址类型,一般为以太网;
Protocol Type表示三层协议地址类型,一般为IP;
Hardware Length和Protocol Length为MAC地址和IP地址的长度,单位是字节;
Operation Code指定了ARP报文的类型,包括ARP Request和ARP Reply;
后面的字段代表源MAC地址、源IP地址、目标MAC地址、目标IP地址。
实验环境
在eNSP上搭建模拟环境,交换机不用配置。
PC1的ip地址是192.168.1.1子网掩码255.255.255.0,
PC2的ip地址是192.168.1.2子网掩码255.255.255.0,
PC1 ping PC2,即可抓取到ARP包。
ARP请求
PC1的ARP缓存表中不存在PC2的MAC地址,所以PC1会发送ARP Request来获取PC2的MAC地址。
ARP Request报文封装在以太网帧里,源MAC地址是PC1的MAC地址,目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。
而ARP Request报文中目的MAC地址的值为0。eNSP存在BUG,抓包的ARP报文目标地址全F是错误的。
同一广播域内,所有终端都会接收到ARP Request广播报文,网关会阻止该报文发送到其他网络上。
ARP响应
所有主机接收到ARP Request报文后,会检查目的地址字段与自身的地址字段信息是否匹配。如果不匹配则不响应。
如果匹配,该主机将ARP报文中的源MAC地址与源IP地址信息记录在自己的ARP缓存表中,然后通过ARP Reply报文进行响应。
代理ARP
同一网段、不同物理网络上的计算机之间,可以通过ARP代理实现相互通信。
两台主机A和B处于同一网段但不同的广播段(不在同一物理网络),主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播报的原因,ARP请求只能到达路由器。
如果路由器使用了ARP代理功能,并知道主机B属于它连接的网络,那么路由器就用自己接口MAC地址代替主机B的MAC地址来对主机A进行ARP应答。
主机A接收ARP应答,但并不知道代理ARP的存在。
优点:代理ARP能在不影响路由表的情况下添加一个新的Router,使主网对该主机变得透明化。
一般大力ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。
缺点:从工作过程可以看出,这其实是一种ARP欺骗。通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,导致无法对网络拓扑进行网络概括。
免费ARP
免费ARP报文(Gratuitous ARP)与普通请求报文的区别在于,免费ARP的请求报文中目的IP地址是自己的IP地址。主要作用:
- 宣告作用。不需要得到回应,只为告诉其他计算机自己的IP地址和MAC地址;
- 可用于检测IP地址冲突。当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内衣存在使用该IP地址的主机;
- 可用于更新其他主机的ARP缓存表。如果主机更换了网卡,而其他主机的ARP缓存表仍然保留着原来的MAC地址,这时发送免费ARP,可以让其他主机更新ARP缓存表,获取最新的MAC地址。