mDNS 或 Bonjour 怎么了?我还需要它吗?

mDNS 或 Bonjour 怎么了?我还需要它吗?

Bonjour 曾经是实现对等名称解析的方式,现在可能仍然是,但我对一些事情感到困惑。最新页面Apple 于 2010 年发布了 v2 版本,大约14年从今天开始。对于所谓的现代科技来说,这似乎不对。即使你使用他们的搜索,你仍然会被引导到该页面。我发现了一个巧克力页面有 v3,但没有上下文日期,也没有其他信息,所以我不知道该怎么处理。

在互联网上,有很多超级用户询问有关 Bonjour 的问题,但都是老问题了。在 Wikipedia 上查找,似乎该技术可能已被重新命名为 mDNSResponder。Apple 有一个Github与 mDNSResponder 一起使用,但是他们的发布页面仅提供源代码,不提供任何您可以安装的内容。

我还看到 Windows 现在已经内置了 mDNSResponder,但根据 SuperUser 上的问题,我认为它不起作用。我还发现北达科他州没有本地客户端。

但是,我不清楚发生了什么,也不清楚需要什么软件。我是从 Windows 10 的角度提问的。

  1. Bonjour 更换品牌了吗?
  2. 您还需要第三方软件来进行 mDNS 解析吗?
  3. 谁是此类软件的权威来源?
  4. 您从哪里获得该软件?
  5. Avahi 在哪里发挥作用?

这些问题之所以切题,原因如下:

  1. 关于 Bonjour 有 685 个问题。
  2. 有关 mDNS 的问题有 684 个。
  3. 关于如何在各个版本的 Windows 上安装 Bonjour,有很多问题。这是一个类似的问题,但不是重复的,而且更清晰。
  4. 关于如何在 Windows 上配置或修复 Bonjour,存在类似但不重复的问题。
  5. 关于如何在 Windows 上配置或修复 mDNS,存在类似但不重复的问题。
  6. 关于如何在 MacOS 上安装 Bonjour 有很多问题。这是一个类似的问题,但不是重复的。
  7. 关于如何在 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 软件。)

相关内容