NetBios协议详解及⽹上邻居⼯作原理
Netbois(⽹络基本输⼊/输出系统)最初由IBM,Sytek作为API开发,使⽤户软件能使⽤局域⽹的资源。⾃从诞⽣,Netbois成为许多其他⽹络应⽤程序的基础。严格意义上,Netbios是接⼊⽹络服务的接⼝标准。
  Netbios原来是作为THE⽹络控制器为IBM局域⽹设计的,是通过特定硬件⽤来和⽹络操作系统连接的软件层。Netbios经扩展,允许程序使⽤Netbios接⼝来操作IBM令牌环结构。Netbios已被公认为⼯业标准,通常参照Netbios-compatible LANs.
  它提供给⽹络程序⼀套⽅法,相互通讯及传输数据。基本上,Netbios允许程序和⽹络会话。它的⽬的是把程序和任何类型的硬件属性分开。它也使软件开发员可以免除以下负担:开发⽹络错误修复,低层信息寻址和路由。使⽤Netbios接⼝,可以为软件开发员做许多⼯作。
  Netbios使程序和局域⽹操作能⼒之间的接⼝标准化。有它们,可以将程序细化到为osi模型的哪⼀层所写,使程序能移植到其他⽹络上。在Netbios局域⽹环境下,计算机通过名字被系统知道。⽹络中每台计算机都有通过不同⽅法编的永久性名称。这些名称将在下⾯做进⼀步讨论。
  通过使⽤Netbios的数据报或⼴播⽅式,在Netbios局域⽹上的pc机建⽴会话彼此联络。会话允许更多的信息被传送,探测错误,和纠正。通信是在⼀对⼀的基础上的。数据报或⼴播⽅式允许⼀台计算机和多台其
他的计算机同时通信,但信息⼤⼩受限。使⽤数据报或⼴播⽅式没有探测错误和纠正。然⽽,数据报通信可以不必建⽴⼀个会话。
  在这种环境下所有的通信以⼀种称为“⽹络控制块“的格式提交给NetBIOS。内存中这些块的分配依赖于⽤户程序。这些“⽹络控制块“分配到域中,分别为输⼊/输出保留。
在当今的环境中,NetBIOS是使⽤很普遍的协议。以太⽹,令牌环,IBM PC⽹都⽀持NetBIOS。在它原始版本中,它仅作为程序和⽹络适配器的接⼝。从那以后,传输类功能加⼊NetBIOS,使它功能⽇益增多。
  在NetBIOS⾥,⾯向连接(tcp)和⽆连接(udp)通信均⽀持。它⽀持⼴播和复播,⽀持三个分开的服务:命名,会话,数据报。
[1.0.2] NetBIOS 名称
  NetBIOS名称⽤来在⽹络上鉴别资源。程序⽤这些名称开始和结束会话。你能⽤多个程序配置⼀台单独的机器,每个程序都有独特的NetBIOS名称。每台⽀持应⽤的pc机也有⽤户定义或通过内部⽅法获得的NetBIOS站名。
  NetBIOS能包含⾄多16个阿尔法数字字母。在整个资源路由⽹络⾥,字母的组合必须独特。在⼀台使
⽤NetBIOS的pc机在⽹络上能完全⼯作起来之前,pc必须先登记NetBIOS名称。
以下看仔细啦,⼀台机器开机啦~~他在⼲嘛??
  当客户端A活跃时,客户端A⼴播它的名称。当它成功⼴播⾃⼰,并没有其他⼈和它重名,客户端就登记成功。登记过程如下:
