Nous allons donc discuter du projet sur le socket de domaine Unix et le nom du projet est Synchronisation
des données.
Nous allons donc voir comment la communication inter-processus peut être utilisée pour réaliser la synchronisation des données entre les processus
s'exécutant sur la même machine.
Dans ce projet, nous allons donc créer un processus de gestion de la table de routage.
Il s'agit donc d'un processus spécial appelé processus de gestion de la table de routage, abrégé en RTM.
Un gestionnaire de table de routage est en fait responsable d'une table de routage de
la couche 3, n'est-ce pas ?
Il incombe à ce processus de maintenir la table de routage L3 et d'envoyer une notification de tout changement
dans cette table de routage.
Contenu aux clients connectés.
L'état de la table de routage doit être synchronisé entre tous les clients à tout moment.
Tel est donc l'objectif de ce projet.
L'objectif final de ce projet est que l'état de la table de routage soit exactement le même pour tous les clients
connectés.
Essayons donc de comprendre ce projet un peu plus en détail.
Quelle est donc la vision d'ensemble de ce projet ?
Vous disposez donc d'un processus spécial que nous appelons RTM, c'est-à-dire processus de gestion de la table de routage.
Et comme je l'ai dit, ce processus est en fait responsable d'une table de routage.
En ce moment même.
D'autres processus sont également en cours d'exécution dans le système.
Ces processus sont appelés processus clients, et ces clients sont connectés à notre processus de gestion des tables
de routage en tant que clients de domaine Unix.
Notre processus est donc en fait un processus serveur et les autres processus sont des processus clients qui sont
connectés à notre processus RTM à l'aide de sockets de domaine Unix.
Désormais, chaque fois qu'une entrée est ajoutée, supprimée ou créée dans une table de routage gérée par le
processus RTM, il incombe à ce dernier de synchroniser la même opération avec tous les clients
connectés.
Ces opérations sont donc abrégées en opérations CD.
C est l'abréviation de Créer.
U est l'abréviation de "Update" (mise à jour) et D est l'abréviation de "Delete" (suppression).
C'est vrai.
Le processus de gestion de la table de routage (RTM) envoie donc une mise à jour en file d'attente sur notification à tous les clients connectés.
Bien, discutons donc de ce projet un peu plus en détail et étape par étape.
Le RTM est donc en fait un responsable de la table de routage.
Ce tableau est géré par l'administrateur.
Alors, qui est l'administrateur ?
L'administrateur est une personne qui interagit réellement avec le processus RTM.
Cet administrateur peut choisir de créer, de mettre à jour ou de supprimer n'importe quelle entrée de la table de routage
gérée par le processus RTM.
Un exemple de ce type de tableau est présenté ci-dessous.
Voici donc un exemple de table de routage très simple.
Il se compose de trois champs.
Le premier champ, appelé sous-réseau de destination, contient une adresse IP dans ce format.
Le deuxième champ est l'IP de la passerelle, et le troisième champ est en fait un nom d'interface.
Il n'est pas nécessaire de comprendre ce que signifie exactement cette entrée dans une table de routage.
Il suffit de comprendre qu'il existe une table composée de trois champs, à savoir l'adresse
IP de destination, le sous-réseau, l'adresse IP de la passerelle et l'interface de sortie.
Il s'agit d'un projet approprié.
Vous pouvez également choisir de travailler avec un autre type de table, celui avec lequel vous vous sentez le plus à l'aise.
Pour cet exemple, je l'ai pris comme table de routage.
Pour construire la table de routage sur le processus RTM, vous êtes libre de choisir n'importe quelle structure de données pour représenter
cette table de routage.
Il peut s'agir d'une simple liste des entrées de la table de routage.
Qu'est-ce qu'une entrée dans la table de routage ?
Chaque ligne de cette table de routage est appelée entrée de la table de routage.
Ainsi, si vous maintenez une liste de liens de ces entrées de la table de routage, cette liste de liens représente en fait
votre table de routage.
L'administrateur peut maintenant effectuer des opérations d'insertion, de mise à jour et de suppression sur cette table de routage.
C'est vrai.
Ainsi, pour insérer une nouvelle entrée dans cette table de routage, l'administrateur doit spécifier les trois valeurs qui correspondent
aux trois champs de la table de routage, à savoir le masque de destination, la passerelle, l'adresse IP et l'interface sortante.
C'est vrai.
De même, pour mettre à jour une entrée existante dans la table de routage, l'administrateur doit spécifier le masque de destination,
la nouvelle adresse IP de la passerelle et la nouvelle interface de sortie.
Vous devez rechercher cette entrée dans la table de routage en utilisant le masque de destination comme clé.
Une fois que vous avez localisé cette entrée dans la table de routage, remplacez simplement l'ancienne adresse IP de la passerelle et l'ancienne
interface de sortie par ces nouvelles valeurs.
Cette opération est donc appelée opération de mise à jour.
La troisième opération que l'administrateur peut effectuer sur cette table de routage est en fait une opération
de suppression.
Tout ce que vous devez spécifier est la destination et la valeur du masque, car il s'agit d'une clé permettant d'identifier une entrée particulière
dans la table de routage.
Une fois que vous êtes en mesure de trouver cette entrée particulière dans la table de routage en utilisant la destination et le masque
comme clé, supprimez simplement cette entrée de la table de routage.
Voici donc les trois opérations qu'un administrateur peut effectuer sur une table de routage
gérée par un processus RTM.
Une fois que le processus RTM modifie l'état d'une table de routage en vertu de ces trois opérations effectuées par l'administrateur,
le processus de gestion de la table de routage doit synchroniser l'état ou la modification de la table de routage avec
tous les autres clients connectés.
Voyons donc comment cela peut se faire chaque fois que l'utilisateur effectue une opération sur la table de routage.
Le processus de gestion de la table de routage doit synchroniser cette opération particulière avec tous les clients connectés.
Lorsqu'un nouveau client se connecte au serveur.
Supposons maintenant qu'il y ait n nombre de clients déjà connectés à notre processus.
Et supposons qu'un nouveau client arrive et se connecte au serveur.
Ce nouveau client ne sait rien de l'état de la table de routage, n'est-ce pas ?
Ainsi, à ce stade, lorsque le serveur reçoit la demande d'établissement de connexion
du nouveau client et que la connexion est entièrement établie, il incombe au processus RTM d'envoyer l'instantané
complet de la table de routage à ce client nouvellement connecté.
C'est vrai.
C'est ce qu'on appelle le vidage de la table de routage, c'est-à-dire l'opération de vidage.
Ainsi, à tout moment, la table de routage doit être identique sur le processus RTM ainsi que sur tous les clients connectés.
C'est ce que vous pouvez voir dans ce diagramme.
Le processus est ici et ce processus est en charge de la table de routage.
Nous avons d'autres processus clients qui s'exécutent sur la même machine et ces processus clients
sont connectés à notre processus RTM.
Supposons maintenant qu'à un moment donné, ce processus client particulier ait
le même état de la table de routage que ce processus RTM.
Les autres clients ont également le même état de la table de routage, mais je n'ai pas d'espace pour dessiner
la même table de routage pour les deux autres clients.
Par conséquent, je n'ai dessiné cette table de routage que pour ce client, mais je suppose que tous les clients connectés
ont le même état de la table de routage.
Maintenant, dans cet exemple, supposons qu'il s'agisse d'un client, A la table de routage du client A est en parfaite synchronisation
avec la table de routage des processus RTM.
Supposons maintenant qu'un administrateur effectue une opération sur RTM et ajoute une nouvelle entrée dans cette table de routage.
La responsabilité du processus Altium est de synchroniser cet ajout particulier d'une nouvelle entrée
avec tous les processus clients connectés.
Notre processus doit donc transmettre à tous les clients connectés l'information selon laquelle une nouvelle donnée a été
ajoutée à la table de routage.
Le processus RTM transmet donc cette information en utilisant le format suivant.
Qu'est-ce que ce format ?
Ce format contient deux champs.
Le premier champ indique si l'entrée est créée, mise à jour ou supprimée.
Par conséquent, le premier champ est également appelé code d'opération, et le deuxième champ est en
fait la donnée qui a été ajoutée à la table de routage.
Dans cet exemple, le processus RTM doit donc communiquer aux autres clients qu'une nouvelle entrée vient d'être ajoutée
à la table de routage.
Lorsque le processus client reçoit l'information du processus RTM concernant
la mise à jour de la table de routage, il traite cette mise à jour et la notification
reçue du processus RTM.
En conséquence, la table de routage du processus client est synchronisée avec la table de routage
du processus RTM.
De même, lorsque l'administrateur supprime ou met à jour l'entrée de la table de routage du processus RTM, ce dernier
doit envoyer le code d'opération correspondant.
En d'autres termes, il peut être mis à jour ou supprimé en même temps que les données pour tous les autres clients connectés.
L'objectif final est donc qu'à tout moment, l'état de la table de routage de tous les clients
soit exactement le même que l'état de la table de routage du processus RTM.
Examinons maintenant rapidement les structures de données que vous souhaitez utiliser pour mettre en œuvre ce mécanisme
de synchronisation des données.
Nous avons donc discuté de la nécessité de disposer de trois codes d'opération, à savoir la création, la mise à jour et la suppression.
Le code d'opération Create correspond à la création d'une nouvelle entrée dans la table de routage du processus RTM.
La mise à jour correspond à l'actualisation de l'entrée existante dans la table de routage sur le processus RTM.
De même, le code d'opération de suppression sera utilisé lorsque l'administrateur essaiera de supprimer des données.
L'entrée de la table de routage vous permet d'utiliser ces codes d'opération et de les définir en tant qu'énumération.
Aujourd'hui.
Deuxièmement, vous avez besoin d'une structure qui représente une entrée de la table de routage.
Vous pouvez donc voir que l'entrée de la table de routage se compose de quatre informations : le masque de destination,
la passerelle et l'interface de sortie.
Dans la table de routage, la destination et le masque forment ensemble une clé.
Pour identifier de manière unique une entrée de la table de routage, vous devez donc utiliser la destination et la valeur
du masque comme clé.
Maintenant, lorsque le processus RTM doit envoyer la notification au reste des autres clients, il doit
envoyer la notification en utilisant ce message.
Ce message est donc en fait un mélange du code d'opération qui peut être la création, la mise à jour ou la suppression.
Le deuxième champ, le corps du message, peut être utilisé pour envoyer les données exactes qui sont ajoutées ou mises
à jour dans la table de routage du processus RTM.
C'est vrai.
Je discute donc de cette structure de données afin de vous aider à concevoir votre projet.
J'espère donc que la fonctionnalité du projet est claire. Lorsque nous aborderons d'autres
mécanismes IPC dans ce cours, nous étendrons ce projet et y ajouterons davantage de complexité et de fonctionnalité.
Veuillez donc passer au module deux.
Il s'agit du mécanisme IPC suivant, qui ne sera mis en place que lorsque vous aurez achevé ce projet.
Voilà pour la communication inter-processus basée sur les sockets du domaine Unix.