Client Server architecture
The client server architecture is a computer architecture which separates a client computer from a server computer and is most implemented in a computer network such as the Internet. Each client or server connected to the network can be referenced as a node. The most common type of client server architecture includes only two types of nodes: client and server. This type of architecture is sometimes called 2-tier architecture. The 2-tier architecture makes possible the sharing of files and resources between devices connected to the computer network.
A client is a computer that requests a service of a server. The service can be localized in other computer or in the same computer that requests the service, that is, the client computer can act as a server too.
Access to the service is available through some type of interface.
Types of clients
Common types of clients include:
- Web browser - a web browser is a software application that enables a user to display and interact with text, images, videos, music and other information typically located on a web page at a website on the world wide web or a local network.
- Email client - an e-mail client, also known as mail user agent (MUA) is a frontend computer program used to manage email. Sometimes, the term e-mail client is also used to refer to any agent acting as a client toward an e-mail server, independently of it being a real MUA, a relaying server, or a human typing directly on a terminal. In addition, a web application such as the Gmail from Google providing the relevant functionality is sometimes considered an email client.
- Online chat client - an online chat client or instant messaging client is a software application that enables the user to engage in instant messaging.
A server is a computer that accepts connections to serve the requests of client computers. The server sends responses to the client computers. A server is generally connected to a computer network.
Types of servers
The most common types of servers are:
- Application server - a computer with a software engine that delivers applications to client computers or devices, typically through the Internet and using the hyper text transfer protocol (HTTP). The application server handles most, if not all, of the business logic and data access of the application.
- Backup server - a computer responsible for safekeeping important business files, financial records, and personal music and pictures so that in case of the original files be deleted there will still exist a copy.
- Database server - a computer responsible for the provisioning of database services to other computer programs or computers. Database servers store the database on a dedicated computer system, allow it to be accessed concurrently, maintain the integrity of the data, and handle transaction support and user authorization. A database server divides an application into a front end and a back end, in accordance with the client-server model. The front end runs on the client computer and displays the requested data. The back end runs on the server and handles tasks such as query processing, data analysis and storage.
- DHCP server - a computer that provides the dynamic host configuration protocol (DHCP) service on the network that assigns network addresses to other devices, such as a telephone and computer.
- DNS server - a computer that provides the domain name service (DNS) which translates the names of sites into their numerical addresses, that is, resolves the name of the website typed into the location field of the browser with the Internet protocol (IP) address of the server that will send the requested information from that website.
- Domain server - a computer that holds all the records associated with a particular domain and answers queries about those records.
- Email server - a computer acting as a mail transfer agent (MTA) or SMTPD (SMTP daemon) that is running the appropriate software. This computer is responsible for transferring the electronic mail messages from one computer to another.
- File server - a computer responsible for the central storage and management of data files so that other computers on the same network can access those files.
- Firewall server - designed to secure an internal network from threats and attacks that come from the Internet offering powerful and flexible control over all inbound and outbound network traffic.
- FTP server - a computer that runs a program that can receive requests for a file transfer protocol (FTP) link from a client computer.
- Logon server - a computer responsible for authenticating client computers in a domain.
- Print server - a computer to which one or more printers are connected, which can accept print jobs from external client computers connected to the print server over a network. The print server then sends the data to the appropriate printer that it manages.
- Proxy server - a computer system or an application program which services the requests of its clients by forwarding requests to other servers. A client connects to the proxy server, requesting some service, such as a file, connection, web page, or other resource, available from a different server. The proxy server requests the service on behalf of the client between an internal network of an organization and the Internet as part of a security system to protect the organization's network of external intrusion.
- Security server - a computer dedicated to provide security policy decisions and to enforce such decisions.
- Terminal server - a specialized computer which aggregates multiple communication channels together. Because these channels are bidirectional, two models emerge: multiple entities connecting to a single resource, and a single entity connecting to multiple resources.
- VPN server - a virtual private network (VPN) server is a piece of hardware or software that can act as a gateway into a whole network or a single computer. It is generally "always on" and listening for VPN clients to connect to it.
- Web server - a computer that runs a program responsible for accepting HTTP requests from clients, such as web browsers, serving them HTTP responses along with optional data contents, which usually are web pages such as HTML documents and linked objects (images, etc.).
Note: a web service can be considered a type of server. A web service is defined by the W3C as "a software system designed to support interoperable Machine to Machine interaction over a network." Web services are frequently just Web APIs that can be accessed over a network, such as the Internet, and executed on a remote system hosting the requested services.
The client server architecture is extremely used nowadays. Practically all the services that are present in the Internet are based on this architecture. Even a simple visit to a news page as much as the connection to verify the grades stored in the university’s server; all these services make use of the client server architecture.
The details related to planning, equipment acquisition, installation and configuration of software and hardware are the most important when an environment based on the client server architecture is being considered.
The application type offered by the server and the type of client that will access such application are key points to end up with a concise project.
It’s known that the greater page requisitions a server has the greater will be the necessity of a powerful hardware capable of assuring the proper operation of the application even in stress conditions. Therefore it’s important not only understand the basic concepts of the client server architecture but also acquire the understanding about specific concepts related to software and hardware, which form the base of the architecture.
We are witnesses of this fantastic era in which we see the creation of new services starting up through the great opportunities that the new wave of the internet called web 2.0 brings. Such services demands better approaches to the client server architecture.
Programming technologies, new hardware devices and network apparatus, multiple multimedia capabilities, wireless connections, etc – all reinforces the propagation of the client server architecture. As a basic example, look at the biggest video site of the planet YouTube, which receives millions of video requests and that needs to provide access to its clients in a smoothly way. All this in a transparent way to its clients.
The client server architecture will subsist for a long time because it leverages the so used means of communication of actuality called internet.