Accueil🇫🇷Chercher

Client-serveur

Le protocole ou environnement client–serveur désigne un mode de transmission d'information (souvent à travers un réseau) entre plusieurs programmes ou processus : l'un, qualifié de client, envoie des requêtes ; l'autre, qualifié de serveur, attend les requêtes des clients et y répond. Le serveur offre ici un service au client. Par extension, le client désigne souvent l'ordinateur sur lequel est exécuté le logiciel client, et le serveur, l'ordinateur sur lequel est exécuté le logiciel serveur. Les machines serveurs sont généralement dotées de capacités supérieures à celles des ordinateurs personnels en ce qui concerne la puissance de calcul, les entrées-sorties et les connexions réseau, afin de pouvoir répondre de manière efficace à un grand nombre de clients. Les clients sont souvent des ordinateurs personnels ou terminaux individuels (téléphone, tablette), mais pas systématiquement. Un serveur peut répondre aux requêtes de plusieurs clients. Parfois le client et le serveur peuvent être sur la même machine.

Il existe une grande variété de serveurs et de clients en fonction des besoins ou services à fournir : un serveur Web publie des pages Web demandées par des navigateurs Web ; un serveur de messagerie électronique transmet les courriels à des clients de messagerie ; un serveur de fichiers permet de partager des fichiers sur un réseau aux machines qui le sollicitent ; un serveur de base de données permet aux clients de récupérer des données stockées dans une base de données, etc.

Le client et le serveur doivent bien sûr utiliser le même protocole de communication au niveau de la couche transport du modèle OSI. On parle souvent d'un service pour désigner la fonctionnalité offerte par un processus serveur. Attention, bien que souvent confondues, les notions de programme ou processus client et de programme ou processus serveur sont toutefois différents de celles de machine. En effet un ordinateur unique peut exécuter à la fois un programme serveur et un programme client. Cette configuration est plutôt utilisée à des fins de test, ou assez fréquente dans le monde Linux.

Caractéristiques

Caractéristiques d'un programme serveur :

  • il attend une connexion entrante sur un ou plusieurs ports rĂ©seaux locaux ;
  • Ă  la connexion d'un client sur le port en Ă©coute, il ouvre un socket local au système d'exploitation ;
  • Ă  la suite de la connexion, le processus serveur communique avec le client suivant le protocole prĂ©vu par la couche application du modèle OSI.
  • l'action rĂ©alisĂ©e par le serveur en rĂ©ponse Ă  la requĂŞte client est souvent appelĂ©e service.

Caractéristiques d'un programme client :

  • il Ă©tablit la connexion au serveur Ă  destination d'un ou plusieurs ports rĂ©seaux ;
  • lorsque la connexion est acceptĂ©e par le serveur, il communique comme le prĂ©voit la couche application du modèle OSI.

Caractéristiques de leur protocole d'échange:

Environnement client–serveur

Exemple d'architecture client–serveur : deux clients font leurs requêtes à un serveur via Internet.

L'organisation d'un environnement client–serveur diffère selon le type d'architecture du réseau et le type de client[1].

Architecture pair Ă  pair

Une architecture pair à pair (peer-to-peer ou P2P en anglais) est un environnement client–serveur où chaque programme connecté est susceptible de jouer tour à tour le rôle de client et celui de serveur. Le programme est client lorsqu'il demande et récupère des données, et devient serveur lorsqu'il fournit des données.

Architecture Ă  deux niveaux

De base la relation entre un client en un serveur se fait entre deux processus, deux logiciels ou deux machines. On peut parler d'une architecture Ă  deux niveaux ou une architecture deux tiers (two-tier architecture en anglais). Dans ce cas, le client demande une ressource au serveur qui la fournit directement Ă  partir de ses propres ressources, sans solliciter d'autres machines.

Architecture Ă  trois niveaux

Une architecture à trois niveaux ou une architecture trois tiers (three-tier architecture en anglais) ajoute un niveau permettant de spécialiser les serveurs, ce qui apporte un avantage de flexibilité, de sécurité et de performance :

  • un client demande une ressource via une interface utilisateur (gĂ©nĂ©ralement un navigateur web) chargĂ©e de la prĂ©sentation de cette ressource ;
  • un serveur d'application (appelĂ© middleware) fournit la ressource, mais en faisant appel Ă  un autre serveur ;
  • un serveur de donnĂ©es fournit au serveur d'application la ressource requise pour rĂ©pondre au client.

Il faut noter que le serveur d'application est ici client du serveur de données.

Architecture Ă  N niveaux

Une architecture à N niveaux ou architecture N tiers (N-tier architecture en anglais) n'ajoute de niveau à l'architecture à 3 niveaux, mais introduit la notion d'objet qui offre la possibilité de distribuer les services entre les 3 niveaux selon N couches, permettant ainsi de spécialiser plus finement les serveurs.

Types de clients applicatifs

Les clients applicatifs, sont des logiciels qui tournent sur les machines ou terminaux des utilisateurs. Il est possible d'en distinguer 3 types majeurs.

