Nous allons maintenant discuter de la manière dont les demandes d'accès seront traitées.
L'utilisateur peut émettre une demande d'accès à n'importe quel nœud de la topologie.
L'objectif de la requête "get" est de récupérer la valeur de x correspondant à la clé spécifiée en tant qu'argument de
la requête "get".
La valeur correspondant à cette clé peut être présente sur n'importe quel nœud de la topologie.
Essayons maintenant de comprendre la fonctionnalité de la requête get à l'aide d'un exemple.
Supposons que l'utilisateur émette une demande d'obtention avec une valeur de clé égale à cinq, et que cette demande soit émise sur le nœud
numéro trois.
C'est vrai.
Le nœud trois effectue une opération de hachage sur la clé égale à cinq.
Nous savons déjà que la fonction de hachage pour cinq renvoie six, n'est-ce pas ?
Le nœud trois sait maintenant qu'il n'a pas besoin d'aller chercher X contre K dans sa table de hachage locale et décide donc de transmettre
la valeur de la clé au nœud qui lui succède dans la topologie en anneau, c'est-à-dire le nœud quatre, en utilisant
le protocole UDP.
Appelons ce type de message "get forward".
Quel sera donc le contenu de ce message ?
Le contenu de ce message de transfert sera la valeur d'une clé, l'adresse IP de l'expéditeur,
qui est le nœud trois, et le numéro de port TCP de l'expéditeur, qui est également le nœud trois.
Nous devons donc coder ces trois éléments d'information dans le message get forward.
Ce message est ensuite transmis par le nœud trois au nœud quatre.
Lorsque le nœud quatre reçoit ce message de transmission, il répète le processus.
Il récupère la valeur de la clé dans le message de transfert qu'il a reçu du nœud 3 et applique la
fonction de hachage à cette valeur K afin de déterminer s'il doit traiter ce message de transfert
ou non.
C'est vrai.
Mais comme la fonction de hachage renvoie six, cela signifie simplement que le nœud quatre
transmettra le message à son successeur, le nœud cinq, sans en modifier le contenu.
Ce processus se poursuit jusqu'à ce que le nœud six reçoive le message "get forward".
La note six sait qu'elle doit récupérer la valeur de X par rapport à une clé dont la valeur est cinq dans sa table de
hachage locale, car la fonction de hachage pour cinq est égale à six, qui est un numéro de nœud.
Le nœud six sait donc que pour k la clé est égale à cinq, x est égal à cinq car il a récupéré cette valeur dans sa table
de hachage locale.
La demande d'accès a été émise à l'origine par l'utilisateur du nœud numéro trois.
L'utilisateur attend maintenant la valeur de X sur le nœud numéro trois.
La prochaine étape consiste donc à acheminer le nœud trois.
La valeur de X.
Pour ce faire, le nœud six établit une connexion TCP avec l'auteur initial de la demande,
c'est-à-dire le nœud numéro trois, et communique au nœud trois la valeur de X.
Appelons ce message "obtenir une réponse x".
Le nœud six envoie donc un message de réponse à l'expéditeur de la demande d'accès.
Lorsque l'auteur de la requête reçoit ce message de réponse X, il imprime simplement la
valeur de la clé et la valeur de x sur la console, ce qui indique à l'utilisateur que la valeur de la clé k et
la valeur de x sont égales à cinq.
Une fois que le nœud trois a reçu la valeur de x, le nœud trois ferme la connexion TCP avec le nœud six après avoir reçu
X est égal à cinq.
La note six ferme également la connexion TCP après l'envoi de X est égal à cinq.
Voici donc la fonctionnalité de la requête "get".
Résumons cela.
Quels sont les différents types de messages dont nous avons parlé et qui seront utilisés dans ce projet ?
Là encore, vous pouvez vous référer à l'organigramme que j'ai joint dans la section des ressources, qui explique
l'algorithme de la requête get à l'aide d'un organigramme.