什么是 mDNS?是否可以在不运行 mdns 服务的情况下进行 mDNS 查询?

Abh*_*dra 9 avahi mdns

最近我碰到avahi-daemonmdns....

我的系统中是否需要mDNS 客户端来连接 mDNS 服务器

或者有没有其他方法可以将没有 mDNS 客户端的计算机连接到 mDNS 服务器计算机(主机名.本地)?

是否可以在没有运行mDNS服务的情况下从计算机 ping 通。

Kur*_*fle 16

1.什么是mDNS?

要了解整体情况,您需要查看名为Zeroconf 的内容。Zeroconf 概念首先由 Apple 完全实施,但 Apple为其使用营销名称Bonjour(最初为Rendezvous)。mDNS(多播 DNS)是其中的一部分——见下文。

Apple 使用 Bonjour 来...

  • ...AirPrint(当 iOS 移动客户端在 LAN 中寻找可用的打印机以用于“无驱动打印”时),或

  • ...要在 LAN 中发布的 CUPS 打印机共享,或用于

  • ...局域网上的 iTunes 音乐库共享,以及用于

  • ...许多其他服务,无需安装、配置和维护中央 DNS 服务器即可工作。

在 Linux 下,这些相同的概念由Avahi项目实现。

Bonjour/Zeroconf 有 3 个主要目标:

  1. 在没有 DHCP 服务器的情况下分配 IP 地址。
  2. 在没有 DNS 服务器的情况下在主机名和 IP 地址之间进行转换。
  3. 无需目录服务器(如 LDAP)即可发现服务(如打印提供商),并使其易于使用。

完整的技术 Zeroconf 概念在一系列 RFC 中有详细说明,主要是:

  • IPv4LL / rfc3927用于在没有 DHCP 服务器的情况下分配链路本地 IP 地址。
  • mDNS / rfc6762用于多播 DNS,无需中央 DNS 服务器即可解析主机名。
  • DNS-SD / rfc6763用于没有中央目录服务器的基于 DNS 的服务发现

Zeroconf 的主要架构师之一是 Stuart Cheshire。在写下关于如何在 TCP/IP 网络上实现 Apple 最初的易用AppleTalk 名称绑定协议的想法后,Stuart 被 Apple 聘用,帮助为 Mac 设备实现 Zeroconf 概念。然后,他还是上述链接的 RFC 文档的主要作者。

Apple 的 Bonjour 实现也可用于 Windows 和 Linux(尽管在 Linux 上也有一个名为Avahi的独立实现)作为 Apache 许可证 v2.0 下的开源。

IANA 运行服务名称和端口注册,希望为其系统定义和开发新服务类型的开发人员可以为他们保留和注册名称。

2. 是否可以在没有运行 mdns 服务的情况下进行 mDNS 查询?

是的。

赶紧跑

avahi-browse -a
Run Code Online (Sandbox Code Playgroud)

从您的 LAN 上的所有节点及其提供的服务中获取持续更新的服务公告列表。更详细的输出由

avahi-browse -v -a -t
Run Code Online (Sandbox Code Playgroud)

-t这里还可以自动终止命令(而不会自动更新列表),可以假设后发现所有当前活动的服务。

您可以像这样浏览启用 IPP(互联网打印协议)的打印机:

avahi-browse  _ipp._tcp  -r -t
Run Code Online (Sandbox Code Playgroud)

-r将“决心”的发现服务,并显示他们的一个人类可读的名称。的_ipp._tcp是编码,你需要习惯,如果你更详细研究这个主题,以服务(怪异)的名字。在这种情况下,它是用于 LAN 中 IPP 服务的精确语法。上述命令的示例输出:

+ wlan1 IPv4 Officejet 6500 [F051B9] Internet 打印机本地
= wlan1 IPv4 Officejet 6500 [F051B9] Internet 打印机本地
   主机名 = [HPA0B3CCF051B9.local]
   地址 = [192.168.78.24]
   端口 = [631]
   txt = ["Scan=T" "Duplex=F" "Color=T" "UUID=1c852a4d-b800-1f08-abcd-a0b3ccf051b9" "note=" "adminurl=http://HPA0B3CCF051B9.local." "mac=a0:b3:cc:f0:51:b9" "priority=30" "usb_MDL=Officejet 6600" "usb_MFG=HP" "product=(HP Officejet 6600)" "ty=Officejet 6600" "URF=CP1 ,MT1-2-8-9-10-11,OB9,OFU0,PQ3-4-5,RS300-600,SRGB24,W8,DEVW8,DEVRGB24-48,ADOBERGB24-48,IS1" "rp=ipp/打印机" "pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf" "qtotal=1" "txtvers=1"]

您还可以浏览不同域中的服务,从而将这些服务暴露给 Internet。您可能会成功(大多数情况下)的一个示例域是dns-sd.org

  avahi-browse --domain=dns-sd.org -a -v -r
Run Code Online (Sandbox Code Playgroud)

我已经从AskDifferentBonjour标签信息复制了这个答案的一部分。但是,无论如何,这篇标签信息文章的大部分内容都是我写的,所以我一点也不觉得难过......