Aller au contenu principal

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.