现代本地网络上的名称是如何解析的?

现代本地网络上的名称是如何解析的?

在现代局域网中,设备使用几种不同的技术来解析名称。具体来说,举几个例子,例如 DNS、Avahi、zeroconf、mDNS、Bonjour、NetBIOS、WINS,甚至手动 hosts 文件。我认为其中一些是基本上相同的东西的不同术语。有些使用分散技术,有些依靠 DHCP 来分配中央地址。

当前常见的操作系统如何处理这些不同的、可能相互冲突的名称解析技术?它们使用的顺序是什么?不同的操作系统是否具有不同的行为?

当有人请求 IP 时foobar,本地搜索域何时会附加到名称中 - 在初始名称解析失败之后、在网络上请求某些内容之前,还是其他时间?DNS 解析器在尝试查找其表中的条目时是否可以(和/或是否)添加搜索域?

为什么当我在路由器中指定本地搜索域(而不是空白)时,客户端的行为会发生变化?

其中一些方法支持和/或使用.localtld/search 域。这只是 Avahi 的事情吗?

.在域名末尾添加 会有什么变化?这是否只是阻止搜索“本地域”?当我查找 时google.com,为什么不需要尾随的.

为什么我的 DNS 解析器不搜索google.com.localgoogle.com.MyLocalSearchDomain

您能有嵌套搜索域吗?

NetBIOS 和 WINS 是同一个东西吗?avahi、bonjour 和其他的呢?

后续问题:这些服务如何工作?我知道 DNS 使用更传统的样式,即(本质上)每个客户端都配置为使用一个中央服务器。但是,分散式方法必须使用其他一些技术来自动发现名称。它们是如何工作的?

答案1

简而言之,它是不同操作系统、产品、应用程序、服务和 API 使用的不同名称解析协议集的混乱组合。

IETF ZeroConf 定义了 mDNS(多播 DNS)协议以及 DNS-SD(DNS 服务发现)协议。Bonjour(原名 Rendezvous,又名 mDNSResponder)和 Avahi 是 ZeroConf 的两种实现。我听说 OpenWrt 社区也有一个实现,它简单地称自己为“mDNS”。自从 Apple 创建了它之后,Apple 产品就专注于此,尽管 Mac 也可以使用 NetBIOS 名称服务和 WINS 进行名称解析,尤其是在使用 macOS 的 SMB 客户端连接到 SMB 文件服务器(Windows Server、Linux SaMBa 服务器)时。

Microsoft 专有名称服务协议始于基于 LAN 本地(不可路由)广播的 NetBIOS 名称服务。我说的是“Microsoft 专有”,但从技术上讲,它起源于 IBM,是服务器消息块 (SMB) 协议的一部分。随着 SMB 文件服务成为事实上的行业标准,许多操作系统至少必须在其 SMB 客户端和服务器中采用 NetBIOS 名称服务。后来,Microsoft 创建了 WINS,为这种 Microsoft 专有名称解析提供基于服务器的单播解决方案。当 Apple 以“Rendezvous”(后来更名为 Bonjour)的名称创建 mDNS 并将其提交给 IETF,最终成为 IETF ZeroConf 时,Microsoft 令人困惑地决定做他们自己略有不同的、不兼容的 mDNS 类东西,他们称之为“链路本地多播名称解析”(LLMNR)。在 Microsoft 世界中,对“.local”主机的请求通常会转到 LLMNR,似乎是为了反对 ZeroConf 对“.local”的标准化使用。微软还使用 UPnP 来发现 LAN 上的某些东西,例如路由器(Wi-Fi AP 和 NAT 网关)。

Linux(包括 Google Android)似乎现在倾向于使用 ZeroConf 进行基于 LAN 的无服务器名称解析。Google 将 Apple 符合 POSIX 标准的开源“mDNSResponder”守护程序移植到 Linux 以供 Android 使用;它实现了 Android 的“网络服务发现”(NSD) API。

与 macOS 一样,Linux 使用 NetBIOS 名称服务和 WINS 来连接 SMB 服务器。

这是一个巨大的混乱,而对于某一特定事物使用哪种协议取决于您使用的操作系统、您的软件调用哪些 API 以及许多其他因素。

答案2

另一个难题是文件/etc/nsswitch.conf。这是“名称服务开关”,它存在于许多基于 Unix 的系统中;它告诉系统如何将名称转换为数字值并转回。它包含大约十几行,如下所示

(数据库)(来源)
详细描述这里

示例如下

主机:文件 DNS
这意味着,每当任何程序想要 将主机名/域名转换为 IP 地址(或反之亦然)时,它应该

  1. 查看/etc/hosts,如果没有找到结果,
  2. 咨询 DNS。

因此,可以单独配置系统如何解析主机名(包括搜索顺序)。________ *这对于大多数应用程序来说都是正确的,例如
、、等。实用程序(如和)被硬编码为使用 DNS,而不使用其他任何东西。
pingsshftpdignslookup

相关内容