第五部分NetBIOS这部分与宇航出版社的《MicrosoftWindowsNT4.0环境下的TCP/IP网络互联》中的第七、八、九章对应第一课基于TCP/IP的NetBIOS(第七章)一、基于TCP/IP的NetBIOS1.什么是NetBIOS名字?NetBIOS名字是网络基本输入/输出系统的首字母缩写语。NetBIOS名字是一个唯一的用于标识网络上NetBIOS资源的16字节地址(但用户只能定义15位,第16位是计算机自动添加的,用于输入使用的服务程序)。这个名称或者是唯一的(排他的)或者是成组的(不排他的)。唯一的名称通常用于将网络通信发送到计算机上的特定过程。组名称用于同时将信息发送给多个计算机。2.什么是NetBIOS名字解析把NetBIOS名映射到IP地址的过程二、解析方法1.NetBIOS名称缓存NetBIOS名称缓存区包括本地计算机最近解析的NetBIOS名称的本地缓存NBTSTAT命令Nbtstat-n列出客户机所注册的NetBIOS名称Nbtstat-c显示NetBIOS名缓存Nbtstat-R将带有#PRE参数的LMHOSTS文件中的条目重载到NetBIOS名称缓存2.本地广播当用户初始化NT命令时,就需要检查NetBIOS名称缓存以寻找与目标主机匹配的NetBIOS名称,这消除了网络上过多的广播。如果此名称最近曾被解析,对目标主机映射的条目保存在NetBIOS名称缓存中,广播就不发出了。如果NetBIOS名称没能从缓存中得到解析,源主机就在本地网络上广播带有目标主机NetBIOS名称的名称询问要求。在本网络上的每台计算机都接收到广播,并检查本地的NetBIOS名称表来看看它是拥有要求的名称。拥有这个名称的计算机形在一个名称询问响应。在响应发送之前,使用ARP来获得源主机的硬件地址。当获得硬件地址之后,就发送名称询问响应。3.LMHOSTS文件LMHOSTS文件是Microsoft用于增强广播功能的产物,它是一个静态文件,用于解析远程的基于WindowsNT的计算机和其它基于NetBIOS主机的NetBIOS名称/IP地址映射。文件位置:\systemroot\system32\driver\etc文件类型:文本文件,无扩展名LMHOSTS文件的内容如下形式:102.54.94.97rhino#PRE#DOM:networking#netgroup'sDC102.54.94.102appname\0x14#specialappserver102.54.94.123popular#PRE#sourceserver102.54.94.117localsrv#PRE#neededfortheinclude131.107.2.200Instruct#MHTCP/IP在WindowsNT4.0中的应用电话:82629800转115第2页共30页131.107.3.200Instruct#MH#BEGIN_ALTERNATE#INCLUDE\\localsrv\public\lmhosts#INCLUDE\\rhino\public\lmhosts#END_ALTERNATE注释:IP地址后必须有至少一个空格#是注释分隔符*不可有同名条目*主机、应用服务、域名都可注册主机名后可用空格做间隔再跟别名#PRE的条目被做为静态条目加入了名字缓冲区中(初始化时或用Nbtstat-R命令)#DOM:[domain_name]#BEGIN_ALTERNATE定义可替换的LMHOSTS文件位置的剩余列表#INCLUDE\\rhino\public\lmhosts在使用UNC名时必须能广播或在NetBIOS缓冲区中的#PRE条目能解析。#END_ALTERNATE4.WINS(MicrosoftWindowsInternetNameService)WINS是一个增强的NetBIOSNameService(NBNS),由微软设计来消除与基于TCP/IP的B-node实现相关的广播交通,并实现动态修改数据库;由于不是IP层的广播,所以提供了网间、域间浏览能力。在客户的TCP/IP属性中有WINS的选项,该设置使本地的节点类型变为H-node,通过“WINS地址”选项中WINS服务器的地址,与WINS服务器进行点到点的联系,要求进行名字解析;这个消除了广播带来的网络交通。如果没有配置WINS服务器,系统缺省使用MicrosoftenhancedB-node。如果在TCP/IP属性至少配置了一台WINS服务器,系统缺省使用H-node。对于DHCP客户端,修改节点类型的方法有两种:一是修改DHCP选项的46项,二是修改本机的注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameter。三、解析模式五种名字识别模式:◇B-node(广播)◇P-node(peer-to-peer)◇M-node(混合的,mixed)◇H-node(杂化的,Hybrid)◇Microsoft增强的B-node第二课实现WINS(第八章)现在我们看一看WINS服务器是怎样动态修改数据库的?一.客户端首先要在WINS客户端的TCP/IP属性中,“WINS地址”标签中可设置“主”和“二级”WINS服务器的IP地址。当客户每次启动计算机时,客户将会向WINS服务器注册。二.服务器端添加WINS服务,重启。会在AdministratorTools中加入WINSMananger工具三.WINS客户名称注册过程1.名称注册当客户机启动时,它向所配置的WINS服务器注册它的NetBIOS名称和IP地址。当服务或应用程序启动时(如Workstation、Server、Messenger,noclient),就可以注册NetBIOS名称。当WINS服务器可以访问并且名称没有被另一台WINS客户机注册一条成功的注册消息返回客户机,这条消息包括客户注册NetBIOS名称时间的长短,它被称为生存期(TTL,TimeToLive)。当发现重复名称时如果在WINS数据库中有重复的名称注册,WINS服务器向当前注册名称的拥有者发送Challenge。Challenge以名称询问要求的形式发送,WINS服务器每隔500ms间隔发送这些Challenge,共发送三次。如果注册的计算机是一台多地址的计算机,WINS服务器尝试它拥有的每个地址,直到它接收到响应或试过所有的IP地址。如果当前注册的拥有者成功地响应了WINS服务器,WINS服务器向试图重复注册这个名称的WINS客户机发送否定的名称注册响应。如果当前注册的拥有者没有响应WINS服务器,WINS服务器向试图注册这个名称的WINS客户机发送成功的名称注册响应。当WINS服务器不能被访问时WINS客户机将三次尝试(使用ARP)来寻找主WINS服务器。如果它三次尝试都失败了,名称注册要求将发送到二级WINS服务器(如果配置了)。当没有服务器可以访问时WINS客户可能通过广播来注册它的名称到主浏览列表。2.名称刷新名称刷新请求WINS客户机在生存期(TTL)过了1/8时第一次尝试刷新它的名称注册。如果WINS客户机没有接收到名称刷新响应,它将每隔2分钟就尝试一次刷新它的注册,直到TTL过半时。这时,WINS客户机将试图向配置了IP地址的二级WINS服务器刷新它的注册。在切换到二级WINS服务器时,WINS客户机试图每隔1/8TTL的时间刷新它的注册,就象它第一次刷新尝试那样,直到成功或TTL过半(四次尝试),然后它转回主WINS服务器。在客户机成功地刷新一次它的注册之后,当TTL过半时,它开始连续的名称注册请求。名称刷新响应当WINS服务器接收到名称刷新请求时,它向客户机发送带有新的TTL的名称刷新响应。3.名称释放名称释放要求当WINS客户机正确地关机时(强调正常关机的重要性),它直接向WINS服务器为每个注册的名称发送名称释放要求。名称释放要求包括要从WINS数据库中删除的客户机的IP地址和NetBIOS名称。TCP/IP在WindowsNT4.0中的应用电话:82629800转115第4页共30页名称释放响应当WINS服务器接收到名称释放要求时,它检查数据库以寻找特定的名称。如果WINS服务器遇到数据库错误,或者有一个不同的IP地址映射到注册的名称,它给WINS客户机发名称释放响应包括NetBIOS名称和设为0的TTL。4.名称询问和名称解析在客户查询时,如果名称没能从缓存中得到解析,那么就直接向WINS服务器发送名称询问请求。如果主WINS服务不可访问,客户机在转向二级WINS服务器之前再重新发送两次。当WINS服务器解析这个名称时,它向源主机发送带有与要求的NetBIOS名称相对应的IP地址的消息。如果没有WINS服务器可以解析名称,带有消息“Requestnamedoesn’texit”的名称询问响应被发送回WINS客户机,并实现广播。如果名称没有被缓存、WINS服务器或广播所解,名称仍然可能通过分析LMHOST或HOSTS文件或使用DNS进行解析。为了优化网络中的名称解析,对WINS服务器有如下要求:最好使用二台WINS服务器,这样确保有一定的余度,有更好的容错能力。每10000台WINS客户机配备一台WINS服务器和一台备份服务器。WINS服务器通常每分钟可以处理1500个名称注册及4500个名称询问。*WINS服务器支持多进程,有多处理器的计算机可以使每个处理器大约提高25%的能力。如果日志(LoggingEnable)被关闭(通过WINSManager菜单下的ServerConfigurationAdvanceloggingEnable),名称注册会更快,但是如果发生崩溃,有丢失最后几次更改的危险。(因为数据库的变化首先被写到Applicationlog中)四.非WINS客户的WINS实现(WINSProxy)非WINS客户想实现利用WINS服务器实现名称注册与解析,就需要一个中介,被称为WINSProxy;WINS代理必须是一个WINS客户机,并且不能是WINS服务器。非WINS客户想注册名称到WINS服务器的数据库中,必须手工加入非WINS客户想通过WINS服务器解析名称必须通过WINS代理。在一个WINS客户机上要想实现WINS代理,必须修改WINS客户机的注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameter中的EnableProxy的值为1,并重启计算机。静态项目加入的五种类型是:Unique:表示一个名称对应一个IP地址,例如是一台计算机配备一个网卡,也就是一台计算机配置一个IP地址时,就可以使用以类型。Domain-Name[1Ch]:这一个群组名称,用以保存域控制器的IP地址,此群组内最多可以输入25个IP地址。如果超过25个地址,WINS试图覆盖重复条目;没有重复条目时覆盖最老的条目。用0*1C作为后缀。Group:又称为正常组(normalgroup),它是一个群组名称,虽然必须输入计算机名称与IP地址,但是WINS服务器并不会将其成员的IP地址保存到其文件内,所以组中添加的成员个数没有限制。当WINS服务器收到查询此名称的要求后,它会回应一个FFFFFFFF的有限广播地址。例如当计算机送选择(select)主浏览器的广播包时,其广播的对象就是这个地址;广播名称包用来与组成员通信。Internetgroup:Internetgroup是使用者自定的群组,它让使用者可以将一些资源集合起来,例如打印机,以便于参照与浏览这些资源,此群组内最多可以输入25个IP地址。当你创建一个Internet组时,自动地增加三个唯一记录:InternetGroupName0*20、InternetGroupName0*3和InternetGroupName0*0。成员可以作为动态组注册的结果加入。然而,一个动态成员不能通过使用W