Client/Server Model
Client-Server Networking Model
A client and server networking model is a model in which computers such as servers provide network services to other computers such as clients to perform user-based tasks. This model is also known as the client-server networking model.

Strategies for Application Programs using the Client-Server Model
- An application program is known as a client program, which runs on the local machine and requests a service from an application program known as a server program, which runs on a remote machine.
- A client program runs only when it requests a service from the server, while the server program runs all the time as it does not know when its service is required.
- A server provides a service for many clients, not just a single client. Therefore, we can say that client-server follows the many-to-one relationship. Many clients can use the service of one server.
- Services are required frequently, and many users have a specific client-server application program. For example, the client-server application program allows the user to access files, send e-mail, and so on. If the services are more customized, then we should have one generic application program that allows the user to access the services available on the remote computer.
Client
A client is a program that runs on the local machine requesting service from the server. A client program is a finite program, which means that the service is started by the user and terminates when the service is completed.
Server
A server is a program that runs on the remote machine providing services to the clients. When the client requests a service, the server opens the door for the incoming requests, but it never initiates the service.
A server program is an infinite program, which means that when it starts, it runs infinitely unless a problem arises. The server waits for incoming requests from the clients. When the request arrives at the server, it responds to the request.
Advantages of Client-Server Networks:
- Centralized: Centralized backup is possible in client-server networks, meaning that all the data is stored in a server.
- Security: These networks are more secure as all the shared resources are centrally administered.
- Performance: The use of a dedicated server increases the speed of sharing resources, which increases the performance of the overall system.
- Scalability: We can increase the number of clients and servers separately, meaning that a new element can be added, or we can add a new node in a network at any time.
- Easy Maintenance: Client-server networks are easy to maintain because all the resources are managed from a central location.
Disadvantages of Client-Server Networks:
- Traffic Congestion: When a large number of clients send requests to the same server, it may cause the problem of traffic congestion. This can lead to delays in response time, which can be frustrating for users.
- Lack of Robustness: If the server goes down, the client requests cannot be met. This can be a significant problem if the server is responsible for critical services or data storage.
- Hardware Requirements: Client/server networks can be resource-intensive, and regular computer hardware may not be sufficient to handle the workload. In such situations, specific hardware is required at the server side to complete the work.
- Dependency on Server: The client-server model relies heavily on the server to provide services to the clients. This means that if the server is overloaded or unavailable, the clients cannot access the required services.
- Complexity: The client-server model can be more complex than other networking models, as it requires multiple components working together in harmony. This can make it difficult to set up and maintain, especially for smaller organizations with limited resources.
- Limited Resource Access: Sometimes, the resources exist on the server but may not be accessible to the client. For example, if the application is web-based, the client may not be able to directly access printers or other hardware connected to the server.