概述
在日常工作中,我們會經常遇到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地址的沖突檢測機制有疑問,歡迎留言討論!也非常高興您關注我的頭條號,一起討論網絡問題,謝謝!