Client Server Architecture
A client-server (client-serving, literally) is a type of network application in which a client computer instantiates the user interface of an application connecting to a server application or a database system. More simply, the client / server systems are an evolution of systems based on simple sharing of resources. The presence of a server allows a number of clients to share resources, let the server to manage access to resources to avoid conflicts typical of the early computer systems.
A client / server computing is merely the transposition of conventional systems.
Client Server Architecture — Client
The client software is usually of limited complexity, normally limited to work as an interface to the server. In general, in computing the term indicates a client component that accesses the services or resources of another component, called servers. In this context we can speak to clients referring to hardware or software.
A computer connected to a server via a local network or geographical area, and which requires one or more services, using one or more network protocols is an example of client hardware.
A mail program is an example of client software.
More and more software, such as web, e-mail, databases, which are divided into a client side (residing and running on the PC client) and a server part (resident and running on the server).
The term also indicates the client software used on the client computer to access the functionality offered by the server.
For example, the web browser is the client software, and talk to a web server via HTTP, e-mail client is called in slang or MUA mail user agent (e.g., Outlook, Mozilla Thunderbird, Eudora, etc.), and talk to the server via SMTP and POP or IMAP client for consultation or modification of the database (often consisting of software libraries used by an application) talks with the DBMS, which manages the database and answered questions from the client.
Client Server Architecture — Server
The server software and the management structure of the system must implement all the techniques of access management, allocation and release of resources, sharing and security of the information or resources.
For example, a mail server is comparable to any post office. Users to access their clients via e-mail box must be authorized. Similarly a user must have the key box located at a post office from which he wants to take the match.
Interactions client / server
When a client computer connects directly to a database system or a standard application server, this is called 2-tier architecture (architecture in two levels).
Recently, it is more usual for the client computer, called thin clients that do not incorporate business logic, but only interface elements, connect to a server application that implements business logic in which transitively (or later) communicates with the server database, which stores data used by the application. This architecture is called 3-tier architecture (3-tier architecture).
In general n-level architectures can use a number of separate services, including transitive relations between different application servers that implement business logic, each of which can be used whether or not a shared database or separate.
Clients and servers are connected via a communication protocol via a communication network. The protocol can be in clear or encrypted in some cases. In the telecommunications sector, two or more machines or hosts (computers, telephone, printer, etc.) can communicate with each other respecting the rules are called network protocols. Adherence to the protocol ensures that two machines can communicate properly, even if they were made independently.
Service with or without connection
When a client and a server start to communicate can exchange control packets before sending the actual data.
These procedures, called handshaking prepare the two components to communication. These procedures are based, for example, TCP.
However there may also be services that send data directly as in the case dell’UDP.
Most applications, however, needs to send data securely and reliably that the handshake does just this task. We understand how the TCP connection, for example, is safer but also slower because data exchange not only real but also service data.
Client Server Architecture – Levels
Each protocol normally applicable only part of the aspects of communication. The various protocols are organized with a system called “levels” at each level is used a specific protocol.
The division is made in layers so that each layer uses services offered by the lower level and provide more “rich” to the next level. The different levels in a host communicate with each other through interfaces. Each layer talks only with the next largest and next smallest layer. The protocols govern the communication between two entities instead of the same level, which serves to provide the next level.
The various levels are organized into protocol stacks. The protocol stacks are a flexible way to combine components to create a service.
A real example of an organization to levels of protocol in the classical treatises concerning computer networks, is the path of a suitcase on a plane trip from the house of origin to destination hotel. The first level that we see is the preparation of the case: the tourist takes his clothes and puts them there and then close it, as this is done is defined by the Protocol of tier 1.
The 2nd level is dell’addetta the suitcases at the airport of departure, the tourist gives him the suitcase (transition from first to second level) is in charge of attacking the suitcase information about the flight and destination.
Here we see the fundamental organization levels of protocol, namely that the employee is not necessary to know how the clothes were stowed in the suitcase, also there is no need for tourists to know the steps to be made by the employee in fact tourists will get that he wants (to have the clothes to the hotel of arrival) without affecting at all like the other protocols should work as long as they do so correctly.
The facility serves to fulfill certain tasks:
- Error control;
- Flow control;
- Fragmentation and reassembly;
- Multiplexing, so that higher layer sessions can share a single connection of the lower layer;
- Establishment of the connection.