Main Page>Table of contents>Overview of NetBIOS-over-TCP/IP>Transprot Driver Interface>
One of the few nice things about NetBIOS is that it is simply an API. It does not rely on any specific underlying protocols to connect systems together. For example, Windows for Workgroups' redirector and server (as well as the NetBIOS applications) just talk to the NetBIOS APIs. These APIs can be provided by any protocol. Windows for Workgroups provides NetBEUI and IPX protocols, both of which have NetBIOS APIs available to them. This would allow you to run your Windows for Workgroups file- and printer-sharing (as well as the NetBIOS applications) over IPX if you wanted to. Other vendors provide other protocols with NetBIOS interfaces. Digital's DECnet for example can be used as a transport for Windows for Workgroups' native networking. So can Cisco's Suite 100 for Windows TCP/IP stack. However, all of the systems that wish to communicate with NetBIOS must use the same low-level transport protocol. Otherwise, they would never see each other, and the NetBIOS API would be useless.
In order to provide a consistent interface to these protocols, Windows for Workgroups uses a module called the Transport Driver Interface (TDI). TDI provides a link between NetBIOS and the underlying protocols. Without this interface, the redirector software would need to explicitly understand each of the protocols and their capabilities. Whenever a new protocol was introduced, the redirector would have to be re-written. With TDI, it doesn't have to know anything specifically about any of these protocols. It simply needs to communicate with TDI, which handles the necessary conversion and spoofing needed to make the network software work over the chosen protocol.
The biggest problem with this design is that there must be a virtual protocol for the redirector to communicate with. In the case of LAN Manager derivatives such as Windows for Workgroups, that protocol happens to be NetBIOS, which as we've seen isn't very robust. In order for TCP/IP or IPX to act like NetBIOS, lots of trickery has to occur. You lose a lot of the features that came with the underlying protocols by using a lowest-common-denominator approach such as this.