janusng 寫:弟一直也是只打 workgroup;host/folder 或 domain;host/folder,沒有提供 username和 password,它會在找到 server 後,再出 dialog box 問回 domain、username 和 password 的。
試過有 WINS、無 WINS、NetBIOS、或 NetBEUI 也試過了,基本上也可行。
似乎還有點我們沒有留意的地方,似乎 ulysses 兄弄錯了。

問題不是無法建立連線或是認證不過,而是根本就找不到那台電腦在哪裡,也就是 Naming Resolution 的問題。Windows 上處理 Naming Resolution 是利用 WINS、Broadcasting、Host-table 順序進行,Active Directory 以後又加上 DNS 以及 Reverse DNS(用來作驗證)。
在沒有 Domain 的 Workgroup 中,Windows 使用另外一個叫做 Browsing Controller 的機制來負責 Naming Resolution。每台機器在連上網路時都隨機或者預先設定一個 Priority,在同一個 Broadcast 網域中所有電腦都參考自己與別人的 Priority,再依照某個複雜規則遴選出一台 Primary(還是 Master?忘了)Browsing Controller,以這台 Primary Brosing Controller 當作是網芳裡電腦列表的依據。
理論上 Windows 網路用的 Protocol 是 NetBEUI,是一個以 Broadcast 網域為主的 Protocol。但是在 2000 以後加上了 NetBIOS over TCP/IP,XP 之後又把 NetBIOS over TCP/IP 加以修改變成了主要的通訊協定,因此 2000 的網芳分享協定 SMB 與 XP 的網芳分享協定 CIFS 不是完全相容。Samba 的協定則是介於兩者之間。
另外 XP-Home 和 XP-Pro 之間的分享協定也不同,XP Home 是無法直接用網芳和 2000/XP-Pro 互連的。XP-Home 需要外掛驅動程式、並且手動修改 Registry 一堆東西,才能連到 2000/XP-Pro 的網路。
在下不曉得 M$ 把事情複雜化到前後版本不相容到底是何居心,只知道在網路中聽到 XP 就頭皮發麻。
比卡超 寫:這不就是最後答案嗎?
在不同子網域的情況下,需要有WINS或AD等Service才可做到NetBIOS name resolution。
在相同子網域的情況下,其中一台NetBIOS機器會成為Master Browser並提供NetBIOS name resolution service予其他相同子網域的機器。
跨子網域的測試需要手動設定 Primary Browsing Controller 和 Backup Browsing Controller,彼此間以 NetBIOS over TCP/IP 互相通訊,這一點我知道。但之前的測試不是跨子網域的測試,而是利用不同子網域來建立一個獨立的網路來屏除 Broadcasting 的干擾。第一個實驗是當 XP/Mac 都設在辦公室子網域 192.168.1.* 中的狀況,第二個實驗則是把 XP/Mac 全都設在一個獨立子網域 192.168.254.* 中的狀況。
在下對這個答案不是很滿意,所以剛剛趁著辦公室的電腦大多都還沒開機又測試了一下,結果發現直接在辦公室子網域中使用 [smb://ARCHER] 就可以成功建立連線。
根據以上三個實驗可以推論出,辦公室網路的 Naming Resolution 確定是被『某台』或『某些』電腦給搞掛了。但是到底是什麼狀況導致這個問題,還是不清楚。
我們是研發單位,每個人都必須能自由控制網路資源,因此辦公室的網路狀況相當混亂,也沒有中央控管的 Windows Server 存在。網路中有十二個不同的 Workgroup,XP、2000 混用,也有 Linux/Samba,不確定有沒有 Windows NT/2000 Server。很有可能是因為某台手動設定的 Samba 造成 Primary Browsing Controller 遴選時出鎚,也或許是 XP、2000 使用不同的 Primary Browsing Controller 遴選機制,以致於互相無法溝通。
無論如何,這都不是 Mac 的問題了。最後結論是:Windows Naming Resolution 實在是個很爛的東西。