今天在做题的时候发现ARP协议不是很懂,于是我去搜了一些资料,学习了一下,这里记录一下自己的总结。
一、为什么会有ARP协议的产生呢?
答:这是因为在直接相连的网络中,两个节点是利用彼此的MAC地址互相传送帧的。但是当网络层数据报交付给源端系统时,该端系统只能获得目的端系统的ip地址,依然不能进行数据的传送,所以需要一个协议来根据已知的ip地址获得对应得MAC地址,这个时候就产生了ARP协议,ARP协议将解析到的目的IP和MAC地址存储在本地的ARP缓冲中(地址映射表),供下次使用。ARP全称是:Address Resolution protocol (地址解析协议)。
二、ARP适用于哪些场景呢?
答:1. 两个端系统位于同一个子网,这种情况下只需要简单的进行子网内部的ARP即可获得目的MAC地址;2. 两个端系统位于不同的子网内部,需要在路由器之间进行转发,比前一个复杂,不过依然使用的是ARP协议。
三、地址解析需要哪些步骤?
答:1.两个端系统在同一个子网内部时:
源端系统A的IP:10.10.10.1
源端系统A的MAC:11-11-11-11-11-11
目的端系统B的IP:10.10.10.3
目的端系统B的MAC:22-22-22-22-22-22
a.首先在源端系统的ARP缓冲中查找是否有目的端的地址映射表,如果有,那么就可以直接传送数据而不用ARP解析地址
b.如果没有的话,那么源端系统A以广播的方式发起一个ARP请求分组,ARP请求分组的内容是:“我的IP地址是10.10.10.1,MAC地址是11-11-11-11-11-11,请IP地址为10.10.10.3的端系统告诉我你的MAC地址“
c.子网中所有运行ARP进程的端系统都会收到这个ARP请求分组,如果其他的端系统收到后检查不是自己的IP,便会丢弃该ARP请求
d.如果端系统B收到后。检查发现是自己的IP地址,B就会响应A的请求,给A单播自己的MAC地址,回应的内容大致是:“我的IP地址是10.10.10.3,MAC地址是22-22-22-22-22-22”。并且将A的IP和MAC地址存储在B的ARP缓冲中
e.端系统A收到端系统B给自己的响应分组后,将B的IP到MAC地址的映射存储在本地的ARP表中
当下次A再次向B发送数据时,就不用再执行上边的ARP过程了。
2.两个端系统位于不同的子网内部时:
源端系统A的IP地址:10.10.10.1
源端系统A的MAC地址:11-11-11-11-11-11
所在的路由器左接口的IP:10.10.10.4
所在的路由器左接口的MAC:44-44-44-44-44-44
所在路由器右接口的IP地址:10.10.11.6
所在路由器右接口的MAC地址:66-66-66-66-66-66
目的端系统B的IP地址:10.10.11.5
目的端系统B的MAC地址:55-55-55-55-55-55
a.端系统A首先利用子网的网络地址和目的端所在的网络地址进行比较,发现并没有在一个子网内,因此,端A首先将获得路由器的左接口的MAC地址,因为他本身配置默认网关的IP地址,所以A以广播的形式发起一个ARP请求,获得了网关(路由器的左接口)的MAC地址
b.端系统A与该路由器的左接口进行数据帧的传送(包括了A向B的ARP请求,有自己的IP、MAC、还有目的B的IP)
c.该子网的路由器适配器发现有链路层数据帧寻址,就将此数据帧向上传递给路由器的网络层,此时,该路由器通过路由转发表将该数据报转发到了正确的接口(路由器的右接口)
d.右接口将ARP数据报中的目的IP与该子网内的网络地址进行比较,发现是同一子网,于是该接口以广播的形式发起一个ARP请求,接收到B的MAC地址后,路由器右侧的接口向端系统B发送数据帧。
至此,完成了源端系统向目的端系统发送数据的过程。
注意:如果源端系统和目的端系统之间有多个路由器的话,可多次重复步骤3
四、ARP表中的地址映射是固定的吗?或者说如果是固定的话会不会有其他的隐患呢?
答:ARP表中的地址需要动态的更新,不是固定的。必然存在隐患。为什么呢?一端系统接口的MAC地址是固定的,但是IP地址一定是固定的吗?当然不是;二、端系统更换接口卡,或者一个端系统未开机的情况下,他的地址映射表是变化的,所以我们需要动态的更新映射的内容。如果该映射表中的内容是固定不变的话,那么如果一个端系统C改变了自己使用的网络适配器,那么当端系统A向端系统C发送数据帧时,就会发送到以前的MAC地址上,造成通信失败,故ARP协议中采用了寿命值的方法对存储的ARP表中的映射进行设置寿命(TTL 值为10~20分钟),超时就会从ARP表中删除该表项,重新进行ARP过程。
五、ARP有没有什么风险?
答:有,因为这个协议建立在端系统之间相互信任的基础上,所以当ARP请求发起时,端系统之间会不用检查直接存储在本地的ARP缓冲中,这样就有攻击者趁机进行ARP欺骗。首先,它会以目的端系统对ARP请求进行响应,将自己的AMC地址发送给源端系统,而源端系统接收到MAC地址后又不会进行检查,而是直接将IP和MAC的映射存储在本地的缓冲中,这样以后每次源端向目的端发送数据帧,都会经过攻击者的端系统。这个就是著名的ARP欺骗。
六、有没有什么措施可以防御ARP欺骗的?
答:1.不要将信任建立在IP或者AMC上,而应该建立在IP+MAC上
2.管理员定期用响应的IP包中获得一个RARP请求,然后检查ARP响应的真实性
3.使用硬件屏蔽主机,设置好路由,确保IP地址到达合法的路径,注意:使用交换集线器和网桥无法阻止ARP欺骗
4.使用防火墙链接监控网络
5.若感染了ARP病毒,可以清空ARP缓存、指定ARP对应关系、添加路由信息、使用防病毒软件等方式解决。
七、什么是RARP?
答:反向地址转换协议,是局域网的物理机器从网关服务器的ARP表中或者缓存中根据MAC地址请求IP地址的协议,其功能与地址解析协议相反。