arp协议概念
arp是(Address Resolution Protocol)地址解析协议的缩写。它的作用是通过目标设备的ip地址,解析为目标设备的mac地址,以此来保证信息的传输。他是ipv4网络层不可获缺的协议,不过在ipv6中被ndp(邻居发现协议)代替。
IP地址→arp→mac地址
(在p2p链路中不会使用arp协议,在p2p网络中也不会使用mac地址)
IP地址与MAC地址
在发送数据时,数据是从高层解封到低层,数据在进行传输。所以当ip数据报封装在数据链路层,变为mac帧。mac帧在传输时原地址和目的地址都是物理地址。在数据链路层是看不到ip地址。只有在去除帧头部和尾部时,在网络层才看得到源IP地址和目的IP地址。
arp缓存
1.arp缓存就是用来储存ip地址和mac地址的缓冲区,本质就是一个IP地址对应mac地址的对应表
2.对应表里的每一个条目都保存了其他主机的IP地址以及对应的MAC地址表。
3.每一个以太网都会有一个自己单独的表。当收到已知主机IP地址节点的MAC地址时,会先检查自己的arp缓存表。如果已在表内直接转发MAC地址。若没有则进行arp泛洪,等到目的IP地址的主机响应。
4.arp缓存可以包含动态和静态两种缓存条目。动态项目会随着时间的推移删除或者增肌,静态条目则会一直存在到主机关机为止。(动态绑定是dhcp分配IP地址时与MAC地址进行绑定,静态就是手工将IP地址与MAC地址直接绑定)
arp工作原理就是一个主机发送自己的IP地址和MAC地址。然后发送arp请求告诉别的主机自己需要哪个IP地址的mac地址。当对应主机收到此请求时就会进行arp响应,返回自己的mac地址,完成通讯。
arp工作流程
1.主机在加入新网络时(有可能只是MAC地址发生变化,接口重启等等),会向一个局域网里的主机通过arp报文发送自己的IP地址以及mac地址。
2.其他主机收到arp报文时,会将此映射关系储存到自己的缓存表里。
3.当主机发送arp请求时,会首先检查自己的arp缓存表,表中有对应的IP地址主机的mac地址时,直接发送。如果没有则向整个局域网里的主机发送请求,找到目标主机。发送的arp数据包包括:源ip,源mac地址,目的ip。
4.在局域网里所有主机的反应:
1.与arp请求报文相匹配的,先把发送请求主机的IP地址和mac地址记录在缓存表中,如果已经存在则直接覆盖。然后将自己的mac地址写入响应报文中。
5.当完成MAC地址交互后,进行数据传输。如果一直没有主机响应该报文,则arp查询失败。
arp协议缺陷
1.ARP请求与应答不需要配对
主机收到arp应答时,不管以前是否发出对应的请求,均接受并更新arp缓存。这样就导致了,可以向任何主机发送虚假的arp应答。
2.ARP reply也可以广播
3.以太帧的源MAC和ARP包里的发起端MAC可以不同
正常情况下,以太帧的源MAC和ARP包里的发起端MAC是完全一样的。但是实际上ARP依靠的是ARP包里的发起端MAC,而不是以太帧的源MAC
4.以太帧的源MAC可以是任意的
造成无法查找发起ARP欺骗的主机MAC的难题,就算是知道受骗了,也不知道是被谁欺骗的。
arp欺骗
就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。