Article de reference

Modèle client-serveur

Schéma d'un réseau informatique illustrant la communication entre des clients et un serveur via Internet Le modèle client-serveur est un modèle de communication au sein d'une ar...

Schéma d'un réseau informatique illustrant la communication entre des clients et un serveur via Internet

Le modèle client-serveur est un modèle de communication au sein d'une architecture d'application distribuée. Il répartit les tâches ou la charge de travail entre les fournisseurs de ressources ou de services ( les serveurs ) et les demandeurs de services ( les clients ). Souvent, clients et serveurs communiquent via un réseau informatique sur des matériels distincts, mais il est possible qu'ils soient installés sur le même appareil. Un serveur exécute un ou plusieurs programmes serveurs qui partagent leurs ressources avec les clients. Un client ne partage généralement pas ses propres ressources de calcul, mais il demande du contenu ou un service à un serveur et peut inclure son propre contenu dans sa requête. Les clients initient ainsi des sessions de communication avec les serveurs, qui attendent les requêtes entrantes. La messagerie électronique, l'impression réseau et le Web sont des exemples d'applications informatiques utilisant le modèle client-serveur.

Rôle du client et du serveur

Le serveur fournit une fonction ou un service à un ou plusieurs clients, qui en font la demande. Les serveurs sont classés selon les services qu'ils offrent. Par exemple, un serveur web héberge des pages web et un serveur de fichiers héberge des fichiers informatiques . Une ressource partagée peut être n'importe quel composant logiciel ou électronique du serveur, qu'il s'agisse de programmes , de données , de processeurs ou de périphériques de stockage . Le partage des ressources d'un serveur constitue un service .

Le rôle d'un ordinateur (client, serveur ou les deux) dépend de la nature de l'application qui requiert les fonctions de service. Par exemple, un même ordinateur peut exécuter simultanément un serveur web et un serveur de fichiers afin de fournir des données différentes à des clients effectuant des requêtes de natures diverses. Le logiciel client peut également communiquer avec le logiciel serveur au sein du même ordinateur. La communication entre serveurs, notamment pour la synchronisation des données, est parfois appelée communication inter-serveurs ou communication serveur à serveur .

Communication entre le client et le serveur

En général, un service est une abstraction des ressources informatiques et le client n'a pas à se soucier du fonctionnement du serveur lors du traitement de la requête et de la transmission de la réponse. Le client doit seulement comprendre la réponse en fonction du protocole applicatif approprié , c'est-à-dire le contenu et le format des données pour le service demandé.

Les clients et les serveurs échangent des messages selon un modèle requête-réponse . Le client envoie une requête et le serveur renvoie une réponse. Cet échange de messages est un exemple de communication interprocessus . Pour communiquer, les ordinateurs doivent utiliser un langage commun et respecter des règles afin que le client et le serveur sachent à quoi s'attendre. Le langage et les règles de communication sont définis dans un protocole de communication . Tous les protocoles fonctionnent au niveau de la couche application . Le protocole de la couche application définit les modèles de base du dialogue. Pour formaliser davantage l'échange de données, le serveur peut implémenter une interface de programmation (API). L'API est une couche d'abstraction permettant d'accéder à un service. En limitant la communication à un format de contenu spécifique , elle facilite l'analyse syntaxique . En masquant l'accès, elle facilite l'échange de données entre plateformes.

Un serveur peut recevoir des requêtes de nombreux clients distincts en peu de temps. Un ordinateur ne peut exécuter qu'un nombre limité de tâches simultanément et s'appuie sur un système d'ordonnancement pour prioriser les requêtes entrantes. Afin de prévenir les abus et d'optimiser la disponibilité , le logiciel serveur peut limiter l'accès au serveur. Les attaques par déni de service (DoS) exploitent l'incapacité du serveur à traiter les requêtes en le surchargeant avec un nombre excessif de requêtes. Le chiffrement est indispensable pour la communication d'informations sensibles entre le client et le serveur.

Exemple

Lorsqu'un client accède aux services bancaires en ligne via un navigateur web (le client), celui-ci envoie une requête au serveur web de la banque. Ses identifiants de connexion sont comparés à ceux d'une base de données , et le serveur web accède à cette base de données en tant que client. Un serveur d'application interprète les données renvoyées en appliquant la logique métier de la banque et transmet le résultat au serveur web. Enfin, le serveur web affiche le résultat dans le navigateur web du client.

À chaque étape de cette séquence d'échanges de messages client-serveur, un ordinateur traite une requête et renvoie des données. C'est le modèle de messagerie requête-réponse. Lorsque toutes les requêtes sont satisfaites, la séquence est terminée.

Cet exemple illustre un modèle de conception applicable au modèle client-serveur : la séparation des préoccupations .

Côté serveur

Le terme « côté serveur » désigne les programmes et les opérations qui s'exécutent sur le serveur . Il s'oppose aux programmes et opérations « côté client » qui s'exécutent sur le client .

Concepts généraux

Le terme « logiciel côté serveur » désigne une application informatique , telle qu'un serveur web , exécutée sur un serveur distant et accessible depuis l' ordinateur local , le smartphone ou tout autre appareil de l' utilisateur . Certaines opérations peuvent être effectuées côté serveur car elles nécessitent l'accès à des informations ou à des fonctionnalités non disponibles côté client , ou car leur exécution côté client serait lente, peu fiable ou non sécurisée .

