Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Description
Client-server describes the relationship between two computer programs in which one
program, the client program, makes a service request to another, the server program. Standard
networked functions such as email exchange, web access and database access, are based on
the client-server model. For example, a web browser is a client program at the user computer
that may access information at any web server in the world. To check your bank account from
your computer, a web browser client program in your computer forwards your request to a
web server program at the bank. That program may in turn forward the request to its own
database client program that sends a request to a database server at another bank computer to
retrieve your account balance. The balance is returned to the bank database client, which in
turn serves it back to the web browser client in your personal computer, which displays the
information for you.
The client-server model has become one of the central ideas of network computing. Many
business applications being written today use the client-server model. So do the Internet's
main application protocols, such as HTTP, SMTP, Telnet, DNS. In marketing, the term has
been used to distinguish distributed computing by smaller dispersed computers from the
"monolithic" centralized computing of mainframe computers. But this distinction has largely
disappeared as mainframes and their applications have also turned to the client-server model
and become part of network computing.
Each instance of the client software can send data requests to one or more connected servers.
In turn, the servers can accept these requests, process them, and return the requested
information to the client. Although this concept can be applied for a variety of reasons to
many different kinds of applications, the architecture remains fundamentally the same.
The most basic type of client-server architecture employs only two types of hosts: clients and
servers. This type of architecture is sometimes referred to as two-tier. It allows devices to
share files and resources. The two tier architecture means that the client acts as one tier and
application in combination with server acts as another tier.
The interaction between client and server is often described using sequence diagrams.
Sequence diagrams are standardized in the Unified Modeling Language.
Specific types of clients include web browsers, email clients, and online chat clients.
Specific types of servers include web servers, ftp servers, application servers, database
servers, name servers, mail servers, file servers, print servers, and terminal servers. Most web
services are also types of servers.
Advantages
Since data storage is centralized, updates to that data are far easier to administer than
what would be possible under a P2P paradigm. Under a P2P architecture, data updates
may need to be distributed and applied to each peer in the network, which is both
time-consuming and error-prone, as there can be thousands or even millions of peers.
Many mature client-server technologies are already available which were designed to
ensure security, friendliness of the user interface, and ease of use.
Disadvantages
Traffic congestion on the network has been an issue since the inception of the clientserver paradigm. As the number of simultaneous client requests to a given server
increases, the server can become overloaded. Contrast that to a P2P network, where
its aggregated bandwidth actually increases as nodes are added, since the P2P
network's overall bandwidth can be roughly computed as the sum of the bandwidths
of every node in that network.
The client-server paradigm lacks the robustness of a good P2P network. Under clientserver, should a critical server fail, clients requests cannot be fulfilled. In P2P
networks, resources are usually distributed among many nodes. Even if one or more
nodes depart and abandon a downloading file, for example, the remaining nodes
should still have the data needed to complete the download
Businesses of various sizes have various computer needs. Larger businesses necessarily
need to use more computers than smaller businesses do. Large businesses routinely have
large computer setups, such as mainframes and networks. A network for a large business
commonly has a client-server architecture, also known as a two-tier architecture. No matter
what it is called, this type of architecture is a division of labor for the computing functions
required by a large business.
Under the structure of the client-server architecture, a business's computer network will have
a server computer, which functions as the "brains" of the organization, and a group of client
computers, which are commonly called workstations. The server part of the client-server
architecture will be a large-capacity computer, perhaps even a mainframe, with a large
amount of data and functionality stored on it. The client portions of the client-server
architecture are smaller computers that employees use to perform their computer-based
responsibilities.
Servers commonly contain data files and applications that can be accessed across the
network, by workstations or employee computers. An employee who wants to access
company-wide data files, for instance, would use his or her client computer to access the data
files on the server. Other employees may use a common-access application by accessing the
server through their client computers.
This type of server is called an application server. It takes full advantage of the client-server
architecture by using the server as a storage device for applications and requiring the clients
to log in to the server in order to use those applications. Examples of this kind of application
are numerous; among the most popular are word processors, spreadsheets, and graphic design
programs. In each case, the use of the applications illustrates the client-server architecture.
The server is not just for storage, however. Many networks have a client-server architecture
in which the server acts as a processing power source as well. In this scenario, the client
computers are virtually "plugged in" to the server and gain their processing power from it. In
this way, a client computer can simulate the greater processing power of a server without
having the requisite processor stored within its framework. Here, the client-server
architecture describes a virtual sort of power plant.
HTTP (HyperText transfer Protocol): used on the World Wide Web (WWW) for
transfering web pages and files contained in web pages such as images.
FTP (File Transfer protocol): employed for transfering files from one machine to the
other.
The web employs a connection-less protocol, which means that after every client-server
interaction
the
connection
between
the
two
is
lost.
Let us now examine the client-server inter-communication with three models.
The client (browser) requests for an HTML file stored on the remote machine through the
server software. The server locates this file and passes it to the client. The client then displays
this file on your machine. In this case, the HTML page is static. Static pages do not change
until the developer modifies them.
The scenario is slightly different for CGI applications. Here the server has to do more work
since CGI programs consume the server machine's processing power.
Let us suppose you come across a searchable form on a web page that runs a CGI program.
Let us also suppose you type in the word 'computers' as the search query. Your browser sends
your request to the server. The server checks the headers and locates the necessary CGI
program and passes it the data from the request including your search query "computers". The
CGI program processes this data and returns the results to the server. The server then sends
this formatted in HTML to your browser which in turn displays the HTML page.
Thus the CGI program generates a dynamic HTML page. The contents of the dynamic page
depend on the query passed to the CGI program.
The third case also involves dynamic response generated by the use of server side
technologies.
There
are
many
server
side
technologies
today.
Active Server Pages (ASP): A Microsoft technology. ASP pages typically have the
extension
.asp.
Personal Home Pages (PHP): An open source technology. PHP pages typically have .php,
.phtml
or
.php3
file
name
extensions.
Java
Server
Pages:
.jsp
pages
contain
Java
code.
Server Side Includes (SSI): Involves the embedding of small code snippets inside the HTML
page. An SSI page typically has .shtml as its file extension.
With these server technologies it has become easier to maintain Web pages especially helpful
for a large web site. The developer needs to embed the server-side language code inside the
HTML page. This code is passed to the appropriate interpreter which processes these
instructions and generates the final HTML displayed by the browser. Note, the embedded
server-script code is not visible to the client (even if you check the source of the page) as the
server sends ONLY the HTML code.
Let's look at PHP as an example. A request sent for a PHP page from a client is passed to the
PHP interpreter by the server along with various program variables. The interpreter then
processes the PHP code and generates a dynamic HTML output. This is sent to the server
which in turn redirects it to the client. The browser is not aware of the functioning of the
server. It just receives the HTML code, which it appropriately formats and displays on your
computer.