然后作出合适的转发决定。这些MAC地址表一般是通过学习获取的交换机在接收到一个数据帧后有一个学习的过程该过程是这样的a提取数据帧的源MAC地址和接收到该数据帧的端口号b查MAC地址表看该MAC地址是否存在以及对应的端口是否符合c如果该MAC地址在本地MAC地址表中不存在则创建一个MAC地址表项d如果存在但对应的出端口跟接收到该数据帧的端口不符则更新该表e如果存在且端口符合则进行下一步处理。分析这个过程可以看出如果一个攻击者向一台交换机发送大量源MAC地址不同的数据帧则该交换机就可能把自己本地的MAC地址表学满。一旦MAC地址表溢出则交换机就不能继续学习正确的MAC表项结果是可能产生大量的网络冗余数据甚至可能使交换机崩溃。而构造一些源MAC地址不同的数据帧是非常容易的事情。1222针对ARP表的攻击ARP表是IP地址和MAC地址的映射关系表任何实现了IP协议栈的设备一般情况下都通过该表维护IP地址和MAC地址的对应关系这是为了避免ARP解析
f而造成的广播数据报文对网络造成冲击。ARP表的建立一般情况下是通过二个途径1、主动解析如果一台计算机想与另外一台不知道MAC地址的计算机通信则该计算机主动发ARP请求通过ARP协议建立前提是这两台计算机位于同一个IP子网上2、被动请求如果一台计算机接收到了一台计算机的ARP请求则首先在本地建立请求计算机的IP地址和MAC地址的对应表。因此如果一个攻击者通过变换不同的IP地址和MAC地址向同一台设备比如三层交换机发送大量的ARP请求则被攻击设备可能会因为ARP缓存溢出而崩溃。针对ARP表项还有一个可能的攻击就是误导计算机建立正确的ARP表。根据ARP协议如果一台计算机接收到了一个ARP请求报文在满足下列两个条件的情况下该计算机会用ARP请求报文中的源IP地址和源MAC地址更新自己的ARP缓存1、如果发起该ARP请求的IP地址在自己本地的ARP缓存中2、请求的目标IP地址不是自己的。可以举一个例子说明这个过程假设有三台计算机ABC其中B已经正确建立了A和C计算机的ARP表项。假设A是攻击者此时A发出一个ARP请求报文该请求报文这样构造1、源IP地址是C的IP地址源MAC地址是A的MAC地址2、请求的目标IP地址是A的IP地址。这样计算机B在收到这个ARP请求报文后ARP请求是广播报文网络上所有设备都能收到发现B的ARP表项已经在自己的缓存中但MAC地址与收到的请求
f的源MAC地址不符于是根据ARP协议使用ARP请求的源MAC地址即Ar