专栏首页四知回网络邻居发现协议大比拼,Windows/Linux/Mac系统局域网服务发现协议之-八大金刚
原创

网络邻居发现协议大比拼,Windows/Linux/Mac系统局域网服务发现协议之-八大金刚

分析/验证对比常见局域网服务发现协议在Windows/Linux/Mac等不同系统下的支持和表现

网络邻居发现协议大比拼,Windows/Linux/Mac系统局域网服务发现协议之-八大金刚

在使用不同系统的智能硬件时,如常见的树莓派/Openwrt路由器/Debian/Fedora/Windows/Mac等系统是,系统间相互发现以及 网络共享本应是系统的基础服务,无需用户过多参与.不过现实旺旺和理想之间的差距让我们惊讶,不同系统相互之间的发现以及 共享并没有那么轻松.

开发的硬件设备无法在常见系统的网络邻居正确的现实出来,实在是很丧气的事情.

那么,就系统来看看局域网服务发现协议在不同系统上的支持及表现.

我的服务器啊,你在哪里

想要访问局域网网络里面的设备,远没有应有的轻松. 每次新装系统或者设备入网,总是有这样或者那样的问题,哎,我的服务器啊,你在哪里.

先看看最简单和常用的ping工具,这么简单和实用的工具,简单的搜索竟然有 三千八百万 条记录

pdnas-ping-linux-windows

大名鼎鼎的树莓派,用起来想来应该更简单一些,可事实往往触目惊心,仅仅是ping通的问题,也有三百万的记录

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

再来看看最常见的文件共享服务,也有 两千万 之巨

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

下图是此协议的抓包

PDNAS-WS-Discovery-抓包

此协议和UPnP极其相似,都是基于SSDP协议衍生的XML表达的,如果不支持此协议,则无法在Windows10 的网络邻居里面显示为PC,无法直接点击访问共享.

支持此协议后,Windows10的网络邻居里面会在计算机类型的里面显示设备.

PDNAS-WINDOWS-NETWORK-NEIGHBOR-COMPUTER

UPnP协议

UPnP 是早期路由器常用的协议,目前从不同系统的验证来看,仅有Windows默认在文件浏览器里面支持,Ubuntu和MacOS都需要单独配置或者应用程序才能浏览.

这个协议目前各种路由器基本都能支持,不过其安全问题频出,作用并不明显.

此协议在Windows系列里面基本都能支持,会在网络邻居里面显示出设备的信息.

PDNAS-WINDOWS-UPNP-INFORMATION

MacOS

mDNS协议

MAC整体表现和Linux比较接近,双方使用的协议也是类似,只是在细节处理上有些区别.

mDNS 协议本身应用比较广泛,MAC比较早就支持.在Mac新版本里面,网络邻居默认可以发现mDNS设备.

因为历史原因,早期的AFP协议升级后已经没有开源协议可以完美支持,因此使用avahi的mDNS服务时,如果还使能了AFP业务的话,MAC会显示为大问号.

AFP-在新MAC版本上的展示

使用配置好的服务文件,MAC可以正常显示设备

PDNAS-MACOS-NETWORK-NEIGHBOR

在调试过程中,还看到了网络邻居显示为PC的图标,有知道显示为这个图标的条件的小伙伴吗?

PDNAS-NORMAL-COMPUTER

SMB协议

Server Message Block SMB 是MS家 的协议,奇怪吧:<>

Samba是*nix系统上的一个SMB协议的实现,是早期为了和Windows兼容文件共享而做的功能.目前MAC已经全面放弃自己的AFP协议转而投向SMB协议.

设备仅支持SMB协议而没有mDSN协议辅助的话,MAC也可以识别此系统,不过会显示为超级古老的图标.

PDNAS-MAC-OLD-PC-NETWORK

Linux

mDNS

Ubuntu系统的网络邻居可以自动发现mDNS服务并展示为不同的图标. 在Ubuntu 20.04里面,除去图标的不同,还增加了每个服务的描述.

PDNAS-Linux-network-neighbor

SMB

