FreeBSDNetBIOS名字解析
在个人计算机和局域网发展的早期,为了在个人计算机上实现网络能力,Microsoft和IBM合作开发了一套协议NetBIOS,这是一套用于网络通讯的调用接口,开发者IBM认为这套协议将如同它们设计的计算机BIOS一样成为最基本的网络访问接口,因此使用了NetBIOS这个名字。而Microsoft就使用NetBIOS接口开发网络服务器及相应的客户软件。然后IBM在Token Ring和Ethernet上直接实现了NetBIOS驱动,实现了位于NetBIOS 和物理网络层之间的各种具体接口,这些程序遵循的标准被称为NetBEUI。NetBEUI直接控制Token Ring和Ethernet驱动程序,因此它只能运行在局域网上。但是NetBIOS本身并没有对下层使用的协议进行限制,因此它除了可以在NetBEUI支持下运行之外,也可以在其他协议支持下运行。其他的网络开发者在另外的一些协议的基础上也实现了NetBIOS接口,例如TCP/IP,IPX以及Decnet等。其中NetBIOS over IP由于使用TCP/IP协议,因而在低层与Unix计算机相容,成为Unix和个人计算机系统通信的基础。
Windows系列计算机并不一定使用IP作它的网络传输协议,它也能使用IPX或NetBEUI作传输协议,但是FreeBSD不支持IPX或NetBEUI上的NetBIOS,必须为Windows客户配置IP协议,才能与FreeBSD相互共享资源。
NetBIOS名字解析
由于NetBIOS事实上是一种与TCP/IP独立发展的标准,虽然它可以使用TCP/IP作为传输协议,但是由于概念上的不同,它并没有利用TCP/IP提供的全部能力,而是使用自己的方式来完成类似的工作。其中最大的区别就在于名字解析方式上,NetBIOS具备自己独立的名字解析概念和能力,因此它使用的名字解析方式就与TCP/IP 中标准解析方式 ── DNS不同。在必须经过NetBIOS名字解析获得了一台命名相应的IP地址之后,NetBIOS 会话就可以建立在普通TCP连接的基础上了。因此在NetBIOS中,名字解析是NetBIOS会话与普通TCP 连接最大的不同之处。
NetBIOS名字解析与DNS名字解析的最大不同在于NetBIOS是动态的,计算机需要首先注册自己的名字,然后才能解析到该名字。动态解析虽然带来的很大的方便性,但却复杂和低效的多,因此只能用于小范围的局域网上。
每个NetBIOS的名字可以多达16个字符,第16个字符用来标识输入名字时使用的程序类型。当NetBIOS 的计算机进行通信时,它必须基于NetBIOS名字,而不能基于IP地址。一个NetBIOS服务程序必须首先注册自己的NetBIOS名字,而一个应用程序则需要查询所需要的NetBIOS名字。例如每台Windows计算机在启动之后初始化网络时就使用所配置的计算机名字来初始化其使用的NetBIOS名字。