NetBIOS is neither merely a protocol nor a topology; it is an API which makes assumptions about both. Communication endpoints are addressed by 16-byte strings ("NetBIOS Names"). A machine can support multiple names, though it typically registers a primary "Machine Name/Workstation Name" upon joining the network. "Group names" may be shared by machines, implementing a multicast. There is no concept of routing (though a NetBIOS LAN may well be implemented over multiple routed networks).
NetBIOS LAN Emulation
Defined in RFC 1001 and RFC 1002, NBT/NetBT/TCPBEUI implements NetBIOS over TCP/UDP.
- Name Service: map NetBIOS names to network layer (IPv4/IPv6) addresses (UDP 137, TCP 137 specified but unused)
- 16-bit Transaction ID
- 16 bits of flags
- 16 bits each of Question Count, Answer Count, Additional Count, and Authority Count (just like DNS)
- Resource records, using NetBIOS encodings and NB (0x0020) resource types
- Datagram Service: delivery of NetBIOS datagrams over UDP (UDP 138)
- Session Service: establishment and maintenance of circuits over TCP (TCP 139)
- "Implementing CIFS" from the Samba team