隱藏在網路鄰居背後的協議,快來看看你家網路有幾種?

  • 作者:由 匿名使用者 發表于 繪畫
  • 2022-12-13

隱藏在網路鄰居背後的協議,快來看看你家網路有幾種?新酷數碼 2022-07-14

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

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

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

共享並沒有那麼輕鬆。

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

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

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

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

三千八百萬

條記錄

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

三百萬

的記錄

![pdnas-raspberry-pi-ping]]( https://upload-images。jianshu。io/upload_images/14465021-53d02e74e1936079。jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

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

兩千萬

之巨

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

乾貨放前面

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

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

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

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

下圖是此協議的抓包

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

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

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

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

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

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

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

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

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

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

Server Message Block SMB 是MS家

的協議,奇怪吧:<>

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

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

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

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

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

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

Apple Filing Protocol AFP

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

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

Network Basic Input/Output System NetBIOS 這個是Windows 9x/Me/XP等早期系統支援的名稱解析協議,

類似於mDNS,新的Windows 10已經不建議支援此協議。

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

Top