新进化论

道生一,一生二,二生三,三生万物。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

netbios是在PC时代早期,那时候各厂家都生产发明各自的网络,TCP/IP还没成为主流。

苹果有Apple talk, Digital有DECnet,IBM有SNA网络。SNA相对PC是大家伙,于是IBM雇佣了一家叫做Sytec的公司开发了"PC Network".

这个PC network是一个适用于PC的小型局域网,最多80个节点的没有路由的小型网络。NetBIOS是用于该网络数据通讯的软件API。

它提供了一套命令可以控制硬件,建立和删除会话,传输数据等。

从微软的Dos 3.0时代微软就可以使用NetBIOS传输SMB文件服务消息,PC Network的硬件系统后来就消失了,但是这套软件协议NetBIOS流传了下来。

很多其他厂商为了分得微软桌面的一杯羹,也设法在他们自己的网络产品上实现NetBIOS API.

例如NetBIOS over DECnet, NetBIOS over NetWare,NetBIOS over SNA, NetBIOS over TCP/IP....等等。

其中最重要的是NetBIOS over TCP/IP,又称为NetBT或者NBT, NBT属于OSI第五层session layer.

 

 Unix系统和NBT网络交互直接建立在TCP/IP包上面。其基于RFC 1001 and RFC 1002。该RFC描述了NetBIOS LANs over IP.

NetBIOS是一个提供API的驱动程序;它既不是协议也不是拓扑。但是,API确实对底层网络的工作原理做出了许多假设,并且它提出了一些古怪的限制。术语"NetBIOS Network"和"NetBIOS LAN"通常用于标识网络体系结构,该体系结构实质上由 NetBIOS API‎‎定义‎‎。‎

RFC 1001 和 1002 列出了实现 模拟NetBIOS LAN 必须支持的三种基本服务。这些是

name service. TCP 137

the Datagram Service(based on UDP 138)

the Session Service  (Based on TCP 139)

名称服务用来映射NetBIOS名称到IP地址。

后面两种服务其实就是提供基于UDP和TCP的NetBIOS数据包传输服务。

‎NetBIOS LAN 架构非常简单。没有路由器,没有交换机,只有一堆连接到(虚拟)电线的节点。与IP不同,不需要单独的硬件地址,网络地址甚至端口号。相反,通信终结点由称为"NetBIOS 名称"的 16 字节字符串标识。‎

‎NetBIOS 寻址是动态的。应用程序可以根据需要添加名称,并在完成后删除这些名称。LAN 上的每个节点还将具有一个默认名称,称为‎‎"计算机名称"‎‎或"‎‎工作站服务名称",‎‎通常在 NetBIOS 启动时添加。添加名称的过程称为‎‎注册‎‎。‎

‎可以注册两种类型的名称:‎‎唯一‎‎和‎‎组‎‎。组名可以由多个客户端共享,从而为多播提供了一种机制。相反,每个 LAN 只能由一个客户端使用唯一名称。但请记住,这些是虚拟 LAN,实际上可能分布在路由 IP 互联网络中的不同子网中。‎

 

图例:‎除了其计算机名称外,此 IP LAN 上的一些节点还注册了组名‎‎Lindisfarne‎‎ 。节点‎‎Mick‎‎和‎‎Ringo‎‎不是‎‎Lindisfarne‎‎组的成员‎

‎名称服务应跟踪虚拟 LAN 中正在使用的所有 NetBIOS 名称,并确保发送到给定 NetBIOS 名称的消息被定向到正确的基础 IP 地址。它通过两种方式执行此操作:‎

‎在 IP 局域网上‎

‎每个节点都保留其已注册的名称列表(即它"拥有"的名称)。发送消息时,第一步是发送IP广播查询,称为‎‎名称查询请求‎‎。如果 IP LAN 上有拥有查询名称的计算机,它将通过发送‎‎名称查询响应进行回复‎‎。‎

‎因此,要向已注册了‎‎EADFRITH‎‎名称的节点发送消息,发送者会喊出"哟!埃德弗里斯!‎‎EADFRITH‎‎以"我在这里!"消息回应,并提供其IP地址。‎

‎这被称为"B模式"(广播)名称解析,参与者被称为"B ‎‎n‎‎ odes"。在 B 模式下,每个节点都会跟踪并回答其自身名称的查询,因此 NetBIOS 名称服务"数据库"是一个分布式数据库。

 

   

‎图 2.3.B 模式名称解析‎

‎节点‎‎查德‎‎希望联系节点‎‎Eadfrith。‎‎由于底层传输是IP,‎‎乍得‎‎必须首先发现‎‎Eadfrith‎‎的IP地址。‎

‎Chad‎‎向本地网段上的所有节点发送广播名称查询,要求‎‎Eadfrith‎‎做出响应。所有其他节点都应忽略该请求。‎

 

‎通过路由互联网‎

‎广播并不意味着要跨越子网边界,因此当节点被路由器分隔时,将使用不同的机制。‎

‎网络管理员选择一台计算机作为‎‎N‎‎ et ‎‎B‎‎ IOS ‎‎N‎‎ ame ‎‎S‎‎ erver (NBNS,又名 WINS Server)‎‎[1]‎‎).通常,这将是运行Samba的Unix主机,或者Windows NT或W2K服务器。为了使用 NBNS,必须为参与虚拟 NetBIOS LAN 的所有节点提供服务器的 IP 地址。这可以通过在客户端的 NetBIOS 配置中输入地址来完成,或者在 Windows 系统上通过 DHCP 输入地址来完成。‎

‎[1]‎‎微软称他们的NBNS实现为‎‎"W‎‎ indows ‎‎I‎‎ nternet ‎‎N‎‎ ame ‎‎S‎‎ ervice"(WINS)。术语WINS现在通常用于代替NBNS,但我们会迂腐并坚持后者。‎

‎NBT 客户端节点将 NetBIOS 名称注册和查询直接发送到 NBNS,NBNS 维护虚拟 LAN 中所有已注册名称的中央数据库。这称为"P 模式"(点对点)名称解析,其参与者称为"P 节点"。‎

 

 

‎这是 NetBIOS 名称解析基于 NBT 的两种基本模式。当然,还有其他的。RFC 描述了结合了 P 和 B 模式特征的"M 模式"(混合模式)。"H模式"(混合模式)是后来引入的;它类似于 M 模式,除了应用 B 和 P 模式行为的顺序。‎

‎名称服务在 UDP 端口 137 上运行。根据 RFC,对于某些查询,TCP 端口 137 的使用可以协商,尽管很少有(如果有的话)实现实际支持这一点。‎

 

基于UDP的数据传输可以有两种方式unicast和多播

 

posted on 2021-12-17 11:21  岌岌可危  阅读(809)  评论(0编辑  收藏  举报