"Client - server" ( eng. client-server ) - en dator- eller nätverksarkitektur där uppgifter eller nätverksbelastning fördelas mellan tjänsteleverantörer, kallade servrar, och tjänstekunder, kallade klienter. Faktum är att klienten och servern är programvara . Vanligtvis finns dessa program på olika datorer och interagerar med varandra via ett datornätverk med nätverksprotokoll , men de kan också finnas på samma maskin. Serverprogram väntar på förfrågningar från klientprogram och förser dem med sina resurser i form av data (till exempel överföring av filervia HTTP , FTP , BitTorrent , strömmande media eller databasoperationer ) eller som tjänstefunktioner (till exempel e-post , kommunikation via snabbmeddelandesystem eller webbsurfning på World Wide Web ). Eftersom ett serverprogram kan exekvera förfrågningar från många klientprogram, placeras det på en speciellt dedikerad dator som är konfigurerad på ett speciellt sätt, som regel, tillsammans med andra serverprogram, så denna maskins prestanda måste vara hög. På grund av en sådan maskins speciella roll i nätverket, detaljerna för dess hårdvara och mjukvara, kallas den också en server , och de maskiner som kör klientprogram respektive är klienter.
Klient -server- egenskapen beskriver förhållandet mellan interagerande program i en applikation. Serverkomponenten tillhandahåller en funktion eller tjänst till en eller flera klienter som initierar förfrågningar om sådana tjänster. Servrar klassificeras enligt de tjänster de tillhandahåller. Till exempel serverar en webbserver webbsidor, medan en filserver serverar datorfiler. En delad resurs kan vara vilken som helst programvara och elektroniska komponenter i en serverdator, från program och data till processorer och lagringsenheter. Serverresursdelning är en tjänst .
Om en dator är en klient, en server eller båda bestäms av typen av applikation som kräver tjänsterna. Till exempel kan webbservrar och filserverprogramvara köras samtidigt på samma dator för att servera olika data för klienter som gör olika typer av förfrågningar. Klientprogramvaran kan också interagera med serverprogramvaran på samma dator. Kommunikation mellan servrar, till exempel för datasynkronisering, kallas ibland för interserver .
Generellt sett är en tjänst en abstraktion av datorresurser, och klienten behöver inte oroa sig för hur servern fungerar när den gör en förfrågan och levererar ett svar. Klienten behöver bara förstå svaret baserat på det kända applikationsprotokollet, dvs innehållet och dataformateringen för den begärda tjänsten.
Klienter och servrar utbyter meddelanden i ett begäran-svarsmönster. Klienten skickar en begäran och servern returnerar ett svar. Detta meddelande är ett exempel på kommunikation mellan processer. För att kommunicera måste datorer ha ett gemensamt språk, och de måste följa regler så att både klient och server vet vad de kan förvänta sig. Språket och kommunikationsreglerna definieras i kommunikationsprotokollet. Alla protokoll i klient-servermodellen fungerar i applikationslagret. Applikationslagerprotokollet definierar grundläggande konversationsmönster. För att ytterligare formalisera datautbytet kan servern implementera ett applikationsprogrammeringsgränssnitt ( API ). Ett API är ett abstraktionslager för åtkomst till en tjänst. Genom att begränsa länken till ett specifikt innehållsformat blir det lättare att analysera. Genom att abstrahera åtkomst underlättar det plattformsoberoende datautbyte.
Servern kan ta emot förfrågningar från många olika klienter på kort tid. En dator kan bara utföra ett begränsat antal uppgifter åt gången och förlitar sig på ett schemaläggningssystem för att prioritera inkommande förfrågningar från klienter för att tillfredsställa dem. För att förhindra missbruk och maximera tillgängligheten kan serverprogramvara begränsa tillgängligheten för klienter. Denial-of-service-attacker utnyttjar serverns ansvar att behandla förfrågningar, sådana attacker fungerar genom att överbelasta servern med en överdriven frekvens av förfrågningar. Kryptering bör användas om konfidentiell information ska överföras mellan klienten och servern.
Förutom klient-server-modellen använder distribuerade datorapplikationer ofta en peer-to-peer- arkitektur.
Klient-servern är ofta utformad som ett centraliserat system som betjänar många klienter. Därför måste serverns kraft-, minnes- och lagringskrav skalas med den förväntade belastningen. Lastbalansering och failover-system används ofta för att skala en server bortom en enda fysisk maskin. I ett peer-to-peer-nätverk slår två eller flera datorer samman sina resurser och interagerar i ett decentraliserat system. Peer-noder är peer- eller ekvipotentialnoder i ett icke-hierarkiskt nätverk. Till skillnad från klienter i en klient-server eller klient-kö-klient-arkitektur kommunicerar peers direkt med varandra. I ett peer-to-peer-nätverk balanserar algoritmen i peer-to-peer-kommunikationsprotokollet belastningen, och även peers med få resurser kan hjälpa till att dela belastningen. Om en nod blir otillgänglig förblir dess andelar tillgängliga så länge andra peers erbjuder dem. Helst behöver en nod inte uppnå hög tillgänglighet, eftersom andra noder kommer att kompensera för eventuella resursavbrott. När tillgängligheten och genomströmningen av peers ändras, omdirigerar protokollet förfrågningar. Både klient-server och master-slav anses vara underkategorier av distribuerade peer-to-peer-system.
En klient-server-arkitektur på flera nivåer är en typ av klient-server-arkitektur där databehandlingsfunktionen är placerad på flera separata servrar. Detta gör att du kan separera funktionerna för att lagra, bearbeta och presentera data för mer effektiv användning av servrars och klienters kapacitet.
Specialfall av flernivåarkitektur:
Ett nätverk med en dedikerad server ( eng. klient / servernätverk ) är ett lokalt nätverk (LAN) i vilket nätverksenheter centraliseras och styrs av en eller flera servrar. Enskilda arbetsstationer eller klienter (som en persondator) måste få åtkomst till nätverksresurser via servern/servrarna.