当不在域中时,机器名称解析如何工作?

当不在域中时,机器名称解析如何工作?

我的家庭网络上有 4 台 Windows 机器(3 台 Win7,1 台 WinXP)和各种其他设备,使用 Linksys WRT54 无线路由器。我没有域服务器,并且我遇到了一些机器无法解析其他机器的主机名的问题。

如果没有 DNS 服务器,该如何工作?我已将它们全部设置为相同的工作组名称,但 ping 失败,并显示“Ping 请求找不到主机...”。

我如何才能找到此问题的原因?Windows 防火墙上是否有特定的东西会阻止它工作?

答案1

Windows 机器使用自己的技术来解析其他主机的 IP,最常见的是使用广播或多播来宣传它在网络上可用。

例如,Windows XP 使用 NetBIOS 名称服务通过广播数据包进行通告和解析。从 Vista 开始,基于多播的 LLMNR 也已可用,而 Mac OS X 和 Linux 使用非常相似的 mDNS,尽管 NetBIOS 仍然是最广泛支持的。

如果您想确保能够联系其他主机,您可以随时编辑 hosts 文件进行解析。如果您有静态 IP,那么这种方法是唯一的选择。

  • 使用 Wireshark 验证网络上正在发生的事情,尽管这对您来说可能有点高级。使用 Wireshark,您可以看到流经 NIC 的网络流量。
  • 尝试暂时关闭防火墙,然后尝试 ping 其他主机。
  • 验证 NetBIOS 是否正常工作。

答案2

Microsoft TCP/IP 主机名解析顺序概述了自编写时 (NT4/9x) 以来的顺序。从那时起它没有发生太大变化。它提到了两种方法:“主机解析”和“winsock 解析”。

大多数程序(甚至网络)都使用winsock中实现的方法ws2_32!gethostbyname。可以使用嗅探器(例如Wireshark)观察其顺序。

从 Win7 开始,我观察到的顺序如下:

  • 如果是 FQDN:仅 DNS

  • 如果名称不合格:

    1. 如果存在带有域前缀的连接:附加该前缀的 DNS
    2. 法律硕士(udp/5355 多播)(XP 中不存在)
    3. 网络基本输入输出系统根据配置的“节点类型”。实际上,它总是混合节点,又称 H 节点,这意味着 - 如果配置了 WINS 服务器,则为 NBNS(udp/137 广播)

请注意,hosts文件始终会覆盖 DNS 查找并lmhosts覆盖 NetBIOS 查找。

“主机解析”被指定为仅使用 DNS,并且仅由“某些程序”使用,例如 IE 和一些实用程序 - 似乎由使用 的应用程序使用wininet

答案3

请记住,在尝试编辑 hosts 文件之前,请确保您以管理员身份登录,并且文件未设置为只读,否则之后将不允许您保存它。您可能还需要编辑文件本身的权限。在 7 上,编辑 hosts 文件的最简单方法是以管理员身份拥有它。这将允许您编辑和保存文件。

相关内容