RPC (Remote Process Call pour appel de procédure à distance) est un protocole de couche 5 du modèle OSI présent dans tous les systèmes d’exploitations (Windows, Linux, MacOS ou Android).
C’est une technique de communication interprocessus (inter-process communication – IPC) utilisée pour les applications client-serveur.
Un programme peut utiliser ce protocole pour demander un service à un programme situé dans un autre ordinateur d’un réseau sans avoir à comprendre les détails du réseau.
Dans ce tutoriel, vous trouverez toutes les informations sur ce protocole, la définition et le fonctionnement de RPC et des exemples d’utilisations les OS tels que Windows ou Linux.
Qu’est-ce que RPC
Un appel de procédure à distance ou RPC est utilisé dans l’informatique distribuée, et cet appel se produit lorsqu’une procédure est exécutée dans un espace d’adressage différent.
RPC utilise le modèle client-serveur. Le programme demandeur est un client et le programme fournisseur de services est le serveur. Comme un appel de procédure locale, une RPC est une opération synchrone qui exige que le programme demandeur soit suspendu jusqu’à ce que les résultats de la procédure distante soient renvoyés. Toutefois, l’utilisation de processus légers ou de threads qui partagent le même espace d’adressage permet d’exécuter plusieurs RPC simultanément.
Ce protocole est utile lorsque le processus ne connaît pas les détails du réseau de l’autre ordinateur et que le service est demandé dans un autre ordinateur. On parle également d’appel de sous-programme ou d’appel de fonction.
Il s’agit d’un modèle client-serveur. Les arguments sont transmis à une procédure à distance et l’appel est envoyé au serveur par le client. RPC peut être utilisé sous Windows, Apple et UNIX.
Les points importants :
- Les clients RPC possèdent une fonction de diffusion, ce qui leur permet de transférer des messages à plusieurs serveurs et d’obtenir les réponses correspondantes
- RPC peut effectuer un appel serveur non bloquant ou un appel client. L’appel peut être complété par une procédure liée au client
- La fonction permettant d’envoyer plusieurs appels clients non bloquants est appelée “lot unique”
La RPC couvre la couche transport et la couche application du modèle OSI (Open Systems Interconnection) de communication réseau. RPC facilite le développement d’une application comprenant plusieurs programmes répartis sur un réseau.
Un service web est une implémentation spécifique de RPC. Au niveau le plus bas, le service web se connecte à la socket, en utilisant le protocole HTTP, pour négocier l’envoi d’une charge utile qui est exécutée dans un espace distant (l’espace distant peut être le même ordinateur).
Toutes ces abstractions d’appel à distance sont, à la base, des RPC.
Enfin l’authentification de RPC est DES, ce qui permet de sécuriser l’application.
RPC : comment ça marche
Le protocole fonctionne à travers un appel du client vers le serveur RPC. Pour cela, des messages sont envoyés et reçus.
L’empaquetage du message par le stub client et le stub serveur est également connu sous le nom de marshalling et le dépaquetage du message par le stub client et le stub serveur est connu sous le nom de unmarshalling.
Un appel de procédure à distance (RPC) fonctionne dans un système d’exploitation selon les étapes suivantes :
- Étape 1 : le client, le stub client et le temps d’exécution RPC s’exécutent sur la machine du client
- Étape 2 : Un client démarre un processus de stub client en passant des paramètres de la manière habituelle. L’empaquetage des paramètres de procédure est appelé “marshalling“. Le stub client stocke les paramètres dans l’espace d’adressage du client et demande au runtime RPC local de les renvoyer au stub serveur
- Étape 3 : À ce stade, l’utilisateur peut accéder au RPC en effectuant un appel de procédure local régulier. L’exécution RPC gère la transmission des messages entre le réseau, le client et le serveur, et effectue également le travail de retransmission, d’accusé de réception, de routage et de chiffrement
- Étape 4 : Une fois la procédure serveur terminée, elle retourne au stub serveur, qui rassemble (marshalls) les valeurs de retour dans un message. La partie serveur renvoie ensuite un message à la couche transport.
- Étape 5 : Au cours de cette étape, la couche transport renvoie le message de résultat à la couche transport du client, qui renvoie un message au stub client
- Étape 6 : à ce stade, le stub client demarshalls (déballage) des paramètres de retour dans le paquet résultant, et le processus d’exécution retourne à l’appelant
Quels sont les types de RPC
Voici les quatres types de RPC possibles :
- RPC synchrone : Dans le cas d’un RPC synchrone, le programme client adresse une demande au serveur et attend une réponse avant de poursuivre. Cela signifie que le programme client est bloqué jusqu’à ce qu’il reçoive une réponse du serveur.
- RPC asynchrone / Callback RPC : Ce type de RPC permet un paradigme P2P entre les processus participants. Il permet à un processus d’être à la fois client et serveur. Le Callback RPC a les fonctions suivantes, telles que :
- RPC par diffusion / Broadcast RPC : La RPC par diffusion est une requête d’un client diffusée sur le réseau, traitée par tous les serveurs disposant de la méthode de traitement de cette requête. La RPC par diffusion a les fonctions suivantes :
- RPC en mode batch / Batch-mode RPC : Le mode batch RPC permet de mettre en file d’attente des requêtes RPC séparées, dans un tampon de transmission, côté client, puis de les envoyer en un seul lot au serveur sur le réseau
RPC dans les systèmes d’exploitation
Il existe plusieurs modèles et implémentations RPC. Le Distributed Computing Environment (DCE) de l’Open Software Foundation est un modèle et une implémentation populaires. L’Institute of Electrical and Electronics Engineers définit la RPC dans sa spécification ISO Remote Procedure Call, ISO/IEC CD 11578 N6561, ISO/IEC, novembre 1991.
RPC dans Windows
Windows possède un serveur RPC utilisé par différents composants.
Les développeurs peuvent l’utiliser, d’autant que les bibliothèques d’exécution RPC gèrent la plupart des processus liés aux protocoles et à la communication réseau.
Dans Windows, la communication fonctionne à travers un Sub Proxy utilisant le fichier système RPCRT4.DLL.
Le message passe à travers le service RPCSS pour être achemené au serveur RPC qui peut ensuite répondre par le même chemin.
L’avantage est que le proxy peut utiliser différents protocole comme ALPC, TCP, canaux nommés, etc.
Service Control Manager (SCM) est un serveur RPC qui permet la configuration des services et le contrôle des programmes de service. Ce service est lancé au démarrage du système et maintient une base de données des services installés dans le registre.
La base de données, connue sous le nom de base de données ServicesActive ou base de données SCM, est utilisée par le SCM et les programmes qui ajoutent, modifient ou configurent des services.
Depuis Windows Vista, le gestionnaire de contrôle des services (SCM) prend en charge les appels de procédure à distance via le protocole de contrôle de transmission (RPC/TCP) et les tuyaux nommés (RPC/NP).
Le nombreux composants de Windows s’appuie sur le service RPC.
Par exemple, les fonctions de gestion à distance telles que “Gestion de l’ordinateur”, “Éditeur de registre”, vous permettent de vous connecter à une machine distante. De nombreux composants DCOM (basés sur RPC, comme une enveloppe C++ de C), incluent des composants COM+.
Enfin e protocole RPC sur SMB (port TCP 445), connu sous le nom de partage de fichiers.
Ce service est essentiel, sil ne peut démarrer, vous pouvez rencontrer le message d’erreur “Le serveur RPC n est pas disponible“. Pire encore, Windows peut ne pas parvenir à démarrer et boucler sur la réparation automatique.
RPC dans Linux
Linux supporte aussi un serveur RPC.
La mise en œuvre de RPCbind est l’une des caractéristiques de l’Open Network Operating Procedure Call (ONC). Rpcbind accepte les réservations de ports des services RPC locaux. Ces ports sont ensuite mis à disposition (ou annoncés) pour que les services RPC distants correspondants puissent y accéder.
Le service rpcbind répond aux demandes de services RPC et établit des connexions avec le service RPC demandé.
Par exemple, NFSv3 est un service RPC. Nous reviendrons plus tard sur les détails.
Les avantages de RPC
Voici les avantages de la méthode RPC :
- La méthode RPC aide les clients à communiquer avec les serveurs par l’utilisation conventionnelle d’appels de procédure dans les langages de haut niveau
- La méthode RPC s’inspire de l’appel de procédure local, mais la procédure appelée est très probablement exécutée dans un processus différent et généralement sur un ordinateur différent
- RPC prend en charge les modèles orientés processus et threads
- RPC rend le mécanisme interne de transmission des messages caché à l’utilisateur
- L’effort nécessaire pour réécrire et redévelopper le code est minime
- Les appels de procédure à distance peuvent être utilisés dans un environnement distribué et local
- Il engage de nombreuses couches de protocole pour améliorer les performances
- Les appels de procédure à distance fournissent une abstraction. Par exemple, la nature de passage de messages de la communication réseau reste cachée à l’utilisateur
- RPC permet d’utiliser les applications dans un environnement distribué qui ne se limite pas à l’environnement local
- Avec le code RPC, les efforts de réécriture et de redéveloppement sont minimisés
- Les modèles orientés processus et orientés threads sont pris en charge par RPC
Les inconvénients de RPC
Voici les inconvénients de l’utilisation de RPC :
- Le concept de RPC peut être mis en œuvre de différentes manières, aucun véritable standard n’existe
- Problème de performance. Le temps d’appel (et de retour) d’une procédure à distance (c’est-à-dire les frais généraux) peut être nettement inférieur à celui d’une procédure locale
- L’appel de procédure à distance transmet les paramètres par des valeurs uniquement et des valeurs de pointeur, ce qui n’est pas autorisé
- Ce mécanisme est très vulnérable aux pannes car il implique un système de communication, une autre machine et un autre processus
- Le concept RPC n’offre pas de flexibilité pour l’architecture matérielle car il est principalement basé sur l’interaction
- Le coût du processus est augmenté à cause d’un appel de procédure à distance
Liens
- Le protocole TCP/IP : définition, architecture et couches
- ICMP (Internet message protocol) : définition, fonctionnement du protocole
- UDP (User Datagram Protocol) : définition, structure du protocole
- Protocole ARP : rôle et fonctionnement
- Le protocole HTTP (Hypertext Transfer Protocol) : versions et fonctionnement
- Protocole FTP pour partager ses fichiers : principe et fonctionnement
- Le chiffrement (cryptage) des données : comment ça marche et pourquoi l’utiliser
- Le protocole DHCP : fonctionnement et utilité
- DNS et serveurs de noms : Comment cela fonctionne ?
- Le protocole NTP et les serveurs de temps
- RPC (Remote Process Call) : définition et fonctionnement
- Les protocoles de sécurité WiFi : WEP, WPA, WPA2, et WPA3
- Connexion et protocole Ethernet : comment ça marche
L’article RPC (Remote Process Call) : définition et fonctionnement est apparu en premier sur malekal.com.
0 Commentaires