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

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

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

文章插图
IP地址冲突
如何解决IP地址冲突 , 我们今天不做介绍 , 留在后续的文章里详述 。咱们今天来看看PC是如何检测IP地址冲突的 , 了解其原理 , 会对我们以后的工作有帮助 。
那PC是如何检测IP地址冲突的呢?这就涉及到一种特殊ARP:免费ARP , 我们需要了解其工作原理 。
免费ARP工作原理免费ARP , 英文名称是Gratuitous ARP , 听起来有点奇怪 , 让人忍不住想:难道ARP还有收费的吗?其实是没有的 , Gratuitous翻译为免费不太准确 , 其更好的说法应该是:PC在没有人询问的情况下 , 自问自答 。
听起来还是有点不好理解 , 不过我们先看看正常ARP和免费ARP的工作流程 , 看过以后 , 就会明白了!
正常ARP工作流程
关于正常的ARP工作流程 , 相信大部分人都有所了解 , 我们用下面的例子做简单的描述:
检测IP地址冲突的幕后英雄:免费ARP,一分钟了解一下

文章插图
正常ARP工作原理
假设3台PC都在一个VLAN里 , 并且它们都配置相同的网段 , PC1想要访问PC2 , 必须先要获取到PC2的mac地址:
  1. PC1首先会发送ARP Request来请求PC2的MAC地址:“who has 10.1.1.2, tell 10.1.1.1”;
  2. PC2收到以后 , 就会发送ARP Reply:“10.1.1.2 is at 00-00-00-22-22-22”;
  3. PC1收到这个Reply , 会记录在自己的ARP表项中 , 以后向PC2发送的所有数据 , 目的MAC地址都会使用这个值进行填充 。
这就是正常的ARP工作原理 , 是不是很熟悉呢?我们再来看看免费ARP的工作原理 。
免费ARP工作原理
免费ARP是何时发送的呢?大部分都是在PC想要使用某个IP地址的时候 。不论是手工配置还是通过DHCP获取IP , PC在正式使用IP地址之前 , 都会发送免费ARP , 以确认这个IP是可用的 。
我们还是以一个例子来阐述:
检测IP地址冲突的幕后英雄:免费ARP,一分钟了解一下

文章插图
免费ARP
假设3台PC都在一个VLAN里 , PC2已经配置10.1.1.1/24这个地址 , 由于某种原因 , PC1也想使用10.1.1.1/24这个地址:
  1. 在PC1配置10.1.1.1/24时 , 就会发送一个特殊的ARP Request报文 , 请求自己的MAC地址:“who has 10.1.1.1, tell 10.1.1.1”;
  2. 如果PC1没有收到任何的ARP Reply , 则说明网络中没有人使用10.1.1.1这个地址 , PC1可以正常使用;
  3. 但是如果PC1收到ARP Reply , 例如这个例子中 , PC2会给PC1回复ARP Reply , 则表明在这个网络中 , 已经有人使用这个地址 , 有地址冲突了 , PC1需要换别的地址 。
是不是也觉得不复杂呢?上面的描述 , 用一句话概括就是:免费ARP收到回复就表明有冲突 , 没有收到回复就可以正常使用 。
看到这里会不会有点疑问 , 免费ARP和正常的ARP如何区别呢?什么样的ARP才能被称为免费ARP呢?我们来看下面的内容 。
如何区分免费ARP和正常ARP?其实想要区分免费ARP和正常ARP , 只需要看它们的报文内容就可以了 , 如下图:正常的ARP报文 , 发送者IP和目标IP是不一样的 , 目标IP填写是目的PC的IP地址;
检测IP地址冲突的幕后英雄:免费ARP,一分钟了解一下

文章插图
正常ARP报文
而免费ARP , 其发送者IP和目标IP是一样的 , 目标IP填写的也是发送者的IP , 如下图所示:
检测IP地址冲突的幕后英雄:免费ARP,一分钟了解一下


推荐阅读