In the modern Information technology environment, the functions like websites, web-based application, a centralized computing system, mobile apps, e-commerce application or even cloud computing, be subsided with the concept of client-server. The client-server system is a distributed computing between two types of independent and autonomous entities known as server and client. The client-server computing places a vital role in data or information access form remotely stored lactations among the majority. The client-server system plays a significant role in IT evolution. The components involved in the client-server system divided into two major sections physical and logical components. Physical components are servers, client devices, input/output devices, networking, and power supply. Logical components are web pages, data, programming scripts, protocols, e.g., http, https, telnet, IP and API, e.g., ODBC, JDBC. In this survey, we present a detailed report for the client-server based system, highlighting its key concepts, architectural principles, and state-of-the-art implementation as well as research challenges. This paper aims to provide a better conscious of the design challenges of a client-server based system and identify essential research guidelines.