Klient-Serwer (ang. client/server, client-server model) jest architekturą systemu komputerowego, a zwłaszcza oprogramowania, która umożliwia podział ról - zadań. Opiera się to na ustaleniu, że serwer zapewnia usługi dla klientów, którzy zgłaszają do niego żądania obsługi (ang. service request).
Klient-Serwer ma za zadanie umożliwić użytkownikowi dostęp do informacji, bez względu na jej lokalizację w sieci.
Tego typu aplikacja powinna posiadać następujące właściwości:
Sposób komunikacji zgodnie z architekturą klient-serwer charakteryzuje się poprzez wyznaczanie ról obu stronom oraz zdefiniowanie ich trybów pracy.
Żąda dostępu do danej obsługi lub zasobu. Tryb pracy klienta:
Świadczy usługę lub udostępnia zasoby. Tryb pracy serwera:
Rozróżnia się je z uwagi na podział wykonywanych zadań:
Określone protokoły komunikacyjne opisują połączenie pomiędzy klientem a serwerem. TCP/IP to najczęściej spotykany protokół komunikacyjny. Komunikacja w większości przypadków opiera się na schemacie, w którym następuje nawiązanie połączenia klienta z serwerem.
Klient następnie wysyła żądanie do serwera w określonym formacie i czeka na jego odpowiedź. Serwer cały czas oczekuje na klientów. W momencie otrzymania żądania przetwarza je i wysyła odpowiedź. Komunikacja pomiędzy stronami w modelu OSI przebiega w warstwie aplikacji.
Najczęściej spotykanymi, podstawowymi serwerami, które działają w oparciu o architekturę klient-serwer są: serwer WWW, serwer poczty elektronicznej, serwer plików oraz serwer aplikacji. Na ogół z usług jednego serwera korzysta wielu klientów jednocześnie. Ogólnie jeden klient może w tym samym czasie korzystać z usług wielu serwerów.
Większość dziś spotykanych systemów zarządzania bazą danych działa w oparciu o schemat klient-serwer..
To odmiana architektury klient-serwer. Host może pełnić w niej zarówno rolę klienta jak i serwera.