I was surprised to find myself struggling with this concept a bit the other day, since I have spent many years around servers, and have some running at home as well. There’s kind of a feelings answer and a precise answer. Let’s start with the feelings one. A server:
- Is rack mountable and shaped like a pizza box.
- Is the kind of computer they use at work in the server room.
- Has redundant things like dual power supplies and NICs.
- Has a raid card with battery powered cache.
- Has a Xeon CPU.
- And so on…
While these sort of definitions are attributes of many, perhaps most, servers, I realized they were inadequate, as they really do not get at the functional aspect of servers–the reason they get purchased.
What got me really thinking about a specific definition of a server was the availability of versions of Windows Server (and Linux from day 1) that do not have support for a Graphical User Interface. So, I got to thinking about the notion of a desktop computer being primarily a visual server for the user–either GUI or character based as in the heyday of the DOS based personal computer.
And by sort of considering the inverse of this, I conceived a more precise definition of a server as being a computer that listens on a given IP address and port and responds to queries or service requests sent in from the network. This helped me understand why the Apple Server software is simply an add-on that provides various TCP accessible services without the need for a distinct operating system. Needless to say, by this definition a desktop computer can act as a server as well.
Naturally, all desktop computers act as servers in at least a minor respect, such as being an ICMP server and responding to pings. But obviously its more significant protocols that we traditionally think about when setting up a server: DHCP, FTP, Database, SMB, NFS, AFP, Web, DNS and the 600 pound gorilla of large organization services–utilizing a variety of ports and protocols–Active Directory. Any useful server probably ought to have remote administration capability by providing a Telnet or SSH service, though such service is not typically considered useful beyond administering a server. To the extent that a server provides a visual server–a GUI interface, it is extremely helpful if said server can operate well in “headless” mode; not requiring a physically attached keyboard, mouse, and monitor.
Beyond servers simply responding to network traffic, I will to add another class of server to my definition–kind of a server server–the Virtual Machine Host. Revolutionary in its ability to blur the lines between hardware and software, and bring economies of administration and hardware to organizations.
Just some thoughts I found interesting. I was surprised to find my thinking as fuzzy as it was on these concepts.