6. Réception de paquet (Packet Reception)
Lorsqu'un paquet de résolution d'adresse est reçu, le module Ethernet du destinataire transmet le paquet au module de résolution d'adresse, qui exécute un algorithme similaire à ce qui suit. Les conditions négatives indiquent la fin du traitement et l'abandon du paquet.
Déroulement de l'algorithme (Algorithm Flow):
?Le type de matériel dans ar$hrd est-il pris en charge par moi ?
Oui : (presque certainement)
[Facultatif : vérifier la longueur de matériel ar$hln]
?Le protocole dans ar$pro est-il pris en charge par moi ?
Oui :
[Facultatif : vérifier la longueur de protocole ar$pln]
Merge_flag := false
Si la paire <type de protocole, adresse de protocole de l'émetteur> figure déjà
dans ma table de conversion, mettre à jour le champ adresse matérielle
de l'émetteur de cette entrée avec les nouvelles informations du paquet,
et définir Merge_flag sur true.
?Suis-je l'adresse de protocole de destination ?
Oui :
Si Merge_flag est false, ajouter le triplet <type de protocole,
adresse de protocole de l'émetteur, adresse matérielle de l'émetteur>
à la table de conversion.
?Le code d'opération est-il ares_op$REQUEST ? (ne regarder le code d'opération que maintenant !!)
Oui :
Échanger les champs matériels et de protocole, placer les adresses
matérielle et de protocole locales dans les champs de l'émetteur.
Définir le champ ar$op sur ares_op$REPLY
Envoyer le paquet sur le même matériel que celui ayant reçu la requête,
à l'adresse matérielle de destination (nouvelle).
Notez que le triplet <type de protocole, adresse de protocole de l'émetteur, adresse matérielle de l'émetteur> est fusionné dans la table avant même que le code d'opération ne soit examiné. Cela repose sur l'hypothèse que la communication est bidirectionnelle : si A a une raison de communiquer avec B, alors B a probablement aussi une raison de communiquer avec A. Notez également que si une entrée pour la paire <type de protocole, adresse de protocole de l'émetteur> existe déjà, la nouvelle adresse matérielle remplace l'entrée existante. La section Problèmes associés (Related Issues) en donne quelques explications.
Généralisation (Generalization)
Les champs ar$hrd et ar$hln permettent à ce protocole et à ce format de paquet d'être utilisés pour un réseau autre qu'Ethernet 10Mbit. Pour Ethernet 10Mbit, <ar$hrd, ar$hln> prend la valeur <1, 6>. Pour d'autres réseaux matériels, le champ ar$pro peut ne plus correspondre au champ de type Ethernet, mais doit être associé au protocole dont l'adresse est en cours de résolution.