原创]NetBIOS主机名解析

NetBIOS主机名解析主要使用其子协议NetBIOS Name Service协议来进行。

工作组:是网络中具有相同“Workgroup”名字的主机组成。用户可以修改此组名子加入另一个组。

属于同一个工作组的主机才能相互通告主机名,不同的工作组之间不能相互通告主机名。

主名字服务器的确定:相同的工作组中,第一台启动的主机自动成为主名字服务器。

同一工作组相互通告主机名的过程:

当每台主机启动时都会以广播的形式广播自己的主机名和IP,同时还广播其他的一些NBNS广播数据包,如下图所示:

所以从这些广播查询数据包中不能唯一确定主机名和IP的唯一对应关系。

经过一分钟左右,主名字服务器会主动依次去查询刚才网络中所有具有相同“Workgroup”的主机,查询的意思可以理解为:请告诉我你的这个主机名字对应的IP地址是多少?紧接着被询问的主机会回应主名字服务器,回应的内容可以理解为:我的这个主机名字对应的IP地址是*.*.*.*。经过第一轮的查询后,主名字服务器知道了本组中所有的主机的名字和IP的对应关系。查询和响应数据包如下图所示:

查询数据包:

从查询数据包可以看出主名字服务器是以广播的形式进行,数据包里面“Domain Name”标志位包含了查询的是哪台主机。

响应数据包:

从响应数据包可以得到查询的主机名字所对应的IP地址,此数据包的特征为单播包,被查询主机回应给名字服务器。数据包中“Answers”标记位被置为“1”表示是NBNS响应数据包;“Group Name Flag”标记位被置为“0”表示“NetBIOS Name”标志位表示的是主机的名字而不是工作组名;最后在“NetBios IP Address”标记位得到查询的IP地址。

当网络中名字解析服务完成后,除了主名字服务器以外,其他的主机将不在以广播形式发送数据包。而只有主名字服务器会不定时的发送一些宣告本组名字的NBNS广播包(发送的数据包如下图所示),

而主机则会主动发送NBNS查询数据包,询问主名字服务器还存在否,主名字服务器收到后会回应查询数据包,发送的查询数据包和回应的响应数据包格式与主名字服务器查询主机,主机回应主名字服务器的一样。主机发送这个NBNS查询数据包以操作系统的不同而在发送时间上有所不同。Windows2000和WindowsXP系统的客户机是几乎每隔30分钟发送一次NBNS查询数据包;Windows2003系统的客户机是几乎每隔13分钟发送一次NBNS查询数据包。

以上就是Windows使用NetBIOS协议机制解析主机名字的过程。