ARP
协议过程
ARP协议是通过目的IP地址得到其MAC地址的一种网络协议,每台主机都会维护一个ARP缓冲区,缓冲区里有ARP缓存表,表中包含了三个字段(IP地址、IP地址对应的MAC地址、类型(静态、动态)),ARP协议过程为:
- 主机在发包之前查询ARP映射表,如果目的IP地址存在,将对应的MAC地址作为目的MAC地址进行数据包的发送。
- 如果不存在,就会构建一个ARP请求报文段,其中包含目的IP地址,源IP地址,源MAC地址等信息。然后在网段中通过广播包的形式发送(目的MAC地址置为全F),网段中其他主机收到ARP请求包之后,会检查目的IP是否和自己的一致,如果不一致,直接忽略。如果一致,就将源IP地址以及对应的MAC地址添加到自己的ARP映射表中(IP地址如果已存在,就将其覆盖),之后构建单播ARP响应报文,其中包含(目的IP、目的MAC地址、源IP地址、源MAC地址)发送给主机A,主机A收到之后将其添加进主机A的ARP映射表,然后发送数据包。
PS:这里需要注意的是,ARP协议不能跨网段进行,也就是说,对于不同网段的主机,ARP是逐渐跨网段进行的,即主机A先通过ARP协议得到网关的MAC地址,然后网关通过路由表得到主机B所在的网段的IP地址,然后准备从对应的接口发送出去,重复上面1、2的过程,最后消息成功发送。
ARP欺骗
概念
我们知道,ARP是没有安全验证的,只要是目的IP是本机的IP,ARP映射表都会存储,那么可能造成的一个结果就是,可以人为的仿造IP-MAC,然后覆盖合法的IP-MAC,这会造成很大的危害,例如:
- 非法主机通过ARP欺骗,可以充当消息的中间人,对合法主机以及网关之间的消息通信进行监听。
- 非法主机可以操控网段中消息的发送,从而造成网络堵塞,本网段主机无法访问网段外的网络。
解决办法
上面提到过,ARP缓存表中包含三个关键字段,我们可以设置最后一个字段(类型)来一定程度上的遏制ARP欺骗。
类型:动态、静态
动态:ARP中存储的IP-MAC会在一定时间后过期,即系统会自动刷新ARP缓存表中类型为动态的IP-MAC。
静态:ARP当中存储的IP-MAC由操作人员手动配置,主机不会刷新ARP缓存表中类型为静态的IP-MAC。