網內三種衝突現象的情況分析

IP地址衝突,主機名(計算機名)衝突這樣的提示,我相信您一定見過或者親臨過,本文就是想借這個機會和大家一起討論一下這類衝突現象和原因。

 

通過本文,你可以瞭解到

 

◆比較常見的衝突方式有哪些

◆計算機名字相同,是否就會發生衝突?

◆IP衝突的原理是什麼

◆簡述Gratuitous ARP

     
爲了便於分析,我搭建了一個臨時網絡環境,拓撲圖和大致配置如圖示:

     在這個基礎環境中,爲了將主機名和Netbios名區分開,我將兩臺主機的主機名和Netbios名特意區分開,因爲在實驗中會用到,同時也是爲了避免混淆。

     爲了不影響這臺主機之間的連通性,我們將XP1和XP2的防火牆有關訪問的端口打開,即將防火牆中【例外】選項卡中的【文件和打印共享】打開即可,如下圖:

這樣操作後,看可以保證基本的通訊不受影響。

     下面的試驗中,我將分別修改XP1主機的主機名、Netbios名、IP地址等三個關鍵要素的屬性,來模擬衝突現象並進行相關測試和分析。

注:每一種情況的測試環境都是相互獨立的,互不影響。

 

第一種情況:當兩臺主機的主機名相同時

     也就是說,將XP1的主機名:XP1修改爲XP2,我們來看一下會發生什麼事。

首先查看一下XP1的主機名:

這裏所說的計算機名其實就是主機名,沒有什麼區別。

現在將XP1改爲XP2。

改後提示要重啓一下,其實這個修改是即時生效的,但爲了保證試驗的嚴謹,還是需要按照常規重啓一次比較穩妥。

這裏請大家注意,當我們將主機名修改爲XP2後,相對應的Netbios名也會自動跟隨主機名變更爲XP2。

OK,此時我們將兩臺主機直連。通常情況下,當在同一網段中,如果兩臺計算機的主機名相同時,就會產生衝突提示,但實際上,在這種情況下,並沒有出現提示。

那如何證明兩臺主機沒有產生任何衝突呢? 這裏我們依然通過協議分析工具來進行驗證,下圖是兩臺主機之間的數據包交換情況:

可見,儘管兩臺主機的計算機名字都是XP2,但第一臺主機的Netbios名是XP2,第二臺是XP2BIOS,在註冊自己各自的Netbios名時很順利,沒有產生衝突,具體表現就是客戶端桌面風平浪靜。

總結:在同一網絡中,當主機名相同,主要Netbios名不相同,就不會產生衝突。

 

第二種情況:當兩臺主機的Netbios名相同時

   Netbios名是早期系統中比如Win98等,主機之間通訊的主要基礎和手段,系統中NBNS服務可以實現Netbios名和IP地址之間的對應和解析(具體內容請參考本博客中有關Netbios的內容)。

     第二種情況中,我們會將XP1的Netbios名改成和XP2的一樣。我們先查看一下XP1的Netbios名:

現在我們通過註冊表,將XP的Netbios名改爲和XP2的一樣,即 XP2BIOS

打開註冊表,並找到如下位置,按照下圖提示進行修改

然後,請注意,一定要重啓。

重啓後,再來查看一下XP1的Netbios名:

順帶檢查一下主機XP2的Netbios名:

條件已經具備,現在我們可以進行測試了。

當我們將兩臺主機進行直連時,看看會出現什麼狀況

經過短暫的連接過程後,在XP2的桌面上出現一個警告提示

此提示告知用戶,在網絡上有一個重複的名稱,其實這裏所謂的【Name】

就是Netbios名。

我們看一下當時的數據包情況

可以看到,早10:22:47這個時間點上,XP1和XP2兩臺主機分別通過廣播形式宣告並註冊各自的Netbios名,但由於2臺主機通告的Netbios一樣,因此就會產生突出,我把衝突的情況彙總了一下,並將其整理成一幅圖,如下

請大家留意上圖中框選的時間,可以看到當出現Netbios名稱衝突時,系統的日誌、協議層以及用戶桌面都會出現相應的提示,只是各自的表現方式不盡相同而已。

圖中出現的NetBT也就是NetBIOS。

那,出現這樣的提示會對系統有什麼影響呢?這樣說吧,當系統中的應用程序或服務不是很依賴Netbios名的話,這種衝突對系統而言影響會很小,因爲我們還有另外一套解析系統,那就是,由DNS服務器提供的計算機主機名(嚴格來講是FQDN名)和IP之間的解析,儘管Netbios也可以類似的解析,且它也有自己完整的解析服務體系和規範,但相對而言,主機名和IP用的更爲廣泛。畢竟現在的網絡中,TCP/IP協議簇的使用在網絡操作系統中已經非常普遍了。

總結:在同一網絡中,當Netbios名相同時,就會產生衝突。

 

第三種情況:當兩臺主機的IP相同時

  最精彩的總要發到最後!其實,不用測試就知道結果的,當IP相同時,一定會產生衝突提示。 那果真如此??? 什麼都不說,讓實驗來證明吧!

   現在,將主機XP1的IP地址修改爲192.168.1.2(過程略),然後將兩臺主機連通。

很快,在XP2的桌面右下角出現一個衝突提示:

在XP1主機上,系統則在努力獲取網卡

但實際上,這樣顯然是徒勞的,因爲指定的IP地址和別的主機衝突,所以這樣的狀態會一直持續下去。

我把衝突發生時,協議、系統等產生的變化整理成一張圖,如下:

這樣大家應該看的更清楚了。

    現象已經看到了,我們來一起分析一下,爲什麼會出現衝突提示呢?這個提示是誰發出的呢? 其實只要認真看那張的圖,就不難發現,在連接初始化時候,系統會利用ARP協議來檢測網上是否有主機使用就自己的IP,也就是我們所說的IP衝突檢測。此時,ARP協議會發送一個Gratuitous ARP(免費ARP)這樣的數據包,目的就是爲了檢測網內是否有何自己相同的IP,如果沒有,則自動忽略,如果有,如果第三種情況,就會在客戶端、系統日誌中出現提示。關於Gratuitous ARP的內容,會在下一節中詳細描述。

    既然知道是由免費ARP發出的衝突提示,那是否有辦法禁用這個提示呢?其實是有辦法的,打開註冊表並定位到

HKEY_LOCAL_ MACHINE \System\CurrentControlSet\Services\TcpIp\Parameters

新建一個名爲ArpRetryCountDWORD值,並將其值設置爲0即可。不過這僅僅是個掩耳盜鈴的方法,實際上沒有太大用處,至少在這樣的環境下是這樣的。

   IP衝突所帶來的危害,我想應該不用多說了,在TCP/IP大行其道的今天,IP出現問題,基本上網絡也就癱瘓了。所以,平時我們在工作中應竭力避免IP地址衝突,一旦出現,問題可能會很嚴重。對服務器而言,那就是致命的!

   IP地址衝突,主機名(計算機名)衝突這樣的提示,我相信您一定見過或者親臨過,本文就是想借這個機會和大家一起討論一下這類衝突現象的原因,以及是否可以避免等問題。

總結:在同一網絡中,當IP地址相同時,就會產生衝突。但可以通過一些辦法禁用這個衝突提示。

以上對三種衝突情況進行了簡要分析,希望對大家有一些幫助,謝謝!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章