how to discover all netbios scopes on a LAN?

David Wuertele dave-gnus at bfnet.com
Wed Oct 22 20:31:01 GMT 2003


Chris Hertel sent me the following reply to my question, and asked me
to forward it to the list.

On Wed, Oct 22, 2003 at 11:40:03AM -0700, David Wuertele wrote:
> I would like my application to be able to enumerate all the netbios
> scopes that are in use on the LAN.
> 
> I thought that I might be able to do it by using NBSTAT request
> packets (nmblookup -S <IP ADDR>), but apparently NBSTAT replies only
> return names in the netbios scope given in the NBSTAT request.  If I
> don't know what netbios scopes are available, I won't be able to use
> NBSTAT to discover them :-(

Right.

The NBT layer creates virtual NetBIOS LANs on top of TCP/UDP/IP:

    +---------+
    | NetBIOS |
    +---------+
    |TCP | UDP|
    +---------+
    |   IP    |
    +---------+

...like so.  All of the nodes that participate in the "virtual NetBIOS
LAN" are said to be in the same "scope".  If all of the nodes are B nodes,
then the scope is limited to the IP broadcast domain.  If all of the nodes 
are P nodes, then the scope is limited to the entries in the NBNS 
database.  M and H mode scopes are the union of B and P mode scopes.

...but that has nothing to do with the ScopeID.

Think of the ScopeID as a vLAN tag.  The default ScopeID is "" (empty
string), so most NBT nodes are simply part of the "" scope.  If you add a
non-empty ScopeID (eg. "foo") then what you are doing is creating a new
virtual NBT LAN.  It is in the same IP space as the "" scope, but it is a 
*separate virtual NetBIOS LAN*.

I usually have to ice my cranium after pondering that for a while.

> How can my app discover all the netbios scopes in use on the LAN?

Ya can't.

Well... there's always a fudge.

One way is to sniff traffic, but that's a pain and it only collects 
information from the local LAN.

Another way is to ask the WINS server itself.  I have no idea how to do
this on a Windows WINS server, but you should be able to access Samba's 
WINS database.  At present, Samba periodically dumps its internal WINS 
database to the file "wins.dat".  It's a text file.  The ScopeIDs should 
be in there.

Have fun!

Chris -)-----

-- 
"Implementing CIFS - the Common Internet FileSystem" ISBN: 013047116X
Samba Team -- http://www.samba.org/     -)-----   Christopher R. Hertel
jCIFS Team -- http://jcifs.samba.org/   -)-----   ubiqx development, uninq.
ubiqx Team -- http://www.ubiqx.org/     -)-----   crh at ubiqx.mn.org
OnLineBook -- http://ubiqx.org/cifs/    -)-----   crh at ubiqx.org




More information about the samba-technical mailing list