model klient-serwer (architektura klient-serwer)
Klient-serwer to relacja, w której jeden program (klient) żąda usługi albo zasobu od innego programu (serwera). Na przełomie ubiegłego wieku, etykieta klient-serwer była używana do odróżnienia rozproszonego przetwarzania przez komputery osobiste (PC) od monolitycznego, scentralizowanego modelu obliczeniowego używanego przez komputery mainframe.
Dzisiaj transakcje komputerowe, w których serwer spełnia żądanie klienta, są bardzo powszechne, a model klient-serwer stał się jedną z centralnych idei obliczeń sieciowych. W tym kontekście klient nawiązuje połączenie z serwerem za pośrednictwem sieci lokalnej (LAN) lub sieci rozległej (WAN), takiej jak Internet. Gdy serwer spełni żądanie klienta, połączenie zostaje zakończone. Ponieważ wiele programów klienckich korzysta z usług tego samego programu serwera, specjalny serwer zwany demonem może zostać uruchomiony tylko po to, by oczekiwać na żądania klientów.
W początkach Internetu większość ruchu sieciowego odbywała się między zdalnymi klientami żądającymi zawartości stron internetowych a serwerami w centrach danych, które dostarczały tę zawartość. Ten wzorzec ruchu jest określany jako ruch północ-południe. Obecnie, wraz z dojrzałością wirtualizacji i przetwarzania w chmurze, ruch sieciowy jest bardziej prawdopodobne, aby być między serwerami, wzór znany jako ruch wschód-zachód. To z kolei spowodowało zmianę podejścia administratorów z modelu scentralizowanego do ochrony sieci na model zdecentralizowany, który koncentruje się bardziej na kontroli dostępu poszczególnych użytkowników do usług i danych oraz audycie ich zachowań w celu zapewnienia zgodności z zasadami i regulacjami.
Wady i zalety modelu klient-serwer
Ważną zaletą modelu klient-serwer jest to, że jego scentralizowana architektura ułatwia ochronę danych za pomocą kontroli dostępu, które są wymuszane przez polityki bezpieczeństwa. Ponadto nie ma znaczenia, czy klient i serwer są zbudowane na tym samym systemie operacyjnym, ponieważ dane są przesyłane za pośrednictwem protokołów klient-serwer, które są niezależne od platformy.
Ważną wadą modelu klient-serwer jest to, że jeśli zbyt wielu klientów jednocześnie żąda danych z serwera, może on zostać przeciążony. Oprócz powodowania przeciążenia sieci, zbyt wiele żądań może spowodować odmowę usługi.
Protokoły klient-serwer
Klienci zazwyczaj komunikują się z serwerami za pomocą zestawu protokołów TCP/IP. TCP jest protokołem zorientowanym na połączenie, co oznacza, że połączenie jest ustanawiane i utrzymywane do momentu, gdy programy aplikacyjne na obu końcach zakończą wymianę wiadomości. Określa on sposób rozbicia danych aplikacji na pakiety, które mogą być dostarczone przez sieć, wysyła pakiety do warstwy sieciowej i odbiera pakiety z tej warstwy, zarządza kontrolą przepływu i obsługuje retransmisję porzuconych lub uszkodzonych pakietów, jak również potwierdzanie wszystkich pakietów, które dotarły. W modelu komunikacyjnym Open Systems Interconnection (OSI), TCP obejmuje części warstwy 4, warstwy transportowej, oraz części warstwy 5, warstwy sesyjnej.
W przeciwieństwie do tego, IP jest protokołem bezpołączeniowym, co oznacza, że nie ma ciągłego połączenia pomiędzy komunikującymi się punktami końcowymi. Każdy pakiet, który podróżuje przez Internet jest traktowany jako niezależna jednostka danych, bez związku z jakąkolwiek inną jednostką danych. W modelu komunikacji Open Systems Interconnection (OSI), IP znajduje się w warstwie 3, warstwie sieciowej.
Inne modele relacji programowych
Inne modele relacji programowych obejmowały modele master/slave i peer-to-peer (P2P). W modelu P2P każdy węzeł w sieci może działać zarówno jako serwer, jak i klient. W modelu master/slave jedno urządzenie lub proces (znany jako master) kontroluje jedno lub więcej innych urządzeń lub procesów (znanych jako slaves). Gdy relacja master/slave zostanie ustanowiona, kierunek kontroli jest zawsze jednokierunkowy, od master do slave.