WindowsLinuxMac網路發現協議之-八大金剛

分析/驗證對比常見區域網服務發現協議在Windows/Linux/Mac等不同系統下的支援和表現

網路鄰居發現協議大比拼,Windows/Linux/Mac系統區域網服務發現協議之-八大金剛

在使用不同系統的智慧硬體時,如常見的樹莓派/Openwrt路由器/Debian/Fedora/Windows/Mac等系統是,系統間相互發現以及 網路共享本應是系統的基礎服務,無需使用者過多參與。不過現實旺旺和理想之間的差距讓我們驚訝,不同系統相互之間的發現以及 共享並沒有那麼輕鬆。

開發的硬體裝置無法在常見系統的網路鄰居正確的顯示出來,實在是很喪氣的事情。

那麼,就係統來看看區域網服務發現協議在不同系統上的支援及表現。

我的伺服器啊,你在哪裡

想要訪問區域網網路裡面的裝置,遠沒有應有的輕鬆。 每次新裝系統或者裝置入網,總是有這樣或者那樣的問題,哎,我的伺服器啊,你在哪裡。

先看看最簡單和常用的ping工具,這麼簡單和實用的工具,簡單的搜尋竟然有

三千八百萬

條記錄

Windows/Linux/Mac網路發現協議之-八大金剛

pdnas-ping-linux-windows

大名鼎鼎的樹莓派,用起來想來應該更簡單一些,可事實往往觸目驚心,僅僅是ping通的問題,也有

三百萬

的記錄

Windows/Linux/Mac網路發現協議之-八大金剛

![pdnas-raspberry-pi-ping]](https://gitee。com/pdusb/pdboltblog/raw/master/pdnas/pdnas-web-console-admin。jpg)

再來看看最常見的檔案共享服務,也有

兩千萬

之巨

Windows/Linux/Mac網路發現協議之-八大金剛

pdnas-windows-share

這都2120年了,為什麼這麼常見的服務還有這麼多為問題呢。

乾貨放前面

各系統網路鄰居正常工作的協議彙總:

OS

Windows

Linux

Macos

網路鄰居顯示 UPnP + WS-Discovery mDNS + SMB mDNS(伺服器側特別配置) + SMB

網路鄰居共享 WS-Discovery + SMB mDNS + SMB mDNS(伺服器側特別配置) + SMB

Linux和Macos比較相似,但是實現起來還是有明顯的差異,下文會具體描述。

Windows

Windows一如既往的走在自己的路上,網路鄰居發現協議自搞一套。

Windows 10的WS-Discovery

Web Services Dynamic Discovery (WS-Discovery) WS-Discovery

下圖是此協議的抓包

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-WS-Discovery-抓包

此協議和UPnP極其相似,都是基於SSDP協議衍生的XML表達的,如果不支援此協議,則無法在Windows10 的網路鄰居里面顯示為PC,無法直接點選訪問共享。

支援此協議後,Windows10的網路鄰居里面會在計算機型別的裡面顯示裝置。

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-WINDOWS-NETWORK-NEIGHBOR-COMPUTER

UPnP協議

UPnP 是早期路由器常用的協議,目前從不同系統的驗證來看,僅有Windows預設在檔案瀏覽器裡面支援,Ubuntu和MacOS都需要單獨配置或者應用程式才能瀏覽。

這個協議目前各種路由器基本都能支援,不過其安全問題頻出,作用並不明顯。

此協議在Windows系列裡面基本都能支援,會在網路鄰居里面顯示出裝置的資訊。

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-WINDOWS-UPNP-INFORMATION

MacOS

mDNS協議

MAC整體表現和Linux比較接近,雙方使用的協議也是類似,只是在細節處理上有些區別。

mDNS 協議本身應用比較廣泛,MAC比較早就支援。在Mac新版本里面,網路鄰居預設可以發現mDNS裝置。

因為歷史原因,早期的AFP協議升級後已經沒有開源協議可以完美支援,因此使用avahi的mDNS服務時,如果還使能了AFP業務的話,MAC會顯示為大問號。

Windows/Linux/Mac網路發現協議之-八大金剛

AFP-在新MAC版本上的展示

使用配置好的服務檔案,MAC可以正常顯示裝置

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-MACOS-NETWORK-NEIGHBOR

在除錯過程中,還看到了網路鄰居顯示為PC的圖示,有知道顯示為這個圖示的條件的小夥伴嗎?

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-NORMAL-COMPUTER

SMB協議

Server Message Block SMB 是MS家 的協議,奇怪吧:<>

Samba是*nix系統上的一個SMB協議的實現,是早期為了和Windows相容檔案共享而做的功能。目前MAC已經全面放棄自己的AFP協議轉而投向SMB協議。

裝置僅支援SMB協議而沒有mDSN協議輔助的話,MAC也可以識別此係統,不過會顯示為超級古老的圖示。

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-MAC-OLD-PC-NETWORK

Linux

mDNS

Ubuntu系統的網路鄰居可以自動發現mDNS服務並展示為不同的圖示。 在Ubuntu 20。04裡面,除去圖示的不同,還增加了每個服務的描述。

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-Linux-network-neighbor

SMB

同樣的,Ubuntu系統天然支援SMB協議,但是SMB協議需要mDNS協議的支撐,否則無法顯示在網路鄰居里面。

Windows/Linux/Mac網路發現協議之-八大金剛

PDNAS-LINUX-NEIGHBOR

其他協議

除去前面流行並且工作的協議外,還有一些曾經使用但是已經廢棄或者即將廢棄的協議,在裝置設計時,如果考慮相容性,也同時需要支援。

SSDP

SSDP是一個基礎協議,UPnP以及WS-Discovery 都是基於這個協議來實現的。

AFP

Apple Filing Protocol AFP

Apple家的私有協議,開源有netatalk 實現。 AFP升級加密後,netatalk也不能和新版本的MAC相容。

蘋果已經全面投向SMB的懷抱,AFP基本上可以忽略了。

NetBIOS

Network Basic Input/Output System NetBIOS 這個是Windows 9x/Me/XP等早期系統支援的名稱解析協議, 類似於mDNS,新的Windows 10已經不建議支援此協議。

LLMNR

Link-Local Multicast Name Resolution LLMNR , 這個也是和mDNS競爭的失敗者,主要聚焦於區域網的名稱解析,可以直接忽略了。