在日常工作中,我们会经常遇到IP冲突问题,尤其在使用静态IP的小型网络中,更是常见。究其原因,是因为人的思维在某些场景中是类似的,总有人也想要和你使用一样的IP。解决IP地址冲突需要专业设备和特殊配置,大部分时候我们都没有这样的条件,所以遇到IP地址冲突时,我们基本上都会在办公室吼上一嗓子:“谁用192.168.1.xx这个地址,我正在用呢!”。要是有回应还好,要是没回应,基本你只能换个地址了,IP地址冲突问题很难排查。
IP地址冲突
如何解决IP地址冲突,我们今天不做介绍,留在后续的文章里详述。咱们今天来看看PC是如何检测IP地址冲突的,了解其原理,会对我们以后的工作有帮助。
那PC是如何检测IP地址冲突的呢?这就涉及到一种特殊ARP:免费ARP,我们需要了解其工作原理。
免费ARP,英文名称是Gratuitous ARP,听起来有点奇怪,让人忍不住想:难道ARP还有收费的吗?其实是没有的,Gratuitous翻译为免费不太准确,其更好的说法应该是:PC在没有人询问的情况下,自问自答。
听起来还是有点不好理解,不过我们先看看正常ARP和免费ARP的工作流程,看过以后,就会明白了!
正常ARP工作流程
关于正常的ARP工作流程,相信大部分人都有所了解,我们用下面的例子做简单的描述:
正常ARP工作原理
假设3台PC都在一个VLAN里,并且它们都配置相同的网段,PC1想要访问PC2,必须先要获取到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这个地址:
是不是也觉得不复杂呢?上面的描述,用一句话概括就是:免费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报文。
理解免费ARP工作原理以后,再看PC如何检测IP地址就非常容易了。
PC检测IP冲突就是使用免费ARP来进行的:
PC提醒IP地址冲突
这就是IP地址的冲突检测机制。
最后我们再总结一下IP地址冲突检测的工作原理:PC使用IP地址之前,会先发送免费ARP报文:
如果您还是对IP地址的冲突检测机制有疑问,欢迎留言讨论!也非常高兴您关注我的头条号,一起讨论网络问题,谢谢!