1.在登陆上,客户端A在所有地⽅⼴播它⾃⼰和它的NetBIOS信息6到10次(靠,这种办法Who想出来个,馊的。。。。),确保其他⽹络成员收到信息。(如果有机器没有收到,那该机的⽹上邻居⾥这个客户端A就隐⾝了)
2.如果有另⼀客户端B已⽤此名,另⼀客户端B发布它⾃⼰的⼴播,包括它正在使⽤的名字。请求登陆的客户端A停⽌所有登记的企图。
3.如⽆其他客户端反对登记,请求登陆的客户端A完成登记过程。如果有可⽤的名称服务器,那么名称服务器会在它的数据库⾥记上⼀笔,某机的名称是A,IP地址是XXX.XXX.XXX.XXX
4、当A机正常关机时,重新⼴播释放刚才注册的这个名字,同⼀⽹段上的计算机收到后把这个名字在⽹上邻居⾥就⿇油了。(靠,晕倒死正常关机。。。。。不正常呢?别急呀)如果⽹上有Wins服务器的话,客户机⾮正常关机⼀定时间以后,Wins也会注销这个名字。如果⿇油wins服务的话,您就对着⽹上
邻居⾥的图标撞⼤运吧~~,当⼼噢,这时候查询名字肯定是⼴播~~,如果你⽹上有个⼏⼗台机器,⼴播个N篇,再等回答 
  问题真的解决了吗?要知道⼴播包是很容易出问题的,尤其在机器数量较多的⽹络⾥,这就是⽹上邻居常常不到⼈的原因之⼀,并且⼴播不能穿过路由,所以不同⼦⽹的机器在⽹上邻居⾥是看不见地。(如果有wins服务器存在⽽且节点类型不是B,那还....稍好⼀点,不⼴播了。具体⽅式可参阅wins结点类型的相关资料)
  其实即使有些机器没有收到注册请求,也就是⽹上邻居⾥看不看见没什么⼤关系,只要A不恰好和B同名,如果有WINS服务那就更好了,你和他同名也没关系,WINS会更新纪录或拒绝A登记这个名字。当你试图和A机进⾏基于NetBios的通讯,⽐如传只⽂件什么的,那⾸先会查询NetBios名字,如果到就开始通讯。
  在NetBIOS环境中有两类名称:独特的和集合的。独特的名称必须在⽹络中独特。集合的名称不必在⽹络中独特,所有同名过程属于同⼀集合。每个NetBIOS节点包含⼀张该节点当前使⽤名称的表。
NetBIOS命名允许16个字母⽤在NetBIOS名称中。⽽微软只允许15个字母⽤在NetBIOS名称中,第⼗六个为NetBIOS后缀。NetBIOS后缀⽤在Microsoft networking 软件中,区别安装的功能,登记的设备和服务。
[注意:smb 和nbt(在tcp/ip上的NetBIOS)紧密的⼯作在⼀起,且都使⽤137,138,139端⼝。137端⼝是NetBIOS名称UDP,138端⼝是NetBIOS数据报UDP,139端⼝是NetBIOS会话tcp]嘿嘿,知道点安全常识的这个端⼝号不会没听说过吧,要⽹上邻居还是要安全⾃已考虑清楚噢~~
以下是Microsoft WindowsNT⽬前使⽤的NetBIOS后缀表。后缀是16进制。
名称数字类型⽤途
=========================================================================
=
00 U Workstation Service
01 U Messenger Service
<\\_MSBROWSE_> 01 G Master Browsertcpip协议在设计时就考虑了如何解决安全问题
03 U Messenger Service
06 U RAS Server Service
1F U NetDDE Service
20 U File Server Service
21 U RAS Client Service
22 U Exchange Interchange
23 U Exchange Store
24 U Exchange Directory
30 U Modem Sharing Server Service
31 U Modem Sharing Client Service
43 U SMS Client Remote Control
44 U SMS Admin Remote Control Tool
45 U SMS Client Remote Chat
46 U SMS Client Remote Transfer
4C U DEC Pathworks TCPIP Service
52 U DEC Pathworks TCPIP Service
87 U Exchange MTA
6A U Exchange IMC
BE U Network Monitor Agent
BF U Network Monitor Apps
03 U Messenger Service
00 G Domain Name
1B U Domain Master Browser
1C G Domain Controllers
1D U Master Browser
1E G Browser Service Elections
1C G Internet Information Server
00 U Internet Information Server
[2B] U Lotus Notes Server
IRISMULTICAST [2F] G Lotus Notes
IRISNAMESERVER [33] G Lotus Notes
Forte_$ND800ZA [20] U DCA Irmalan Gateway Service
独特的(u):该名仅有⼀个IP地址分给它。在⽹络设备中,⼀个名称的多次出现看来会被登记,但后缀是唯⼀的,使整个名称唯⼀。
集合的(g):普通集合,⼀个名称可有多个IP地址。
多址的(M):名称是唯⼀的,但由于在同⼀计算机上有多个⽹络接⼝,这种配置应该被允许登记。地址的最⼤数⽬是25。
Internet集合(I):这是组名的特殊配置,⽤在操作WINDOSNT的域名。
域名(D):在NT4.0中新引进的。
为了快速浏览⼀台服务器上登记的NETBIOS名称和服务,⽤以下命令:
nbstat -a [ipaddress]
nbstat -a [host]
[1.0.3] NetBIOS 会话
  NetBIOS 会话服务提供给⽤户程序⼀种⾯向连接,可靠的,完全双重的信息服务。NetBIOS要求⼀个是客户端程序,⼀个是服务器端程序。NetBIOS会话的建⽴需要双⽅预定的合作。⼀个程序必须先发出listen命令,其他程序才可以发出call命令。listen命令参考在它的NetBIOS名称表中的名称(或windows服务器中的),也参考⽤于作为会话另⼀端的远端程序的名称。如果聆听者不在聆听,call命令将不会成功。如果call成功,各程序将接到会话id,以作为会话建⽴的确认。
