A client requests a service. A requester invokes a method on a provider. Sometimes this is referred to as the client sending a message to a server. It is possible for the server to in turn make a request to the client and thereby reverse the roles. Clients are consumers of services and resources.
Servers are providers of services and resources.
Task division between clients and servers is a difficult problem. One architecture can use the server to manipulate the data that it contains, and send the results to the client for its request, while the other can use the server only for containing large amounts of data, but the computations occur on the client. Distribution Distribution is implemented in order to gain specialization, and resources economy. For example, suppose we have two computers one fast and one slow, and a hardisk. So, if we want to maintain a database, the right thing to do is to make the faster one a client, the slower one a server, and of course, put the hardisk on the server.