作者:sparkdev
出处:http://www.cnblogs.com/sparkdev/
利用 NetBIOS 名称与其他计算机通信
网络中的计算机之间必须知道IP地址后才能相互通信。但对人来说IP难以记忆,NetBIOS计算机名称比较容易记忆。当计算机使用 NetBIOS 名称与其他计算机通信时,必须先通过 NetBIOS名称找到IP地址,然后再通过IP地址通信。由NetBIOS名称找出IP地址的操作被称为NetBIOS名称解析(NetBIOS name resolution)。
NetBIOS名称是什么?
NetBIOS名称是一个长度为16个字符的字符串。MS网络中用到NetBIOS名称的地方有:计算机名,域名,工作组名。
名称示例
NetBIOS 计算机名:nick-os
DNS主机名:nick-os.mydomain.net
计算机全名:加不加域不一样
不加域时:nick-os
加入域后:nick-os.mydomain.net
全域名 (Fully Qualified Domain Name, FQDN) 或 DNS名称。
nick-os.mydomain.net
(没有加入域时,就没有什么 “全域名”和 “DNS名称”)
如何查看当前机器注册的NetBIOS名称:
nbtstat -n
通过NetBIOS名称来解析IP地址
主要有下面三种方式:
\1. 查看NetBIOS名称缓存区
我们也可以通过命令来查看当前的NetBIOS名称缓存区:
nbtstat -c
\2. 通过广播的方式搜索对方的IP地址(应尽量避免使用这种方式)
\3. 直接向WINS服务器查询
NetBIOS节点类型
上面的三种方法都可以解析到IP地址,但究竟会用哪一种呢?
这取决于计算机采用的NetBIOS节点类型(node-type):
B-node: 广播方式
P-node: 直接向WINS服务器查询
M-node: B与P的混合方式(mixed),先广播,若失败,再向WINS服务器查询
H-node: 也是B与P的混合方式(hybird),但是先向WINS服务器查询,若失败,之后才广播
查看 NetBIOS节点类型:
ipconfig /all
采用H节点的WINS客户端,其NetBIOS名称解析的完整顺序为:
\1. 检查要查询的计算机名称是不是自己的计算机名称。
\2. 检查NetBIOS名称缓存区。
\3. 向WINS服务器查询。
\4. 发出广播消息。
\5. 检查LMHOSTS文件。
\6. 检查HOSTS文件或向DNS服务器查询。
LMHOSTS文件和HOSTS文件存放于 “%systemroot%\system32\drivers\etc”目录下。