Bonjour 曾经是实现对等名称解析的方式,现在可能仍然是,但我对一些事情感到困惑。最新页面Apple 于 2010 年发布了 v2 版本,大约14年从今天开始。对于所谓的现代科技来说,这似乎不对。即使你使用他们的搜索,你仍然会被引导到该页面。我发现了一个巧克力页面有 v3,但没有上下文日期,也没有其他信息,所以我不知道该怎么处理。
在互联网上,有很多超级用户询问有关 Bonjour 的问题,但都是老问题了。在 Wikipedia 上查找,似乎该技术可能已被重新命名为 mDNSResponder。Apple 有一个Github与 mDNSResponder 一起使用,但是他们的发布页面仅提供源代码,不提供任何您可以安装的内容。
我还看到 Windows 现在已经内置了 mDNSResponder,但根据 SuperUser 上的问题,我认为它不起作用。我还发现北达科他州没有本地客户端。
但是,我不清楚发生了什么,也不清楚需要什么软件。我是从 Windows 10 的角度提问的。
- Bonjour 更换品牌了吗?
- 您还需要第三方软件来进行 mDNS 解析吗?
- 谁是此类软件的权威来源?
- 您从哪里获得该软件?
- Avahi 在哪里发挥作用?
这些问题之所以切题,原因如下:
- 关于 Bonjour 有 685 个问题。
- 有关 mDNS 的问题有 684 个。
- 关于如何在各个版本的 Windows 上安装 Bonjour,有很多问题。这是一个类似的问题,但不是重复的,而且更清晰。
- 关于如何在 Windows 上配置或修复 Bonjour,存在类似但不重复的问题。
- 关于如何在 Windows 上配置或修复 mDNS,存在类似但不重复的问题。
- 关于如何在 MacOS 上安装 Bonjour 有很多问题。这是一个类似的问题,但不是重复的。
- 关于如何在 Linux 上安装 Bonjour 有很多问题。这是一个类似的问题,但不是重复的。
答案1
Apple 的最新页面提供了 v2,它于 2010 年发布,距今约 14 年。对于所谓的现代科技来说,这似乎不对
2000 年,当它取代 AppleTalk 时,它被称为“现代”,当时的描述是准确的。(主要替代方案 NetBIOS 已经显露出其老旧——这大致与 Microsoft 也从 NetBIOS 切换到其 Active Directory 的纯 IP 和 DNS 系统的时间相同。)
您找到的 Bonjour v3 是官方版本;它是 Apple 通过 iTunes 分发的版本(他们从未将其作为单独下载提供,但它独立运行良好)。但大约在那个时候,Apple 已经减少了对 Windows 软件的投入;不仅是 Bonjour,其他软件也是如此。
从维基百科上看,该技术似乎已被重新命名为 mDNSResponder
“Bonjour” 是营销名称,“mDNSResponder” 是实际程序的名称(例如 Microsoft Office Word 是“winword.exe”)。
我还看到 Windows 现在已经内置了 mDNSResponder
不是。您可能在某些 Windows 系统上看到的“mDNSResponder”进程仍然是 Apple 的 Bonjour,它是(或至少曾经是)作为 iTunes 的一部分自动安装的。
Windows 10(截至版本 10.16xx 左右)做有内置的 mDNS 和 DNS-SD 实现,但它不称为“mDNSResponder”。相反,它是处理常规 DNS 的相同“Dnscache”服务的一部分。
(请记住,mDNS 不仅用于主机名查找,还用于服务发现。早期的 Windows 10 版本已支持 mDNS服务发现– 即打印机发现 – 但尚未用于主机名查找,后者后来才出现。)
但根据 SuperUser 上的问题,我认为它不起作用。
“主机名查找”部分确实有效。我正在使用它。
不管是已启用默认情况下,取决于您正在查看的 Windows 10 版本。我手头没有任何来源,但我认为微软直到 10.20xx 才真正使基于 mDNS 的名称解析开箱即用;在此之前,它只有在手动启用后才能工作。然而,如今,参见微软关于mDNS的官方声明。
服务发现 (DNS-SD) 是另一个问题。Windows 在拥有主机名解析之前就已经拥有此功能;但在开发使用它的程序时,内置客户端提供了一个复杂的 DNS-SD API,与 Bonjour 的完全不同,而且有一段时间,它提供的 API 仅限于 UWP 应用程序(而大多数开发人员仍在编写“传统”Win32 应用程序)。它确实有效 - Windows 可以通过 mDNS/DNS-SD 找到打印机,尽管还不是 SMB 服务器 - 但到目前为止,它的使用很少。
我还发现 BSD 没有原生客户端。
这取决于哪个BSD(几十年来没有一个名为“BSD”的操作系统 - 各种 BSD 衍生产品都是彼此独立的),但 Avahi 可在大多数 BSD 上运行,并且可以在 OpenBSD“端口”中作为 net/avahi 使用(尽管据我所知,OpenBSD 甚至没有提供允许其处理名称解析的扩展点 - 尽管它仍然可以处理 DNS-SD)。
Bonjour 更换品牌了吗?
Bonjour 实施的协议一直被称为“多播 DNS”和“DNS-SD”,至少自 2000 年代初以来一直被广泛称为“Zeroconf”品牌。
如今,“Bonjour”特指原来的执行Apple 的 mDNS/DNS-SD(即“mDNSResponder”服务)。
谁是此类软件的权威来源?
没有人。mDNS 和 DNS-SD 不是专有协议,没有任何特定的权威实施者,就像 HTTP 客户端没有权威来源一样。
权威来源协议目前是 IETF,其中 Apple 自己的 RFC 6762 是 mDNS 的规范,RFC 6763 是 DNS-SD 的规范。
(它也是一个足够简单的协议,只有少数边缘情况,“必须按照 Apple 的方式处理,即使规范另有规定”在实施时并不是一个重要因素。)
目前 mDNSResponder 可能仍是 Apple 在 SRP(mDNS/DNS-SD 的扩展,更适合 2020 年代的“现代”网络)上进一步工作的唯一实现,但实际协议仍通过 IETF WG 开发。
Avahi 在哪里发挥作用?
Avahi 是 mDNS 和 DNS-SD 的另一种实现,于 2004 年开始实施,面向 Linux 和其他类 Unix 系统;如今,它是大多数 Linux 发行版的“默认”实现。(它独立于 Bonjour,尽管有一段时间它曾是 API 兼容的替代品。)
(这也不是仅有的在 Linux 上实现 mDNS;systemd-resolved 计划取代它,而且我相信 Chrome/Android 也有自己的 mDNS 软件。)