最近我偶然发现avahi-daemon
了mdns
......
我需要一个我的系统中的 mDNS 客户端与 mDNS 服务器连接?
或者是否有其他方法可以将没有 mDNS 客户端的计算机连接到 mDNS 服务器计算机(hostname.local)?
是否可以从计算机 ping无 mDNS服务正在运行。
答案1
1.什么是mDNS?
要了解整体情况,你需要查看名为零配置。Zeroconf 概念最早由 Apple 全面实施,但 Apple 使用营销名称你好(最初会合) 即可。mDNS (多播域名解析) 是其中的一部分——见下文。
Apple 使用 Bonjour 来...
...AirPrint(当 iOS 移动客户端在 LAN 中寻找可用的打印机以进行“无驱动打印”时),或
...CUPS 打印机共享将在 LAN 中发布,或者
...局域网上共享 iTunes 音乐库,以及
...许多其他服务无需安装、配置和维护中央 DNS 服务器即可运行。
在 Linux 下,这些相同的概念由阿瓦希项目。
Bonjour/Zeroconf 有 3 个主要目标:
- 无需 DHCP 服务器即可分配 IP 地址。
- 无需 DNS 服务器即可在主机名和 IP 地址之间进行转换。
- 发现没有目录服务器(如 LDAP)的服务(如打印提供商)并使其易于使用。
完整的技术 Zeroconf 概念在一系列 RFC 中指定,主要包括:
- IPv4LL/rfc3927用于在没有 DHCP 服务器的情况下分配链路本地 IP 地址。
- 移动DNS/rfc6762为了多播域名解析无需中央 DNS 服务器即可解析主机名。
- DNS-SD/rfc6763为了基于 DNS 的服务发现没有中央目录服务器。
Zeroconf 的主要架构师之一是 Stuart Cheshire。在写下了关于如何实现 Apple 最初的易用性的想法后,AppleTalk 名称绑定协议TCP/IP 网络 Stuart 被 Apple 聘用,帮助实现 Mac 设备的 Zeroconf 概念。他也是上述 RFC 文档的主要作者。
Apple 的 Bonjour 实现也适用于 Windows 和 Linux(尽管在 Linux 上还有一个名为阿瓦希) 根据 Apache 许可证 v2.0 作为开放源码。
IANA 负责管理服务名称和端口注册表希望为其系统定义和开发新服务类型的开发人员可以在其中为它们保留和注册名称。
2. 在没有运行 mdns 服务的情况下,是否可以进行 mDNS 查询?
是的。
赶紧跑
avahi-browse -a
获取来自 LAN 上所有节点的服务公告及其提供的服务的持续更新列表。更详细的输出如下:
avahi-browse -v -a -t
-t
在假定已发现所有当前活动的服务后,此处还会自动终止命令(并且不会自动更新列表)。
您可以浏览启用 IPP 的 (互联网打印协议)打印机如下:
avahi-browse _ipp._tcp -r -t
将-r
“解析”找到的服务并显示一个人类可读的名称。_ipp._tcp
如果您更详细地研究此主题,则需要习惯服务的(奇怪的)名称编码。在这种情况下,它是 LAN 中 IPP 服务的精确语法。上述命令的示例输出:
+ wlan1 IPv4 Officejet 6500 [F051B9] 互联网打印机本地 = wlan1 IPv4 Officejet 6500 [F051B9] 互联网打印机本地 主机名 = [HPA0B3CCF051B9.local] 地址 = [192.168.78.24] 端口 = [631] txt = ["扫描=T" "双面=F" "颜色=T" "UUID=1c852a4d-b800-1f08-abcd-a0b3ccf051b9" "note=" "adminurl=http://HPA0B3CCF051B9.local." “mac=a0:b3:cc:f0:51:b9” “优先级=30” “usb_MDL=Officejet 6600” “usb_MFG=HP” “产品=(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/printer” “pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf” “qtotal=1” “txtvers=1”]
您还可以浏览不同域中的服务,这些服务会暴露给互联网。一个可以成功实现此目的的示例域(大多数情况下)是dns-sd.org:
avahi-browse --domain=dns-sd.org -a -v -r
我从中复制了部分答案这你好在 AskDifferent 上查看标签信息。不过这篇标签信息文章的大部分内容都是我写的,所以我一点也不觉得难过……