一、診斷方法
為了降低設(shè)計(jì)的復(fù)雜性,增強(qiáng)通用性和兼容性,計(jì)算機(jī)網(wǎng)絡(luò)都設(shè)計(jì)成層次結(jié)構(gòu)。網(wǎng)絡(luò)的層次結(jié)構(gòu)為我們分析和排查故障提供了非常好的組織方式。由于各層相對(duì)獨(dú)立,按層次排查能夠有效地發(fā)現(xiàn)和隔離故障。
通常有兩種逐層排查方式,一種是從低層開(kāi)始排查,適用于物理網(wǎng)絡(luò)不夠成熟穩(wěn)定的情況,如組建新的網(wǎng)絡(luò)、重新調(diào)整網(wǎng)絡(luò)線纜、增加新的網(wǎng)絡(luò)設(shè)備;另一種是從高層開(kāi)始排查,適用于物理網(wǎng)絡(luò)相對(duì)成熟穩(wěn)定的情況,如硬件設(shè)備沒(méi)有變動(dòng)。無(wú)論哪種方式,最終都能達(dá)到目標(biāo),只是解決問(wèn)題的效率有所差別。
具體采用哪種方式,可根據(jù)實(shí)際情況來(lái)選擇。例如,遇到某客戶端不能訪問(wèn)Web服務(wù)的情況,如果管理員首先去檢查網(wǎng)絡(luò)的連接線纜,就顯得太悲觀了,除非明確知道網(wǎng)絡(luò)線路有所變動(dòng)。比較好的選擇是直接從應(yīng)用層著手,可以這樣來(lái)排查:首先檢查客戶端Web瀏覽器是否配置正確,有無(wú)設(shè)置代理,主機(jī)DNS是否設(shè)置正確等,可嘗試使用瀏覽器去訪問(wèn)另一個(gè)Web服務(wù)器;如果瀏覽器沒(méi)有問(wèn)題,再測(cè)試網(wǎng)絡(luò)的連通性。對(duì)這種問(wèn)題,如果從底層開(kāi)始逐層排查也能最終解決問(wèn)題,只是花費(fèi)的時(shí)間太多了。如果碰巧是線路問(wèn)題,從高層開(kāi)始逐層排查也要浪費(fèi)時(shí)間。
在實(shí)際應(yīng)用中往往都采用一種折中的方式,凡是涉及到網(wǎng)絡(luò)通信的應(yīng)用出了問(wèn)題,直接從位于中間的網(wǎng)絡(luò)層開(kāi)始排查,首先測(cè)試網(wǎng)絡(luò)連通性,如果網(wǎng)絡(luò)不能連通,再?gòu)奈锢韺樱y(cè)試線路)開(kāi)始排查;如果網(wǎng)絡(luò)能夠連通,再?gòu)膽?yīng)用層(測(cè)試應(yīng)用程序本身)開(kāi)始排查。
在TCP/IP網(wǎng)絡(luò)中,排查問(wèn)題的第一步常常是使用ping命令。如果成功地ping到遠(yuǎn)程主機(jī),就排除了網(wǎng)絡(luò)連接出現(xiàn)故障的可能性。即使是使用ping命令,也有一個(gè)逐步檢測(cè)判斷的步驟。例如,假設(shè)有一個(gè)如下圖所示的網(wǎng)絡(luò):
這里要測(cè)試網(wǎng)絡(luò)能否正常通信。通常從ping遠(yuǎn)程主機(jī)開(kāi)始(例如在主機(jī)A上ping主機(jī)B),成功說(shuō)明系統(tǒng)和網(wǎng)絡(luò)正常,失敗說(shuō)明主機(jī)離線或者網(wǎng)絡(luò)故障或者主機(jī)B禁止ping操作。失敗后再ping路由器出口地址(例中為路由器WAN口地址)來(lái)確認(rèn)主機(jī)A是否能夠通過(guò)路由器。失敗后再ping同一子網(wǎng)的網(wǎng)關(guān)(例中為路由器的LAN口地址)來(lái)確認(rèn)主機(jī)A是否能夠連接到路由器。失敗后再ping網(wǎng)卡地址來(lái)確認(rèn)網(wǎng)卡是否工作正常。失敗后再ping本地環(huán)回地址127.0.0.1來(lái)確認(rèn)TCP/IP協(xié)議軟件是否存在問(wèn)題,如果有問(wèn)題,需要重新安裝TCP/IP協(xié)議棧。這里也可以采用另外一種步驟,從ping本地環(huán)回地址127.0.0.1開(kāi)始,直到最后ping遠(yuǎn)程主機(jī)。只要成功地ping到遠(yuǎn)程主機(jī),可以判斷網(wǎng)絡(luò)問(wèn)題一般發(fā)生在更高層次。
二、檢測(cè)工具
windows系統(tǒng)為我們提供了一個(gè)命令行檢測(cè)工具,與圖形界面下工具相比,命令行檢測(cè)工具小巧適用,也提供了很多命令,對(duì)我們排查網(wǎng)絡(luò)故障有很好的幫助。下面就簡(jiǎn)單介紹幾個(gè)常用命令。
- 1、 ipconfig
ipconfig命令主要用來(lái)顯示當(dāng)前的TCP/IP配置,也用于手動(dòng)釋放和更新DHCP服務(wù)器指派的TCP/IP配置,這一功能對(duì)于運(yùn)行DHCP服務(wù)的網(wǎng)絡(luò)特別有用。
要發(fā)現(xiàn)和解決TCP/IP網(wǎng)絡(luò)問(wèn)題時(shí),通常首先檢查出現(xiàn)問(wèn)題的計(jì)算機(jī)上的TCP/IP配置。使用ipconfig /all命令可獲得全面的主機(jī)配置信息,如下圖所示。既包括總體的IP配置信息,如主機(jī)名、IP地址、DNS、MAC地址等。
- 2、 ping
ping命令用于測(cè)試IP網(wǎng)絡(luò)的連通性。只有在安裝了TCP/IP協(xié)議后才可以使用。如下圖所示:
一般使用ping命令來(lái)測(cè)試連接,向目的計(jì)算機(jī)的IP地址(或主機(jī)名)發(fā)送ICMP回應(yīng)請(qǐng)求包。可以按以下步驟測(cè)試:
(1)、ping環(huán)回地址127.0.0.1,驗(yàn)證是否在本地計(jì)算機(jī)上安裝TCP/IP以及配置是否正確。執(zhí)行命令ping127.0.0.1,如果不成功,應(yīng)安裝和配置TCP/IP之后重新啟動(dòng)計(jì)算機(jī);
(2)、ping本地計(jì)算機(jī)或網(wǎng)卡地址,驗(yàn)證是否將當(dāng)前計(jì)算機(jī)正確地添加到網(wǎng)絡(luò);
(3)、ping默認(rèn)網(wǎng)關(guān),驗(yàn)證默認(rèn)網(wǎng)關(guān)是否運(yùn)行以及能否與本地網(wǎng)絡(luò)上的本地主機(jī)通信;
(4)、ping遠(yuǎn)程主機(jī),驗(yàn)證能否通過(guò)路由器進(jìn)行通信。如果有問(wèn)題,可檢查路由器配置。
3、 arp
該命令可以查看和修改本地計(jì)算機(jī)上的ARP(地址解析協(xié)議)表項(xiàng)。該表項(xiàng)用于緩存最近將IP地址轉(zhuǎn)換成MAC地址的IP/MAC地址對(duì)。目前極為流行的ARP欺騙就是利用的這個(gè)協(xié)議。關(guān)于ARP欺騙和解決辦法,可以參考我司網(wǎng)絡(luò)教室下的《解決ARP欺騙和攻擊的方法》。
arp命令最常用的是查找同一物理網(wǎng)絡(luò)上的某主機(jī)的MAC地址,并給出相應(yīng)的IP地址。如果要想確定另外一個(gè)主機(jī)的MAC地址,通常先ping該主機(jī),然后使用命令arp –a命令,如下圖所示:
要?jiǎng)h除本地計(jì)算機(jī)上的ARP條目可以使用命令arp –d。要綁定某臺(tái)主機(jī)的IP與MAC地址可以使用命令arp –s 192.168.1.1 aa-bb-cc-dd-ee-ff,這樣這個(gè)條目就變成靜態(tài)ARP條目永遠(yuǎn)不會(huì)失效,如下圖所示:
這樣綁定的好處就是可以防止ARP病毒欺騙電腦。不過(guò)值得注意的是:這里綁定過(guò)后的條目在重啟計(jì)算機(jī)后將失效,如何使其能每次重啟后都有這樣的綁定呢?我們可以新建一個(gè)批處理文件如static_arp.bat,注意后綴名為bat。編輯它,在里面加入我們剛才的命令:
保存就可以了,以后可以通過(guò)雙擊它來(lái)執(zhí)行這條命令,還可以把它放置到系統(tǒng)的啟動(dòng)目錄下來(lái)實(shí)現(xiàn)啟動(dòng)時(shí)自己執(zhí)行。打開(kāi)電腦“開(kāi)始”->“程序”,雙擊“啟動(dòng)”打開(kāi)啟動(dòng)的文件夾目錄,把剛才建立的static_arp.bat復(fù)制到里面去:
好了,以后電腦每次啟動(dòng)時(shí)就會(huì)自己執(zhí)行arp –s命令了。
通過(guò)上面的講解,在遇到類似的網(wǎng)絡(luò)問(wèn)題的時(shí)候,我們就可以很輕松的解決。 |