By: +David Herron; Date: July 22, 2016
A "server" computer is one that's probably running continuously, and exists primarily to handle requests from client software. Client software makes a request of a server, waits for the response, then does something useful with that response. The phrase "client/server" describes this paradigm.
There are lots of kinds of server software - each serving its own purpose. The word "server" implies that the server software is in service to client software.
What's the difference?
Basically the difference between one server computer and another is the assigned purpose. The owner of the computer hardware designates one server for one purpose, another server for another purpose, and so on. The key determiner of the difference is what software is installed on each computer.
For the purpose of the above question:
- Web servers primarily respond to HTTP / HTTPS requests. Typical web server software is Apache, Nginx, Lighthttpd, etc.
- Application servers respond to any number of protocols depending on the application business logic. A typical application server is Tomcat, which runs Java EE application software.
- Database servers use database protocols ODBC, JDBC, etc. Typical database servers include MySQL, MariaDB, PostgresQL, Oracle, etc. There is also so-called NoSQL database software that uses other protocols.
The computer itself is agnostic to what software it's running. The computer is simply a CPU, some RAM memory, some storage (whether hard disk or SSD), network interfaces, etc. The hardware can be used for somewhat any purpose. Typically the difference is solely the software that's installed.
In a few cases there might be hardware differences between one server computer and another. A high-performance-computing server might have a few hundred CPU's, and be running specialized parallel computation software.