Surveillance et débogage du réseau (Network Monitoring and Debugging)
Le protocole de résolution d'adresse ci-dessus permet à une machine d'acquérir des connaissances sur l'activité de protocole de niveau supérieur (par exemple, CHAOS, Internet, PUP, DECnet) sur un câble Ethernet. Il peut déterminer quels champs de type de protocole Ethernet sont utilisés (par valeur) et les adresses de protocole dans chaque type de protocole. En fait, il n'est pas nécessaire que le moniteur parle l'un des protocoles de niveau supérieur impliqués. Cela peut être fait comme suit :
Lorsqu'un moniteur reçoit un paquet de résolution d'adresse, il entre toujours le <type de protocole, adresse de protocole de l'émetteur, adresse matérielle de l'émetteur> dans une table. Il peut déterminer la longueur de l'adresse matérielle et de l'adresse de protocole à partir des champs ar$hln et ar$pln du paquet. Si l'opcode est REPLY, le moniteur peut jeter le paquet. Si l'opcode est REQUEST et que l'adresse de protocole cible correspond à l'adresse de protocole du moniteur, le moniteur envoie une REPLY comme il le ferait normalement. Le moniteur n'obtiendra qu'un seul mappage de cette manière, car la REPLY à la REQUEST sera envoyée directement à l'hôte demandeur. Le moniteur pourrait essayer d'envoyer sa propre REQUEST, mais cela pourrait mettre deux moniteurs dans une boucle d'envoi de REQUEST, et des précautions doivent être prises.
Parce que le protocole et l'opcode ne sont pas combinés en un seul champ, le moniteur n'a pas besoin de savoir quel opcode de requête est associé à quel opcode de réponse pour le même protocole de niveau supérieur. Les champs de longueur devraient également fournir suffisamment d'informations pour lui permettre d'« analyser » les adresses de protocole, bien qu'il n'ait aucune connaissance de ce que signifient les adresses de protocole.
Une implémentation fonctionnelle du protocole de résolution d'adresse peut également être utilisée pour déboguer une implémentation non fonctionnelle. Probablement, un pilote matériel diffusera avec succès un paquet avec un champ de type Ethernet de ether_type$ADDRESS_RESOLUTION. Le format du paquet peut ne pas être totalement correct, car les implémentations initiales peuvent avoir des bogues, et la gestion des tables peut être un peu délicate. Étant donné que les requêtes sont diffusées, un moniteur recevra le paquet et pourra l'afficher pour le débogage si nécessaire.