Client-Server Interaction
A common structure for distributed systems—computing systems in which more than one computer is linked together--is one in which software or computing tasks are split between a server and a client. A client sends requests to a server according to some protocol, asking for information or action, and the server responds. This is analogous to a real-life customer who sends an order for goods or services to a supplier, who then provides the goods and an invoice. This interaction of customer and supplier involves a certain amount of formal paperwork; likewise, a protocol must be used by client and server computers in order to communicate effectively.
A client-server system may have either one central server or many (distributed) servers. A given machine may even act as both client and server for different applications. Clients and servers may be placed independently on a communications network; as long as the protocol for communication is understood by both client and server, the actual implementation of each machine is not pertinent. That is, it is possible for client and server to be running on entirely different types of platforms and to be using different kinds of software--as long they agree on a client-server protocol. This also allows for essentially independent upgrades to client and server and makes it easy for client and server to be owned or operated by different real-world entities.
The best-known client-server system in use today is the World Wide Web, commonly called just the Web. The basic client-server features are all there: a protocol called the HyperText Transfer Protocol (HTTP) is used for communications between a web server and a web client, the latter usually being represented by a web browser program running on a user's machine connected to the Internet. The client--that is, the user acting through the web browser--requests a certain web page. This often includes text formatted in HyperText Markup Language (HTML), which specifies formatting instructions and associated material such as images, sounds, and so forth. Upon receiving the client's request, the web server checks to see whether the requested material is available and whether the client has the authorization to access it. If the material is available and allowable, the server delivers it to the client. The web browser then takes the data received from the server and displays it for the benefit of the user. If the material is not available or if the client is not authorized to see it, the server returns an error message that the browser shows to the user.
Other examples of client-server interaction include the name-server/name-resolver relationship in DNS (Domain Name System; a component of the Internet), the fileserver and file-client in NFS (Network File System; an application for file-sharing), and the screen-server/client-application split in X-Window (a windowing and graphics system developed at the Massachusetts Institute of Technology and now in the public domain). The application "telnet," which enables a user to remotely log on to an account on a distant system (usually Unix) and use features like e-mail on a shell window, may also be considered an example of a client accessing a server. Downloading software or files from public-access FTP (file transfer protocol) or gopher sites is also an example.
In a certain sense, client-server computing is an extension of modular programming. Modular programming assumes that dividing a large piece of software into constituent logical parts ("modules") eases development and maintenance. Modules of code may call other modules to perform set computational tasks. Client-server computing takes this scheme farther by recognizing that modules need not all be executed within the same memory space, and that a calling module may be viewed as a "client" (an entity requesting a service) and a called module as a "server" (an entity providing a service). The next logical step is to have clients and servers running on separate hardware and software platforms that are optimal for their functions. For example, database management system servers run on platforms specially designed and configured to handle queries, and file servers run on platforms with special elements for managing files.
The "two-tier" architecture of having a client talking directly to a server works fine for small systems of just a few dozen clients or less. When the number of clients grows larger, the server is likely to be overwhelmed and the network may become bogged down by message traffic. To overcome this problem, a "three-tier" system with an intermediate agent is introduced. The agent may also provide additional services such as translation (when the server is run on a legacy [outdated] system and is unable to communicate directly with the client), metering (keeping score of client requests for billing purposes), and load-balancing (routing client requests to various servers in such a way that no server gets excessively loaded).
Client-server architectures are very important in business applications. The explosive growth of the Web and the standardization that has come with it have meant that corporations want the same technologies to be used for internal client-server applications. Thus was born the concept of the Intranet, a self-contained corporate or business network typically using client-server technology similar to that on which the Web is based. There is also much interest in the development of middleware, software that mediates between a client application (likely to be quite new) and a server or network environment that may be outdated or otherwise incompatible.
This is the complete article, containing 887 words
(approx. 3 pages at 300 words per page).