NetBIOS over TCP/IP
From Wikipedia, the free encyclopedia
NetBIOS over TCP/IP (NBT, or sometimes NetBT) is a networking protocol that allows legacy computer applications relying on the NetBIOS API to be used on modern TCP/IP networks.
NetBIOS was developed in the early 1980s, targeting very small networks (about a dozen computers.) Some applications still use NetBIOS, and do not scale well in today's networks of hundreds of computers when NetBIOS is run over NetBEUI. When properly configured, NBT allows those applications to be run on large TCP/IP networks (including the whole Internet) without change.
NBT is defined by the RFC 1001 and RFC 1002 standard documents.
Contents |
[edit] Services
NetBIOS provides three distinct services:
- Name service for name registration and resolution
- Session service for connection-oriented communication
- Datagram distribution service for connectionless communication
NBT implements all of those services.
[edit] Name service
In NetBIOS, each participant must register on the network using a unique name of at most 16 characters. In legacy networks, when a new application wanted to register a name, it had to broadcast a message saying "Is anyone currently using that name?" and wait for an answer. If no answer came back, it was safe to assume that the name was not in use. However, the wait timeout was a few seconds, making the name registration a very lengthy process, as the only way of knowing that a name was not registered was to not receive any answer.
NBT can implement a central repository, or Name Service, that records all name registrations. An application wanting to register a name would therefore contact the name server (which has a known network address) and ask whether the name is already registered, using a "Name Query" packet. This is much faster, as the name server returns a negative response immediately if the name is not already in the database, meaning it is available. The Name Service, according to RFCs 1001 and 1002, is called NetBIOS Naming Service or NBNS. Microsoft's WINS Service is just an implementation of NBNS.
The packet formats of the Name Service are identical to DNS. The key differences are the addition of NetBIOS "Node Status" query, dynamic registration and conflict marking packets. They are encapsulated in UDP. Later implementation includes an optional Scope part of the name, making NetBIOS name hierarchical like DNS, but this is seldom used.
In addition, to start a session or to send a datagram to a particular host rather than to broadcast the datagram, NBT will have to determine the IP address of the host with a given NetBIOS name; this is done by broadcasting a "Name Query" packet, and/or sending it to the NetBIOS name server. The response will have the IP address of the host with that name.
It is interesting to note that NBNS is one of the first proper dynamic peer-to-peer distributed name registration services. The reputation of the NBNS protocol was brought into disrepute by Microsoft: it earned a bad name for being 'chatty', swamping networks with dynamic registration traffic on multiple protocols (IPX/SPX, NETBEUI and TCP/IP) as people badly misconfigured their machines and their networks. The principles implemented in NBNS have been reimplemented many times, including in such systems as ZeroConf and MobileIP.
[edit] Session service
Session mode lets two computers establish a connection for a "conversation," allows larger messages to be handled, and provides error detection and recovery.
Sessions are established by exchanging packets. The computer establishing the session attempts to make a TCP connection to port 139 on the computer with which the session is to be established. If the connection is made, the computer establishing the session then sends over the connection a "Session Request" packet with the NetBIOS names of the application establishing the session and the NetBIOS name to which the session is to be established. The computer with which the session is to be established will respond with a "Negative Session Response" indicating that no session can be established (either because that computer isn't listening for sessions being established to that name or because no resources are available to establish a session to that name) or a "Positive Session Response" indicating that a session can be established.
Data is transmitted during an established session by Session Message packets.
TCP handles flow control and retransmission of all session service packets, and the dividing of the data stream over which the packets are transmitted into IP datagrams small enough to fit in link-layer packets.
Sessions are closed by closing the TCP connection.
[edit] Datagram distribution service
Datagram mode is "connectionless"; NetBIOS datagrams are sent over UDP. A datagram is sent with a "Direct Unique" or "Direct Group" packet if it's being sent to a particular NetBIOS name, or a "Broadcast" packet if it's being sent to all NetBIOS names on the network.
[edit] See also
[edit] External links
- [1] - open-source program to scan IP networks for NetBIOS name information