Model sieci Klient-Serwer

Klient-Serwer

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).

Cele

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:

  • niezależność od lokalizacji - serwer jest procesem mogącym rezydować na dowolnej maszynie w sieci, również na tej samej, na której działa klient;
  • udostępnianie zasobów - serwer ma możliwość zajmowania się dowolną liczbą klientów poprzez udostępnianie im zasobów, którymi mogą być: dyski, serwer bazy danych, drukarka, funkcje obliczeniowe, serwer aplikacji CAD i inne;
  • przenośność - nie powinno być problemem przenoszenie aplikacji na inną platformę systemową czy sprzętową. Może to się odbywać dzięki użyciu narzędzi, które tworzą kod niezależny od docelowego środowiska implementacji;
  • skalowalność aplikacji - dodanie nowych stacji roboczych, na których wykonywany jest program klienta, nie powinno wpływać na działanie systemu. Szybkość obsługi także nie powinna się zmieniać. Zwykle stacjami roboczymi są PC, na których jest wykonywany program klienta;
  • współpraca przez sieć - w wersji idealnej Klient-Serwer działa niezależnie od użytej technologii łączenia komputerów w sieci, użytego protokołu komunikacyjnego czy systemu operacyjnego.

Klient-Serwer - podział zadań

Sposób komunikacji zgodnie z architekturą klient-serwer charakteryzuje się poprzez wyznaczanie ról obu stronom oraz zdefiniowanie ich trybów pracy.

Strona klienta

Żąda dostępu do danej obsługi lub zasobu. Tryb pracy klienta:

  • aktywny,
  • wysyła żądanie do serwera,
  • oczekuje na odpowiedź od serwera.

Strona serwera

Świadczy usługę lub udostępnia zasoby. Tryb pracy serwera:

  • pasywny,
  • czeka na żądanie klientów,
  • gdy otrzymuje żądanie, wysyła je, a następnie otrzymuje odpowiedź.

Architektura Klient-Serwer i jej typy

Rozróżnia się je z uwagi na podział wykonywanych zadań:

  • architektura dwuwarstwowa - przetwarzanie i składowanie danych odbywa się w jednym module;
  • architektura trójwarstwowa - przetwarzanie i składowanie danych odbywa się w dwóch osobnych module;
  • architektura wielowarstwowa - przetwarzanie, składowanie i inne operacje na danych odbywają się w wielu osobnych modułach.

Komunikacja

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.

Klient-Serwer - zalety

  • Na serwerze przechowywane są wszystkie informacje, co umożliwia lepsze zabezpieczenie danych. O tym, kto ma prawo do ich odczytywania oraz zmiany może decydować serwer.
  • Wiele rozwiniętych technologii wspomaga działanie, użyteczność i bezpieczeństwo tego typu rozwiązania.

Klient-Serwer - wady

  • Duża liczba klientów, którzy próbują otrzymać dane z jednego serwera powoduje, iż występują różnego typu problemy. Związane są one z przepustowością łącza oraz możliwościami technicznymi przetworzenia żądań klientów.
  • Dostęp do danych jest całkowicie niemożliwy w momencie, gdy serwer nie działa.
  • Aby uruchomić jednostkę, która jest serwerem z możliwością obsługi dużej liczby klientów, należy użyć specjalnego oprogramowania oraz sprzętu komputerowego. Nie występują one jednak w większości komputerów domowych.

Zastosowanie

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..

P2P+

To odmiana architektury klient-serwer. Host może pełnić w niej zarówno rolę klienta jak i serwera.