Client léger

Un client léger est une application où le traitement des requêtes du client (le plus souvent un navigateur Web, avec des pages web n'utilisant pas ou peu de JavaScript côté client, terminaux Terminal Services, Secure Shell, Apple Remote Desktop, Citrix XenApp, TeamViewer, etc.) est entièrement effectué par le serveur, le client se contente de recevoir et mettre en forme pour afficher les réponses calculées et envoyées par les serveur. Quelques avantages:

  • peu de puissance de calcul est nĂ©cessaire au niveau du client.
  • la mise Ă  jour de l'application s'effectue uniquement sur le serveur, exceptĂ© l'Ă©ventuelle mise Ă  jour du client Web.
  • plus grande indĂ©pendance du dĂ©veloppement de l'application et du serveur vis-Ă -vis de la machine cliente et de son environnement.
  • un travail de dĂ©veloppement concentrĂ© sur le serveur

Client lourd

Un client lourd est une application (applications de bureau, applications mobile) où les traitements sont principalement effectués sur la machine locale dite cliente. Le serveur se contentant principalement de répondre aux demandes de données du client.

Quelques avantages:

  • le client peut parfois fonctionner mĂŞme en cas de dĂ©connexion du serveur
  • une partie des traitements est rĂ©alisĂ© par le client, ce qui soulage les ressources du serveur.
  • plus grande indĂ©pendance vis-Ă -vis des temps de rĂ©ponse rĂ©seau et serveur

Client riche

Un client riche est une application où le traitement des requêtes du client (applications Web utilisant beaucoup de JavaScript côté client) est effectué majoritairement par le serveur, le client recevant les réponses « semi-finies » et les finalisant. C'est un client léger plus évolué permettant de mettre en œuvre des fonctionnalités comparables à celles d'un client lourd. C'est un compromis entre les clients légers et lourds.

Comparaison des architectures centralisées et distribuées

Fonctionnement

Avant que n'apparaisse l'environnement client–serveur, les réseaux informatiques étaient configurés autour d'un ordinateur central (mainframe en anglais) auquel étaient connectés des terminaux passifs (écran adjoint d'un clavier sans unité centrale et n'effectuant aucun traitement). Tous les utilisateurs étaient alors connectés sur la même unité centrale.

Avantages des architectures centralisées

  • Toutes les donnĂ©es sont centralisĂ©es sur un seul serveur, physique ou virtuel, ce qui simplifie les contrĂ´les de sĂ©curitĂ©, l'administration, la mise Ă  jour des donnĂ©es et des logiciels.
  • La complexitĂ© du traitement et la puissance de calculs sont Ă  la charge du ou des serveurs, les utilisateurs utilisant simplement un client lĂ©ger sur un ordinateur terminal qui peut ĂŞtre simplifiĂ© au maximum.
  • Recherche d'information : les serveurs Ă©tant centralisĂ©s, cette architecture est particulièrement adaptĂ©e et vĂ©loce pour retrouver et comparer de vastes quantitĂ©s d'informations (moteur de recherche sur le Web), par rapport Ă  l'architecture distribuĂ©e beaucoup plus lente, Ă  l'image de Freenet.
  • Maintenance matĂ©riel minime.
  • Grande vĂ©locitĂ© sur des grands volumes de donnĂ©es et de traitements.

Inconvénients des architectures centralisées

  • Si trop de clients veulent communiquer avec l'ordinateur central au mĂŞme moment, ce dernier risque de ne pas supporter la charge (alors que les architectures distribuĂ©es peuvent rĂ©partir la charge si les serveurs sont redondĂ©s).
  • Si l'ordinateur central n'est plus disponible, plus aucun des clients ne fonctionne (les architectures distribuĂ©es peuvent continuent Ă  fonctionner, si les serveurs utilisĂ©s sont redondĂ©s).
  • Les coĂ»ts de mise en place et de maintenance peuvent ĂŞtre Ă©levĂ©s.
  • Les clients ne peuvent communiquer directement entre eux, entrainant une concentration des flux sur l'ordinateur central.
  • interface homme-machine minimaliste.
  • Utilisation de langages de programmation anciens.
  • Calcul scientifique complexe impossible.

Exemples client-serveur

  • La consultation de pages sur un site Web fonctionne sur une architecture client–serveur. Un internaute connectĂ© au rĂ©seau via son ordinateur et un navigateur Web est le client, le serveur est constituĂ© par le ou les ordinateurs contenant les applications qui fournissent les pages demandĂ©es. C'est le protocole de communication HTTP ou XML socket qui est utilisĂ©.
  • Le système X Window fonctionne sur une architecture client–serveur. En gĂ©nĂ©ral le client (une application graphique, xeyes par exemple) tourne sur la mĂŞme machine que le serveur mais peut ĂŞtre aussi bien lancĂ© sur un autre ordinateur faisant partie du rĂ©seau.

Notes

  1. Tout sur les systèmes d'information, Jean-François Pillou, Dunod 1996

Voir aussi

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.