為了降低設計的复雜性,增強通用性和兼容性,計算机网絡都設計成層次結构。這种分層体系使多种不同硬件系統和軟件系統能夠方便地連接到网絡。管理員在分析和排查网絡故障時,應充分利用网絡這种分層的特點,快速准确地定位并排除故障。然而在實際故障排查過程中,這种分層方法往往被忽略,導致故障排查效率降低。
兩种逐層排查方式
OSI的層次結构為管理員分析和排查故障提供了非常好的組織方式。由于各層相對獨立,按層排查能夠有效地發現和隔离故障,因而一般使用逐層分析和排查的方法。
通常有兩种逐層排查方式,一种是從低層開始排查,适用于物理网絡不夠成熟穩定的情況,如組建新的网絡、重新調整网絡線纜、增加新的网絡設備﹔另一种是從高層開始排查,适用于物理网絡相對成熟穩定的情況,如硬件設備沒有變動。無論哪种方式,最終都能達到目標,只是解決問題的效率有所差別。
根据具体情況選擇排查方式
具体采用哪种方式,可根据具体情況來選擇。例如,遇到某客戶端不能訪問Web服務的情況,如果管理員首先去檢查网絡的連接線纜,就顯得太悲觀了,除非明确知道网絡線路有所變動。比較好的選擇是直接從應用層著手,可以這樣來排查﹕首先檢查客戶端Web瀏覽器是否正确配置,可嘗試使用瀏覽器訪問另一個Web服務器﹔如果Web瀏覽器沒有問題,可在Web服務器上測試Web服務器是否正常運行﹔如果Web服務器沒有問題,再測試网絡的連通性。即使是Web服務器問題,從底層開始逐層排查也能最終解決問題,只是花費的時間太多了。如果碰巧是線路問題,從高層開始逐層排查也要浪費時間。
在實際應用中往往采用折衷的方式,凡是涉及到网絡通信的應用出了問題,直接從位于中間的网絡層開始排查,首先測試网絡連通性,如果网絡不能連通,再從物理層(測試線路)開始排查﹔如果网絡能夠連通,再從應用層(測試應用程序本身)開始排查。
首先使用ping命令測試連通性。在TCP/IP网絡中,排查网絡問題的第一步常常是使用ping命令。如果能夠成功地ping到遠程主机,就排除了网絡連接出現故障的可能性。即使是使用ping命令,也有一個逐步檢測判斷的步驟。

圖1 网絡示意圖
例如,假設有一個如圖1所示的网絡,這里要測試网絡能否正常通信。通常從ping遠程計算机開始(例中在主机A上ping主机B),成功說明系統和网絡正常,失敗說明主机离線或网絡故障。
失敗后再ping同一子网的网關(例中為192.168.1.1)來确認主机A是否能夠連接到路由器。失敗后再ping環回地址127.0.0.1來确認TCP/IP協議軟件是否有問題,如果有問題,需要重新安裝TCP/IP協議軟件。也可以采用另一种步驟,從ping環回地址127.0.0.1開始,失敗說明TCP/IP協議軟件安裝有問題,如果成功再ping同一子网的网關,如果成功再ping其他网關(路由器)逐步排查网絡各個環節,直到最后ping遠程主机。只要成功地ping到遠程主机,可以判斷网絡問題一般發生在更高層次。
分層排查网絡的措施

圖2 分層排查网絡的措施
每個网絡層次都有相應的檢測排查工具和措施,各層的基本排查措施如圖2所示。在最底層的物理層,專業人員往往采用專門的線纜測試儀,沒有測試儀的可通過网絡設備(网卡、交換机等)信號燈進行目測。數据鏈路層的問題不多,對于TCP/IP网絡,可以使用簡單的arp命令來檢查MAC地址(物理地址)和IP地址之間的映射問題。
网絡層出現問題的可能性大一些,路由配置容易出現錯誤,可通過route命令來測試路由路徑是否正确,也可使用ping命令來測試連通性。協議分析器(如微軟提供的网絡監視器)具有很強的檢測和排查能力,能夠分析鏈路層及其以上層次的數据通信,當然包括傳輸層。至于應用層,可使用應用程序本身進行測試。