Itís all about Communication
The internet is like an onion Ė itís made up of layers. TCP/IP is fine for getting messages back and forth between computers but when it comes to exchanging information for a specific task certain rules have to be followed. These rules of communication frequently sound like Victorian etiquette, but they allow what are basically unthinking machines to hold useful Ďconversationsí and exchange information.
Each different protocol has its own grammar and different options, defined through a variety of different processes depending on the origin of the specification. For instance, web servers use HTTP (HyperText Transfer Protocol) where a client specifies what kinds of files and methods of transfer it understands as well as the page/file itís requesting and the server then replies with the requested file in a format thatís going to be understood. HTTPís various versions have been specified by the W3C, which also specifies HTML (HyperText Markup Language) which defines how web pages are described. Mail servers use SMTP(Simple Mail Transfer Protocol) and file transfers can be carried out using FTP(File Transfer Protocol). Each protocol describes what messages a computer has to send in order to receive the information it wants and what form the responses will be in.
What makes a Server?
Thereís a lot of confusion about servers Ė people tend to imagine a really big box capable of wonders that mere PCs arenít capable of. In fact, a server isnít a piece of hardware at all Ė a server is any piece of software that sits waiting for clients to make requests of it. So a web server will deliver web pages on demand, a mail server holds email, an FTP server holds files, etc. A client is the program which makes requests for the files/email/web pages/etc.
If these programs are delivering important data (such as email for a university) then they will tend to be run on very stable, expensive hardware thatís extremely reliable. These computers are what people tend to think of when they think of servers.
Clients and Servers and P2P - Oh myÖ
In short, a server is any program which services requests; a client is any program which makes requests. There isnít really any halfway house between these two types of programs, but there are programs that are both clients and servers.
Take, for instance, email servers. The internet standard for sending email is SMTP (Simple Mail Transfer Protocol), which specifies how email is passed from machine to machine. If you connect to the internet via an ISP then they will provide a SMTP server to deliver email to the rest of the internet. When you send an email it connects to their SMTP server and transfers the message to them. Their SMTP server then connects to the SMTP server of the recipient and transfers it to them. The email is then picked up by the recipient via one of a variety of different means. The important bit is that when you connect to your ISPís SMTP computer it is acting as a server, but when it connects to the destination server it is acting as a client.
The other major example is P2P (Peer to Peer) programs. These tend to act as both client and server Ė client to download, server to upload. They initiate connections outwards to find existing servers, but also advertise their location so that other people can connect to them.
This work is licensed under a Creative Commons License.