同样的,Ubuntu系统天然支持SMB协议,但是SMB协议需要mDNS协议的支撑,否则无法显示在网络邻居里面.

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竞争的失败者,主要聚焦于局域网的名称解析,可以直接忽略了.

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 18张图详解ARP协议所有细节(附流程),果断收藏

    只要确定了 IP 地址后,就能够向这个 IP 地址所在的主机发送数据报。但是再往深了想,IP 地址只是标识网络层的地址,那么在网络层下方数据链路层是不是也有一个...

    用户8611941
  • ARP,这个隐匿在计网背后的男人

    只要确定了 IP 地址后,就能够向这个 IP 地址所在的主机发送数据报,这是我们所熟知的事情。但是再往深了想,IP 地址只是标识网络层的地址,那么在网络层下方数...

    用户8611941
  • 政企机构用户注意!蠕虫病毒Prometei正在针对局域网横向渗透传播

    近日,火绒安全实验室监测到蠕虫病毒“Prometei”正在全网传播。该病毒通过横向渗透攻击方式对局域网中的终端进行大面积入侵,并且可以跨平台(Windows、L...

    用户6477171
  • 分布式服务注册和发现consul 简要介绍

    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了...

    张善友
  • Nmap多年积累实操经验分享

    万海旭
  • 收藏 | 五十八种网络故障及其解决办法

    通过调整网卡资源中的IRQ和I/O值来避开与计算机其它资源的冲突。有些情况还需要通过设置主板的跳线来调整与其它资源的冲突。

    网络技术联盟站
  • iOS Airplay Screen Mirroring 同屏技术详解

    iOS9中引入了ReplayKit, 让开发者有了一定的获取屏幕数据的能力. 并在iOS10和iOS11中继续扩展了ReplayKit的能力. 但还是有很大的限...

    LiveVideoStack
  • iOS Airplay Screen Mirroring 同屏技术详解

    投屏技术已经被大量用在身边的产品, 比如电视投屏, 投影仪, 视频会议产品中. 在iOS平台外的其他平台中都已经有非常成熟的标准和实现. 但在封闭的苹果...

    刘连响
  • 网络扫描和安全审计软件开源软件NMAP入门

    nmap(Network Mapper)是一款用于网络扫描和安全审计软件开源软件,支持Windows、Mac、Linux等多个平台。同时,很多网络管理员也用它来...

    辉哥
  • 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

    标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西。本文对读者的定位是知道 MAC 地址是什么,...

    JackJiang
  • 渗透测试常用工具使用

    1.ping发送ICMP请求包,用来测试主机与目标主机之间的连通性。如果未连通:有可能是物理上的问题,有可能是软件上的问题。

    白菜博客
  • 理解Neutron(3):Neutron Open vSwitch + GRE/VxLAN 虚拟网络

    特别说明:本文于2015年基于OpenStack M版本发表于本人博客,现转发到公众号。因为时间关系,本文部分内容可能已过时甚至不正确,请读者注意。

    SammyLiu
  • Kali基本扫描工具:Fping、Nping、Arping、Nbtscan、onesixtyone工具的使用

    fping是一个小型命令行工具,用于向网络主机发送ICMP回应请求,类似于ping,但在ping多个主机时性能要高得多。

    杰哥的IT之旅
  • Android开发必须掌握的网络知识

    最近从朋友同行了解到,目前面试都会问各种相关的知识,从集合到数据机构, 从tcp到UDP,从native到js, 从优化到架构,从安全到Linux ,没有面试官...

    开发者技术前线
  • 连接一个 IP 不存在的主机时,握手过程是怎样的?

    在服务端启动好后会调用 listen() 方法,进入到 LISTEN 状态,然后静静等待客户端的连接请求到来。

    brookwang
  • arp病毒专杀工具 1.0 绿色版

    应群里小伙伴的要求,特意给大家分享这个arp病毒查杀工具,那么首先给大家科普下arp的相关知识吧,什么是arp呢? arp即地址解析协议(Addres...

    萌海无涯
  • 连接一个 IP 不存在的主机时,握手过程是怎样的?

    现在忙完工作,还要一三五学驾照,二四六看家具。有同感的老铁们不要举手,拉到右下角点个"在看"就好了。

    haohongfan
  • 网络通信 & 初识socket

    即Client/Server (C/S) 结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装...

    py3study
  • 常见黑客渗透测试工具

    java404

扫码关注腾讯云开发者

领取腾讯云代金券