send和receive命令操作传输数据。在会话最后,各程序将执⾏挂起命令。没有为会话服务的实际流控制,因为假定局域⽹⾜够快,能够传输需要的数据。
[1.0.4] NetBIOS 数据报
  数据报可以发送到特定的地点,或组中所有成员,或⼴播到整个局域⽹。与其它数据服务相⽐,NetBIOS数据报是⽆连接,⾮可靠的。Send_Datagram 命令需要调⽤者设定⽬的名。如果⽬的名是组名,组中每个成员都收到数据。Receive_Datagram 命令的调⽤者必须确定它接收数据的本地名。除了实际数据外,Receive_Datagram也返回发送者的名称。如果NetBIOS收到数据,但却没有
Receive_Datagram 命令在等待,数据将被丢弃。
  Send_Broadcast_Datagram 命令发送信息给本地⽹上每个NetBIOS系统。当BetBIOS节点收到⼴播数据,发布
Receive_Broadcast_Datagram 命令的每个进程都收到数据。如果当⼴播数据被收到时,没有这些命令在运⾏,数据将被丢弃。
  NetBIOS使应⽤程序能和另⼀个设备建⽴会话,使⽹络转发器和处理协议处理收到、发送到另⼀台机器的请求。NetBIOS实际上不操作数据。NetBIOS定义规定了⽤来到达这些服务的协议的⽹络接⼝,⽽
⾮协议本⾝。历史上,NetBIOS曾与叫做NetBEUI的协议(⽹络扩展⽤户接⼝)捆绑。接⼝和协议的结合有时引起混淆,但它们是不同的。
  ⽹络协议为定位、连接到⽹络上特定的服务提供⾄少⼀种⽅法。这通常由将节点和服务名转化为⽹络地址(名称解析)完成。在连接⽤TCP/IP建⽴前,NetBIOS服务名必须解析成IP地址。⼤多数NetBIOS的TCP
/IP实现,⽤⼴播或LMHOSTS⽂件完成名称地址的解析。在Microsoft环境中,你最可能使⽤叫做WINS的NetBIOS
名称服务器。
[1.0.5] NetBEUI 解释
  NetBEUI是⽹络操作系统使⽤的NetBIOS协议的加强版本。它规范了在NetBIOS 中未标准化的传输帧,还加了额外的功能。传输层驱动器经常被Microsofts LAN Manager(微软局域⽹操作器)使⽤。NetBEUI执⾏OSI LLC2 协议。NetBEUI是原始的PC⽹络协议和IBM为LanManger(局域⽹操作器)服务器设计的接⼝。本协议稍后被微软采⽤作为它们的⽹络产品的标准。它规定了⾼层软件通过NetBIOS帧协议发送、接收信息的
⽅法。本协议运⾏在标准802.2数据链协议层上。
[1.0.6] NetBIOS 范围
  NetBIOS范围ID为建⽴在TCP/IP(叫做NBT)模块上的NetBIOS提供额外的命名服务。NetBIOS范围ID的主要⽬的是隔离单个⽹络上的NetBIOS通信和那些有相同NetBIOS范围ID的节点。NetBIOS范围ID是附加在NetBIOS名称上的字符串。两个主机上的NetBIOS范围ID必须匹配,否则两主机⽆法通信。NetBIOS范围ID允许计算机使⽤相同的计算机名,不同的范围ID。范围ID是NetBIOS名称的⼀部分,使名称唯⼀。
NETBIOS是不可路由的服务,如果要实现不同⽹段的主机名服务,需要设置WINS来解析。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。