Les programmes client et serveur peuvent être des logiciels courants, tels que des serveurs web et des navigateurs web gratuits ou commerciaux , communiquant entre eux à l'aide de protocoles standardisés . Il est également possible que les programmeurs conçoivent leur propre serveur, client et protocole de communication, qui ne peuvent être utilisés qu'entre eux.

Les opérations côté serveur comprennent à la fois celles qui sont effectuées en réponse aux requêtes des clients et les opérations non orientées client telles que les tâches de maintenance.

Sécurité informatique

En sécurité informatique , les vulnérabilités ou attaques côté serveur désignent celles qui se produisent sur un système serveur, et non côté client ou entre les deux . Par exemple, un attaquant pourrait exploiter une vulnérabilité d'injection SQL dans une application web afin de modifier malicieusement les données de la base de données du serveur ou d'y accéder sans autorisation . Un attaquant pourrait également s'introduire dans un système serveur en exploitant des vulnérabilités du système d'exploitation sous-jacent et ainsi accéder à la base de données et à d'autres fichiers de la même manière que les administrateurs autorisés du serveur.

Exemples

Dans le cas de projets de calcul distribué tels que SETI@home et le Great Internet Mersenne Prime Search , bien que la majeure partie des opérations se déroule côté client, les serveurs sont responsables de la coordination des clients, de l'envoi des données à analyser, de la réception et du stockage des résultats, de la fourniture de fonctionnalités de reporting aux administrateurs du projet, etc. Dans le cas d'une application utilisateur dépendante d'Internet comme Google Earth , bien que l'interrogation et l'affichage des données cartographiques s'effectuent côté client, le serveur est responsable du stockage permanent des données cartographiques, de la résolution des requêtes des utilisateurs en données cartographiques à renvoyer au client, etc.

Les applications et services Web peuvent être implémentés dans presque n'importe quel langage, pourvu qu'ils puissent renvoyer des données aux navigateurs Web conformes aux normes (éventuellement via des programmes intermédiaires) dans des formats utilisables par ces derniers.

Côté client

Le modèle client-serveur n'impose pas que les serveurs disposent de plus de ressources que les clients. Il permet plutôt à tout ordinateur d'étendre ses capacités en utilisant les ressources partagées d'autres hôtes. L'informatique centralisée , en revanche, alloue spécifiquement un grand nombre de ressources à un petit nombre d'ordinateurs. Plus les calculs sont déportés des clients vers les ordinateurs centraux, plus les clients peuvent être simples. Elle repose fortement sur les ressources réseau (serveurs et infrastructure) pour le calcul et le stockage. Un nœud sans disque charge même son système d'exploitation depuis le réseau, et un terminal informatique n'a pas de système d'exploitation ; il sert uniquement d'interface d'entrée/sortie avec le serveur. À l'inverse, un client riche , tel qu'un ordinateur personnel , dispose de nombreuses ressources et ne dépend pas d'un serveur pour ses fonctions essentielles.

Avec la baisse des prix et l'augmentation de la puissance des micro-ordinateurs des années 1980 à la fin des années 1990, de nombreuses organisations ont migré leurs calculs des serveurs centralisés, tels que les mainframes et les mini-ordinateurs , vers des clients riches. Cette transition a permis un contrôle plus étendu et individualisé des ressources informatiques, mais a complexifié la gestion des technologies de l'information . Au cours des années 2000, les applications web ont atteint une maturité suffisante pour rivaliser avec les logiciels applicatifs développés pour une microarchitecture spécifique . Cette maturation, la démocratisation du stockage de masse et l'avènement de l'architecture orientée services ont été parmi les facteurs ayant favorisé l' essor du cloud computing dans les années 2010.

Comparaison avec l'architecture pair à pair

En plus du modèle client-serveur, les applications de calcul distribué utilisent souvent l' architecture d'application peer-to-peer (P2P).

Dans le modèle client-serveur, le serveur est souvent conçu pour fonctionner comme un système centralisé desservant de nombreux clients. La puissance de calcul, la mémoire et les besoins de stockage d'un serveur doivent être dimensionnés en fonction de la charge de travail prévue. Des systèmes d'équilibrage de charge et de basculement sont souvent utilisés pour faire évoluer le serveur au-delà d'une seule machine physique.

L'équilibrage de charge est défini comme la distribution méthodique et efficace du trafic réseau ou applicatif entre plusieurs serveurs d'une ferme de serveurs. Chaque équilibreur de charge se situe entre les périphériques clients et les serveurs d'arrière-plan, recevant puis distribuant les requêtes entrantes à tout serveur disponible capable de les traiter.

Dans un réseau pair à pair , deux ordinateurs ou plus ( les pairs ) mettent en commun leurs ressources et communiquent au sein d'un système décentralisé . Les pairs sont des nœuds égaux, ou équipotents, dans un réseau non hiérarchique. Contrairement aux clients dans un réseau client-serveur ou client-file d'attente , les pairs communiquent directement entre eux. Dans un réseau pair à pair, un algorithme du protocole de communication répartit la charge , et même les pairs aux ressources modestes peuvent contribuer à la partager. Si un nœud devient indisponible, ses ressources partagées restent accessibles tant que d'autres pairs les proposent. Idéalement, un pair n'a pas besoin d'atteindre une haute disponibilité, car d'autres pairs redondants compensent toute indisponibilité de ressources ; lorsque la disponibilité et la capacité de charge des pairs varient, le protocole redirige les requêtes.

Les systèmes client-serveur et maître-esclave sont tous deux considérés comme des sous-catégories des systèmes pair-à-pair distribués.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index