在Windows系统中,名称解析有两种类型
一种是基于主机名称的名称解析,另一种是基于NetBios名称的名称解析。
这两种类型的名称解析顺序是不一样的,在具体说明两种类型的名称解析顺序之前,先要理清主机名称和NetBios名称的概念。 那么,主机名称和NetBios名称分别是什么概念,两者之间又有什么异同!下面就这个问题做出解释:
  我们知道,在Windows系统中,有两种名称解析服务,分别是DNS和WINS名称解析服务,其中DNS中使用的是主机名称,WINS中使用的是NetBios名称。两种名称最直观的区别是:NetBios名称没有层次结构,是一种平坦名称(flat Name),NetBios名称最大长度为16个字符,可以包含空格,但不能包括以下字符:/\[]":;|<>+=,?*,不包含".",形如:Alligator,而主机名称是具有层次结构的名称,最大长度为255个字符,形如:Alligator.51Cto.com。
默认情况下,Windows系统中用Hosts文件来保存由IP地址和主机名称组成的静态查询表,用Lmhosts文件来保存由IP地址和NetBios名称组成的静态查询表。两个文件均保存在%SystemRoot%\System32\drivers\etc目录下,分别用于DNS和Wins名称解析。
   明确了主机名称和NetBios名称后,接下来一个问题是,在一次名称解析过程中,计算机是如何选择以哪一种方式进行解析呢?
   答案是依据应用程序所使用的网络协议。如果应用层使用是基于微软内部使用的SMB协议,那么就会对要解析的名称进行分析。如果要解析的名称是平坦名称,就使用NetBios名称解析,如果名称中包括".",或者长度超过16个字符,就会使用DNS名称解析。一句话,就是先分析名称,然后再决定按哪种方式解析。而对于通用的基于Windows Socket的应用程序,会并行发起基于DNS的名称解析和基于NetBios的名称解析,但以DNS名称解析为主。
   同时,对于DNS名称解析和Wins名称解析,两者的解析顺序也是不同的。
DNS名称解析过程是:
    步骤1:用户输入一个名称地址
    步骤2:PC首先查询这个名称是不是就是本机
    步骤3:读本机的Hosts文件
    步骤4:查找DNS服务器
    步骤5:查找NetBios名称缓存
    步骤6:查找Wins服务器
    步骤7:广播
    步骤8:查找LMHosts文件

NetBios名称解析过程:
    步骤1:用户输入一个名称地址
    步骤2:查找NetBios名称缓存
    步骤3:查找Wins服务器
    步骤4:三次广播 
    步骤5:查找LMHosts文件 
    步骤6:读本机的Hosts文件
    步骤7:查找DNS服务器
    注意:对于上述步骤,如果中间某一步查询成功,解析过程立即结束,否则进入下一步。
           另外,对于NetBios名称解析过程的最后一步,平坦名称是不能直接提交给DNS服务器。在提交给DNS服务器之前,要将平坦名称转换为DNS结构的名称。
    具体动作如下:
           如果名称中没有一个包含“.",且名称长度少于16个字符,客户端会将计算机的DNS后缀附加到名称上,再将其发送给DNS服务器解析。
  
对于域用户来说,具体附加的DNS后缀是可以在”我的电脑“属性中看到,如图一所示
 
对于工作组用户来说,可以手动在”网络连接“TCP/IP属性的高级DNS设置中添加要附加的DNS后缀,如图二所示:
 
如果名称中包含“.",但没有最未尾的".",解析器会追加未尾的”.",并将其发送给DNS服务器,如果查询失败,解析器会追加完整的域名后缀,再将发送给DNS服务器。如果第一个DNS后缀无法获得主机记录,解析器会依次将事先配置好的所有备用的DNS后缀追加后发送给DNS服务器进行查询。
          如果所有的备用后缀查询都失败,解析器就会停止查询,返回提示信息!