Modelul client-server este o structură care distribuie sarcini între furnizorii de resurse sau servicii numite servere și elementele care solicită resurse sau servicii, numite clienți.[1] Adesea, clienții și serverele se află pe mașini fizice diferite și comunică printr-o rețea, dar atât clientul cât și serverul pot sta în același sistem sau pot comunica prin alte mijloace (socket Unix, vsock etc.). Prin extensie, un sistem fizic ce rulează unul sau mai multe programe server, care distribuie resursele existente clienților, este denumit tot server. Clienții inițiază sesiuni de comunicare cu serverele, care așteaptă cereri.