What do WINS and DNS do?
Windows NT 3.5 offered the Windows Internet Name Service (WINS). Most of us
had no idea what it did, but we soon figured out that we pretty much needed it.
The rest of the Internet world seemed to be using something similar, but
incompatible: the Domain Name System (DNS).
What is WINS, and, well, why isn't it DNS? The short answer
is that WINS and DNS have somewhat different jobs. Consider the two following
commands, both issued to the same server:
ping server01.bigfirm.com and net use * \\server01 \mainshr
The ping command refers to the server as server01.big firm.com. The net use
command calls the same server server01. The difference is important.
Why Two Different Names?
The ping command is a platform-independent, TCP/IP/Internet kind of command.
It's valid on UNIX, VMS, Macintosh, and MVS--so long as the machine is running a
TCP/IP protocol stack. On any of these platforms, you can issue a ping only if
you're running TCP/IP. The command's syntax is the same on every OS, but the
response varies from platform to platform. For example, when the command is
successful, many UNIX implementations of ping return the message, "server01.bigfirm.com
is alive" (UC Berkeley used to have a machine named Elvis, so you could
type ping Elvis and get the response, "Elvis is alive"). In contrast,
Microsoft implementations of ping respond with something like, "Reply from
[IP address]..."
In contrast to ping, net use is a Microsoft platform-specific networking
command that is independent of protocol. You can do a net use on an NT network,
no matter what protocol you're running, but the command usually isn't valid on a
UNIX, VMS, Mac, or other machine. Microsoft networking is designed to work on
PCs and machines built on the MIPS, PowerPC, and Alpha chip sets.
The difference between ping and net use goes back to the network API that
each command is based on. The ping command is based on the TCP/IP Sockets
interface--actually, on the common PC implementation of TCP/IP Sockets, the
Winsock interface. Basing ping on Sockets was a good idea, because this approach
makes creating a ping for any OS simple, as long as the computer has a Sockets
interface. In fact, people use basically the same source code to create ping for
PCs, UNIX machines, VMS machines, and Macs.
The server01.bigfirm.com reference is to a DNS name, so for ping to
recognize server01.bigfirm.com, you need a DNS name resolver (a DNS server) on
your network. The ping command works only with IP addresses, not names; ping
must know that server01.bigfirm.com is at IP address 212.33.14.88. Translating
from the human-friendly name server01.big firm.com to the ping-friendly
212.33.14.88 is Winsock's job, and it calls on DNS to help. That need for two
types of address is why NT 4.0 has a DNS server--to handle name resolution for
Winsock-based programs.
net use is built on a different programming interface, the NetBIOS API.
This API is based on a fairly old and simple network protocol that Sytek and IBM
invented in the mid-1980s. The original NetBIOS protocol no longer exists: It
has mutated into the NetBEUI protocol. Because existing networking programs were
built under the assumption that NetBIOS would continue to be around, NetBEUI
retained NetBIOS as its programming interface.
By the way, when you read network documentation, remember that NetBEUI is
the network protocol and NetBIOS is the network programming interface that first
appeared on NetBEUI. Although I'm drawing my examples from the net commands,
they're not the only important programs built on NetBEUI. The Microsoft File
Server System and Network Neighborhood are examples of two applications that
won't work on a computer that doesn't have NetBIOS.
NetBEUI was Microsoft's protocol of choice until as recently as 1993, I
recall Microsoft bigwig Steve Ballmer preaching that the speed of what he called
JetBEUI would assure NetBEUI's eventual preeminence in the networking
market. So Microsoft's networking tools have traditionally been built on
NetBIOS, NetBEUI's programming interface. The net.exe program, the networking
shell for Microsoft networking, cannot run unless NetBIOS is present and cannot
use other programming interfaces such as Winsock. (However, Microsoft intends to
eventually change that restriction: A version of net.exe called inet.exe works
just like net but runs atop Winsock.)