• Netbios重新理解


    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和多播

  • 相关阅读:
    APP性能测试中的几个重要概念
    linux初学体会
    Centos 关闭指定端口的进程
    【初学Python】01-第一个小说爬虫
    SQLsever存储过程分页查询
    记MVC学习过程中一次传参到View时遇到的错误
    未能加载文件或程序集“System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项
    Android Studio导包无效,全部报红
    记一次使用SimpleDateFormat 格式化时间时遇到的问题
    Spring-Boot中Tomcat端口修改
  • 原文地址:https://www.cnblogs.com/jjkv3/p/15701563.html
Copyright © 2020-2023  润新知