2008-01-25 17:18:18 Kenny

認清共用協議 解決網路不通故障

最近遭遇的一個網路共用文件訪問故障非常奇怪,以某一台固定的主機為例,不同時間訪問另外一台主機的共用文件時,卻出現時通時不通的現象。

  現象介紹

  具體表現為在主機上運行“\\IP地址”命令,來嘗試連接另外一台主機,輸入正確的用戶名和密碼之後卻提示“當前沒有可用的登錄伺服器來服務登錄請求”,但是過一陣子再使用相同的操作又有可能正常訪問。

  在對希望互訪的兩台電腦進行檢查,發現它們有一個共同的特點,那就是它們都配置了兩個IP地址。當前內網使用的IP地址是192.168.0網段的,網關為192.168.0.1;但為了讓幾臺伺服器之間進行文件交換,不讓其他客戶端訪問,因此在伺服器上又添加了10.10.20網段的IP地址,由於只是內網訪問,因此就沒有配置10.10.20網段的網關。

  共用協議介紹

  碰到這樣的問題只能求助於網路。在網路上經過一翻搜索之後,才發現是因為共用協議才引發這個故障的。要想徹底認識這個問題,必須先了解共用協議的工作原理。

  在Windows系統中,文件共用是通過SMB協議來完成的。SMB協議有兩種工作方式,分別為NetBios Over TCP/IP(簡稱NetBT)和Direct hosting。當採用NetBT方式通信時,會通過NetBIOS介面來進行連接,分佔別用UDP137、138和TCP139端口,其中137端口用來進行名字解析,138端口傳遞數據包,139用於會話服務,進行文件傳輸,因此最重要的就是139端口了;而採用Direct hosting則更為簡單,直接跳過NetBIOS直介面,不需要進行名稱解析,直接使用TCP445端口傳輸。

  在早期的Windows系統之中,主要使用NetBIOS進行通訊,但是到了Windows 2000後,又新增加了Direct hosting方式,但並沒有取消NetBT。同時NetBT是隨網卡綁定的,並且只能綁定在網卡的第一個IP地址上,在本例中,即192.168.0網段的IP地址;而Direct hosting卻沒有這樣的限制。在本例中,訪問10.10.20網段的其他主機時,會優先使用自己綁定的同網段的IP地址進行連接,而不會採用192.168.0網段的地址進行連接。看到這裡,大家或許已經明白了。問題的關鍵就在於主機不能自動識別採用正確的連接方式,而是採取的類似“隨機搶答”的方式,既可能採用NetBT,也可能採用Direct hosting,當選擇前者時就會出現不通的故障,使用後者時則完全正常。

  故障解決

  知道了其真實原因後,解決起來就方便多了,我們只需要取消NetBT方式,強制使用Direct hosting即可。打開本地連接的屬性窗口,雙擊其中的“Internet協議(TCP/IP)”,在打開的窗口中單擊“高級”按鈕,再切換到“WINS”選項卡,將其中的“NetBIOS設置”設為“禁用TCP/IP上的NetBIOS”選項,然後單擊“確定”按鈕保存設置就可以了(圖1)。

   

圖1

    其實,解除問題的步驟是非常簡單的。但是作為優秀的網路管理人員,在網路出現故障的時候,不僅要能夠及時排除,而且能夠知道引發故障的原因,對相關的原理能夠有充分的了解,這樣會提高網路素養,提高自己的綜合能力將有極大的幫助。