当您打开计算机开始访问网络资源时,就涉及到一个问题:名字解析,名字解析就是把需要访问的计算机名字解析成 IP 地址的过程。
Windows名字解析(4)
动态查询 NetBIOS 名字
如果在 NetBIOS 名字缓存中不能找到想查询的 NetBIOS 名字, Windows 会根据计算机的节点类型来决定接下来如何查询。我们有必要来介绍一下节点类型。你在运行了命令 ipconfig /all 之后会看到节点类型( Node Type ):
Windows IP Configuration
Host Name . . . . . . . . . . . . : seal
Primary Dns Suffix . . . . . . . : shanghai.contoso.com
Node Type . . . . . . . . . . . . : Mixed
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : shanghai.contoso.com
contoso.com
这个节点类型决定了 Windows 如何从网络上去解析一个 NetBIOS 名字。共有如下四种节点类型:
B 节点( Broadcast ):只在本地网络发广播包来查询 NetBIOS 名字
P 节点( Point to Point ):只向 WINS 服务器查询 NetBIOS 名字
M 节点( Mixed ):首先尝试广播查询,如果查询失败,再向 WINS 服务器查询
H 节点( Hybrid ):首先向 WINS 服务器查询 NetBIOS 名字,如果查询失败,再广播查询
这里需要介绍一下 WINS 服务器,它的全称是 Windows Internet Name Service 。 WINS 服务器提供 NetBIOS 名字查询服务。如果您的计算机配置了 WINS 服务器,您的计算机就会在 WINS 服务器上注册它的 NetBIOS 名字和 IP 地址。其他计算机查询 WINS 服务器就可以知道您的计算机的 IP 地址了。您运行命令 nbtstat -n 可以看到您的计算机注册的 NetBIOS 名字 :
Local Area Connection:
Node IpAddress: [10.60.11.70] Scope Id: []
NetBIOS Local Name Table
Name Type Status
SEAL <00> UNIQUE Registered
CONTOSO <00> GROUP Registered
SEAL <20> UNIQUE Registered
查询 lmhosts 文件
如果查询 NetBIOS 名字缓存和通过网络做 NetBIOS 名字解析都失败, Windows 会读 lmhosts 文件来解析 NetBIOS 名字。我们已经知道 lmhosts 文件中有 #PRE 后缀的纪录会被装载到 NetBIOS 名字缓存中,现在 Windows 只会检查那些没有 #PRE 后缀的纪录。
如果前面三个步骤都解析失败,那么 NetBIOS 名字解析就失败了。
示例
在了解了两类名字解析之后,我们来看看在 Windows 上 ping 的过程是如何的。我们还是假设当前计算机的 DNS 后缀搜索列表为 shanghai.contoso.com 和 contoso.com ,节点类型是 M 节点,所有的缓存以及 lmhosts 和 hosts 文件都是空的。
如果 ping 上海的文件服务器 sh-fileserver ,它的全名是 sh-fileserver.shanghai.contoso.com ,会有以下过程:
查询 DNS 客户端缓存及 hosts 文件,查询失败
向 DNS 服务器查询 FQDN sh-fileserver.shanghai.contoso.com ,查询成功
返回 sh-fileserver 的 IP 地址
如果 ping 北京总部的文件服务器 bj-fileserver ,它的全名是 bj-fileserver. contoso.com ,会有以下过程:
查询 DNS 客户端缓存及 hosts 文件,查询失败
向 DNS 服务器查询 FQDN bj-fileserver.shanghai.contoso.com ,查询失败
向 DNS 服务器查询 FQDN bj-fileserver. contoso.com ,查询成功
返回 bj-fileserver 的 IP 地址
如果 ping 一个不存在的名字 fake-server ,会有如下过程:
查询 DNS 客户端缓存及 hosts 文件,查询失败
向 DNS 服务器查询 FQDN fake-server.shanghai.contoso.com. ,查询失败
向 DNS 服务器查询 FQDN fake-server. contoso.com. ,查询失败
查询 NetBIOS 名字缓存,查询失败
广播查询 NetBIOS 名字 fake-server <00> ,查询失败
向 WINS 服务器查询 NetBIOS 名字 fake-server <00> ,查询失败
查询 lmhosts 文件,查询失败
最终名字解析失败

网友评论