ARP协议
ARP(Address Resolution Protocol)协议,即地址解析协议,是以太网中用于描述目标IP地址和目标主机MAC地址对应映射。
无论是电脑、手机、移动终端还是三层网络交换机(路由器)都有一张ARP表。
这个表中记录的就是IP与主机MAC的映射关系。
ARP表可以理解为手机中的电话簿,IP地址为姓名,MAC地址为电话号码。
我们知道,MAC地址是具有全球唯一性,而且MAC工作在数据链路层。IP地址也具有全球唯一性,但是IP地址工作在网络层。当一台主机或设备要跨网段访问时,仅仅知道对方的IP地址时不够,比如,在一个学校,仅仅知道一个学生的名字并不能对应该学生,还需要学生学号对应才能确定该学生在哪个年纪哪个班。
ARP协议就是完成学生姓名(IP地址)和MAC地址(学号)映射关系。
ARP协议工作在参考模型的第几层,这个一直是讨论比较多的话题,协议到达是在哪一层,根据从应用/功能考虑。
ARP协议最终的目的是获取MAC地址,从这点考虑它是服务在数据链路层也没有问题。
但争议点在于既然是二层数据链路层协议,为什么数据封包还有0X806和IP协议在一个对等体呢?
动态ARP表是由ARP协议通过ARP报文自主学习生成,具有老化时间。可以被新的ARP报文更新。
动态ARP适用于拓扑结构负载、通信实时性要求较高的网络环境中。
静态ARP就是人为参与建立的IP地址和MAC地址固定映射关系。静态ARP表项没有老化时间,不会被动态ARP表项更新或覆蓋。
静态ARP表一般配置在网关设备上,对于存在疑似ARP病毒攻击的环境也可以手动绑定终端的ARP信息。
终端或者网关设备使用自己的IP地址作为目标IP地址发送ARP请求,称为免费ARP。
免费ARP主要作用:IP地址冲突检测。通告自身MAC地址变化。
对于跨网段网络环境中,ARP报文二层广播报文无法扩散到其他地址段。这时候就需要一个中间人进行帮忙转发请求和应答。这个过程称为ARP代理。
ARP代理的好处:
ARP代理可以隐藏局域网内同网段其他主机的MAC地址信息。
ARP代理降低减小了ARP表项和路由表项,使得不用IP和MAC一一对应。
ARP协议交互过程
简单的来说呢?
ARP协议交互过程就两个包,广播问答包,单播回答包。
看到这两个报文的区别了吗?
除了二层头部目的mac地址产生了变化外,数据包的内容也产生了变化。以及为什么会变化?
举个简单例子,你在不知道教室某个人的电话号码,你又不认识这个人,于是就采用广播形式,XX你的电话号码是多少呀?
广播的形式发送未知请求数据。
XX看到消息后,站起来,老师,我叫XX,我的电话号码是YYY。
单播形式发送确定信息。
这就是整个交互的过程。
简单粗暴对不对?
正因为采用这么简单粗暴的方式,才会有针对ARP协议的攻击与欺骗。
当老师获知到XX位置信息以及电话号码,通常会记在一个本子上,这个本子就是ARP表,但是为了保障信息的准确性,老师过段时间都是进行姓名和电话号码的更新,这叫ARP更新。
所以针对这种情况,有的人就使了坏心思,我是不是可以假装XX回答老师的问答或者假装XX主动告知老师XX电话信息变更了呢?
这就是ARP欺骗。
中间人恶意发送一些干扰正确信息的数据包(ARP请求包、ARP应答包)达到截获或者干扰正确信息数据包的发送。
常见的ARP欺骗,有针对主机的欺骗,有针对网关的欺骗。欺骗主机就是冒充老师欺骗学生,针对网关欺骗就是冒充学生更欺骗老师。