天天看點

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

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

在使用不同系統的智能硬體時,如常見的樹莓派/Openwrt路由器/Debian/Fedora/Windows/Mac等系統是,系統間互相發現以及

網絡共享本應是系統的基礎服務,無需使用者過多參與.不過現實旺旺和理想之間的差距讓我們驚訝,不同系統互相之間的發現以及

共享并沒有那麼輕松.

開發的硬體裝置無法在常見系統的網絡鄰居正确的現實出來,實在是很喪氣的事情.

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

我的伺服器啊,你在哪裡

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

先看看最簡單和常用的ping工具,這麼簡單和實用的工具,簡單的搜尋竟然有 三千八百萬 條記錄

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

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

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

![pdnas-raspberry-pi-ping]](

https://gitee.com/pdusb/pdboltblog/raw/master/pdnas/pdnas-web-console-admin.jpg)

再來看看最常見的檔案共享服務,也有 兩千萬 之巨

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

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

幹貨放前面 各系統網絡鄰居正常工作的協定彙總:

OS Windows Linux Macos
網絡鄰居顯示 UPnP + WS-Discovery mDNS + SMB mDNS(伺服器側特别配置) + SMB
網絡鄰居共享 WS-Discovery + SMB

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

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

Windows 10的WS-Discovery

Web Services Dynamic Discovery (WS-Discovery)

WS-Discovery

下圖是此協定的抓包

此協定和UPnP極其相似,都是基于SSDP協定衍生的XML表達的,如果不支援此協定,則無法在Windows10 的網絡鄰居裡面顯示為PC,無法直接點選通路共享.

支援此協定後,Windows10的網絡鄰居裡面會在計算機類型的裡面顯示裝置.

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

UPnP協定

UPnP

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

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

此協定在Windows系列裡面基本都能支援,會在網絡鄰居裡面顯示出裝置的資訊.

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

MacOS

mDNS協定

MAC整體表現和Linux比較接近,雙方使用的協定也是類似,隻是在細節處理上有些差別.

mDNS

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

因為曆史原因,早期的AFP協定更新後已經沒有開源協定可以完美支援,是以使用avahi的mDNS服務時,如果還使能了AFP業務的話,MAC會顯示為大問号.

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

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

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

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

SMB協定

Server Message Block

SMB

是MS家

的協定,奇怪吧:<>

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

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

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

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

同樣的,Ubuntu系統天然支援SMB協定,但是SMB協定需要mDNS協定的支撐,否則無法顯示在網絡鄰居裡面.

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

其他協定

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

SSDP

SSDP是一個基礎協定,UPnP以及WS-Discovery 都是基于這個協定來實作的.

AFP

Apple Filing Protocol

Apple家的私有協定,開源有

netatalk

實作. AFP更新加密後,netatalk也不能和新版本的MAC相容.

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

NetBIOS

Network Basic Input/Output System

這個是Windows 9x/Me/XP等早期系統支援的名稱解析協定,

類似于mDNS,新的Windows 10已經不建議支援此協定.

LLMNR

Link-Local Multicast Name Resolution

, 這個也是和mDNS競争的失敗者,主要聚焦于區域網路的名稱解析,可以直接忽略了.

繼續閱讀