client-server model (client-server architectuur)
Client-server is een relatie waarin een programma (de client) een dienst of resource aanvraagt bij een ander programma (de server). Aan het begin van de vorige eeuw werd het label client-server gebruikt om gedistribueerd computergebruik door personal computers (PC’s) te onderscheiden van het monolithische, gecentraliseerde computermodel dat door mainframes werd gebruikt.
Heden ten dage zijn computertransacties waarbij de server een verzoek van een client inwilligt, heel gewoon en is het client-server-model een van de centrale ideeën van netwerkcomputing geworden. In deze context brengt de client een verbinding tot stand met de server via een lokaal netwerk (LAN) of een wide-area network (WAN), zoals het Internet. Zodra de server het verzoek van de client heeft ingewilligd, wordt de verbinding verbroken. Omdat meerdere client-programma’s gebruik maken van de diensten van hetzelfde serverprogramma, kan een speciale server, een zogeheten daemon, worden geactiveerd om op client-aanvragen te wachten.
In de begindagen van het internet vond het meeste netwerkverkeer plaats tussen clients op afstand die om webinhoud vroegen en de datacenterservers die de inhoud leverden. Dit verkeerspatroon wordt noord-zuid-verkeer genoemd. Tegenwoordig, met de volwassenwording van virtualisatie en cloud computing, is de kans groter dat het netwerkverkeer van server naar server verloopt, een patroon dat bekend staat als oost-westverkeer. Hierdoor is de focus van beheerders veranderd van een gecentraliseerd beveiligingsmodel dat is ontworpen om de netwerkperimeter te beschermen, naar een gedecentraliseerd beveiligingsmodel dat zich meer richt op het controleren van individuele gebruikerstoegang tot diensten en gegevens, en het auditen van hun gedrag om naleving van beleid en regelgeving te waarborgen.
Voordelen en nadelen van het client-servermodel
Een belangrijk voordeel van het client-servermodel is dat de gecentraliseerde architectuur het gemakkelijker maakt om gegevens te beschermen met toegangscontroles die worden afgedwongen door beveiligingsbeleid. Het maakt ook niet uit of de clients en de server op hetzelfde besturingssysteem zijn gebouwd, omdat de gegevens worden overgedragen via client-server-protocollen die platform-agnostisch zijn.
Een belangrijk nadeel van het client-server-model is dat de server overbelast kan raken als te veel clients tegelijk gegevens opvragen bij de server. Naast het veroorzaken van netwerkcongestie kunnen te veel aanvragen leiden tot een denial of service.
Client-serverprotocollen
Clients communiceren doorgaans met servers door gebruik te maken van de TCP/IP-protocolsuite. TCP is een verbindingsgeoriënteerd protocol, hetgeen betekent dat een verbinding tot stand wordt gebracht en in stand wordt gehouden totdat de toepassingsprogramma’s aan beide zijden klaar zijn met het uitwisselen van berichten. Het bepaalt hoe toepassingsgegevens worden opgedeeld in pakketten die door netwerken kunnen worden afgeleverd, zendt pakketten naar de netwerklaag en aanvaardt pakketten van die laag, beheert de flow control en zorgt voor de heruitzending van pakketten die vallen of onleesbaar worden gemaakt, alsmede voor de bevestiging van alle pakketten die aankomen. In het Open Systems Interconnection (OSI) communicatiemodel bestrijkt TCP delen van laag 4, de transportlaag, en delen van laag 5, de sessielaag.
In tegenstelling daarmee is IP een verbindingsloos protocol, hetgeen betekent dat er geen doorlopende verbinding is tussen de eindpunten die met elkaar communiceren. Elk pakket dat door het Internet reist wordt behandeld als een onafhankelijke eenheid van gegevens zonder enig verband met een andere eenheid van gegevens. (De reden waarom de pakketten wel in de juiste volgorde worden gezet, is te danken aan TCP.) In het Open Systems Interconnection (OSI) communicatiemodel bevindt IP zich in laag 3, de Networking Layer.
Andere modellen voor programmarelaties
Andere modellen voor programmarelaties zijn master/slave en peer-to-peer (P2P). In het P2P-model kan elk knooppunt in het netwerk zowel als server en als client fungeren. In het master/slave model bestuurt één apparaat of proces (bekend als master) één of meer andere apparaten of processen (bekend als slaves). Zodra de master/slave-relatie tot stand is gebracht, is de richting van de besturing altijd eenrichtingsverkeer, van de master naar de slave.