微软系统的名称解析 方涛 苏燕翎 2000年 第31期   在局域网上我们彼此能互相进行通讯,实际上是靠网卡进行的。制造商为每个网卡分配了一个唯一的12位八进制的MAC地址,计算机的物理地址就是网卡的MAC地址,然后用户为这台计算机命名一个易于记忆的、有意义的名字,再由网络管理员给这台计算机分配一个静态或动态的IP地址。在操作上,两台计算机之间的通讯对用户来说只要知道对方的计算机的名字就可以了;而在实际上,实现两台机器之间的通讯是先通过目标计算机的名字找到它的IP地址(这个过程称为名称解析),再通过IP地址找到它的物理地址(这个过程称为地址解析)。地址解析是由ARP协议实行的——它将主机的IP地址映射为硬件地址。   微软系统能够使用以下方法中的一种或几种将计算机名解析为IP地址:NetBIOS名称高速缓存器、NetBIOS命名、WINS服务器、广播、LMHOSTS文件、HOSTS文件、DNS服务器。   1.NetBIOS名称高速缓存器:   在该缓存中,包含本地登记的计算机名称和最近转换为IP地址的本地的计算机名称。“名称解析”开始后,先在该缓存中查找IP地址,如果没有再用其它解析方法。可使用nbtstat -n指令来查阅你的计算机的NetBIOS名字,将计算机的NetBIOS命名转化为IP地址的过程称为“NetBIOS命名解析”。   2.广播解析:用户与另一目标主机通讯时,先在NetBIOS命名缓存中查找与目标主机的NetBIOS名相符的IP地址,若该命名不存在,则源主机在本地网上为目标主机的NetBIOS名广播一个“命名查询”请求,在本地网上的每个计算机都会接收到这个广播,然后检查自己的本地NetBIOS缓存,以确认自己是否拥有该申请名,若有则发回命令查询应答,两机之间建立会话。当目标主机在本地网上时,NetBIOS用广播解析主机名;不在同一网络段上时,路由器一般不转发广播,因为转发广播增加了网络传输量,影响网络性能。   3.WINS 解析:WINS服务器又称NetBIOS命名服务器。这是微软为在基于路由选择的TCP/IP网络中解决NetBIOS问题的而设计的,它是一个动态数据库,登记和解析网络中的WINS客户的NetBIOS计算机名到IP地址的映射。在系统启动过程中,WINS客户使用一个WINS服务器登记其计算机名称和IP地址,解析开始后,先在NetBIOS命名缓存中检测是否有与目标主机的NetBIOS名相对应的IP地址,若未发现有,则将请求发至首WINS服务器,如果WINS没有响应,将请求发三次,如果还未找到源主机,则再与次WINS服务器联系,否则报告出错信息。   4.LMHOSTS文件:用于将远程主机的NetBIOS名映射为IP地址,最适于网络上没有WINS服务器或跨越不同网络区段的环境,可手工编辑该文件。在该文件中,被认为#PRE的记录行在系统启动后会被预先载入内存中,因此应尽量将常用的地址加入#PRE,让其预载入内存,以加快查询速度;另外为节省时间,尽量将属于其它网络区段的记录放在最前面。解析过程是:先在NetBIOS命名缓存中查找,如果没找到,广播查询,如果查询的计算机在其它网络区段的话,再转而查找LMHOSTS文件。另外如果该计算机启用了WINS功能后,它就会先向WINS服务器查询IP地址,如果失败,则改为利用广播方式查询IP地址,如果再失败,则查询LMHOSTS文件。   5.Hosts文件:用于将远程主机的URL域名映射为IP地址。用户可以把Internet上常用的网站,通过在命令行中键入“ping 网站地址”(如ping www.microsoft.com)来获得IP地址,然后将网站地址和IP地址记录输入Hosts文件,这样,不但可以加快上网速度,也可以在DNS服务器出故障时照常上网冲浪。Hosts文件必须驻留在每台计算机上。   6.DNS服务器:是为标识Internet上的主机,提供分级命名系统的一种分布式数据库,用以将域名解析为IP地址。   解析过程一般按照以下顺序进行,直到有一种方法能解析为止,否则报告出错信息:   检测NetBIOS命名缓存器→与WINS服务器联系→在本地网广播→LMHOSTS文件进行解析→对Hosts文件进行解析→查询DNS服务器。