龙空技术网

检测IP地址冲突的幕后英雄:免费ARP,一分钟了解一下

网络之路 45130

前言:

现时小伙伴们对“ip地址 测试”都比较讲究,兄弟们都需要学习一些“ip地址 测试”的相关知识。那么小编也在网摘上搜集了一些有关“ip地址 测试””的相关文章,希望各位老铁们能喜欢,同学们一起来学习一下吧!

概述

在日常工作中,我们会经常遇到IP冲突问题,尤其在使用静态IP的小型网络中,更是常见。究其原因,是因为人的思维在某些场景中是类似的,总有人也想要和你使用一样的IP。解决IP地址冲突需要专业设备和特殊配置,大部分时候我们都没有这样的条件,所以遇到IP地址冲突时,我们基本上都会在办公室吼上一嗓子:“谁用192.168.1.xx这个地址,我正在用呢!”。要是有回应还好,要是没回应,基本你只能换个地址了,IP地址冲突问题很难排查。

IP地址冲突

如何解决IP地址冲突,我们今天不做介绍,留在后续的文章里详述。咱们今天来看看PC是如何检测IP地址冲突的,了解其原理,会对我们以后的工作有帮助。

那PC是如何检测IP地址冲突的呢?这就涉及到一种特殊ARP:免费ARP,我们需要了解其工作原理。

免费ARP工作原理

免费ARP,英文名称是Gratuitous ARP,听起来有点奇怪,让人忍不住想:难道ARP还有收费的吗?其实是没有的,Gratuitous翻译为免费不太准确,其更好的说法应该是:PC在没有人询问的情况下,自问自答。

听起来还是有点不好理解,不过我们先看看正常ARP和免费ARP的工作流程,看过以后,就会明白了!

正常ARP工作流程

关于正常的ARP工作流程,相信大部分人都有所了解,我们用下面的例子做简单的描述:

正常ARP工作原理

假设3台PC都在一个VLAN里,并且它们都配置相同的网段,PC1想要访问PC2,必须先要获取到PC2的MAC地址:

PC1首先会发送ARP Request来请求PC2的MAC地址:“who has 10.1.1.2, tell 10.1.1.1”;PC2收到以后,就会发送ARP Reply:“10.1.1.2 is at 00-00-00-22-22-22”;PC1收到这个Reply,会记录在自己的ARP表项中,以后向PC2发送的所有数据,目的MAC地址都会使用这个值进行填充。

这就是正常的ARP工作原理,是不是很熟悉呢?我们再来看看免费ARP的工作原理。

免费ARP工作原理

免费ARP是何时发送的呢?大部分都是在PC想要使用某个IP地址的时候。不论是手工配置还是通过DHCP获取IP,PC在正式使用IP地址之前,都会发送免费ARP,以确认这个IP是可用的。

我们还是以一个例子来阐述:

免费ARP

假设3台PC都在一个VLAN里,PC2已经配置10.1.1.1/24这个地址,由于某种原因,PC1也想使用10.1.1.1/24这个地址:

在PC1配置10.1.1.1/24时,就会发送一个特殊的ARP Request报文,请求自己的MAC地址:“who has 10.1.1.1, tell 10.1.1.1”;如果PC1没有收到任何的ARP Reply,则说明网络中没有人使用10.1.1.1这个地址,PC1可以正常使用;但是如果PC1收到ARP Reply,例如这个例子中,PC2会给PC1回复ARP Reply,则表明在这个网络中,已经有人使用这个地址,有地址冲突了,PC1需要换别的地址。

是不是也觉得不复杂呢?上面的描述,用一句话概括就是:免费ARP收到回复就表明有冲突,没有收到回复就可以正常使用。

看到这里会不会有点疑问,免费ARP和正常的ARP如何区别呢?什么样的ARP才能被称为免费ARP呢?我们来看下面的内容。

如何区分免费ARP和正常ARP?

其实想要区分免费ARP和正常ARP,只需要看它们的报文内容就可以了,如下图:正常的ARP报文,发送者IP和目标IP是不一样的,目标IP填写是目的PC的IP地址;

正常ARP报文

而免费ARP,其发送者IP和目标IP是一样的,目标IP填写的也是发送者的IP,如下图所示:

免费ARP报文

是不是一目了然了?在实际工作中,如果我们抓取到发送者IP和目标IP相同的ARP报文,就可以断定这个ARP就是免费ARP报文。

IP地址冲突

理解免费ARP工作原理以后,再看PC如何检测IP地址就非常容易了。

PC检测IP冲突就是使用免费ARP来进行的:

当PC发送免费ARP,如果收到回复,就会立刻上报PC上层模块,告诉操作系统网络中有地址冲突,这个IP地址不能使用;PC操作系统也会在界面上给出如下图类似的提示:

PC提醒IP地址冲突

这就是IP地址的冲突检测机制。

总结

最后我们再总结一下IP地址冲突检测的工作原理:PC使用IP地址之前,会先发送免费ARP报文:

如果收到回复,则说明有地址冲突,这个IP不能使用;如果没有收到回复,则说明网络中没有PC使用这个IP地址,可以正常使用

如果您还是对IP地址的冲突检测机制有疑问,欢迎留言讨论!也非常高兴您关注我的头条号,一起讨论网络问题,谢谢!

标签: #ip地址 测试