Verwandte Fragen (Related Issue)
Es kann wünschenswert sein, Tabellen-Aging und/oder Timeouts zu haben. Die Implementierung davon liegt außerhalb des Umfangs dieses Protokolls. Hier ist eine detailliertere Beschreibung (Dank an MOON@SCRC@MIT-MC).
Wenn ein Host sich bewegt, werden alle von diesem Host initiierten Verbindungen funktionieren, vorausgesetzt, seine eigene Adressauflösungstabelle wird gelöscht, wenn er sich bewegt. Allerdings haben von anderen Hosts zu ihm initiierte Verbindungen keinen besonderen Grund zu wissen, dass die alte Adresse verworfen werden sollte. Jedoch sollen 48-Bit-Ethernet-Adressen eindeutig und für alle Zeit fest sein, also sollten sie sich nicht ändern. Ein Host kann sich „bewegen", wenn sein Hostname (und seine Adresse in einem anderen Protokoll) einer anderen physischen Hardware neu zugewiesen wird. Außerdem, wie wir aus Erfahrung wissen, besteht immer die Gefahr, dass falsche Routing-Informationen versehentlich durch Hardware- oder Software-Fehler übertragen werden; dies sollte nicht dauerhaft erlaubt werden. Vielleicht sollte das Scheitern beim Initiieren einer Verbindung das Adressauflösungsmodul informieren, die Informationen zu löschen, mit der Begründung, dass der Host nicht erreichbar ist, möglicherweise weil er ausgefallen ist oder die alte Übersetzung nicht mehr gültig ist. Oder vielleicht sollte der Empfang eines Pakets von einem Host den Timeout im Adressauflösungseintrag zurücksetzen, der zum Übertragen von Paketen an diesen Host verwendet wird; wenn für eine geeignete Zeitdauer keine Pakete von einem Host empfangen werden, wird der Adressauflösungseintrag vergessen. Dies kann zusätzlichen Overhead verursachen, um die Tabelle für jedes eingehende Paket zu scannen. Vielleicht kann die Verwendung eines Hash oder Index dies schneller machen.
Der vorgeschlagene Algorithmus zum Empfang von Adressauflösungspaketen versucht, die Zeit zu verkürzen, die für die Wiederherstellung benötigt wird, wenn ein Host sich tatsächlich bewegt. Erinnern Sie sich daran, dass wenn das <Protokolltyp, Absender-Protokolladresse>-Paar bereits in der Übersetzungstabelle vorhanden ist, die neue Hardware-Adresse den vorhandenen Eintrag ersetzt. Daher erhält auf einem perfekten Ethernet, wo ein Broadcast-REQUEST alle Stationen auf dem Kabel erreicht, jede Station die neue Hardware-Adresse.
Eine Alternative wäre, einen Daemon die Timeouts durchführen zu lassen. Nach einer angemessenen Zeit erwägt der Daemon, einen Eintrag zu entfernen. Er sendet zuerst (mit einer kleinen Anzahl von Neuübertragungen bei Bedarf) ein Adressauflösungspaket mit Opcode REQUEST direkt an die Ethernet-Adresse in der Tabelle. Wenn eine REPLY nicht in kurzer Zeit gesehen wird, wird der Eintrag gelöscht. Die Anfrage wird direkt gesendet, um nicht jede Station auf dem Ethernet zu stören. Einfach Einträge zu vergessen wird wahrscheinlich dazu führen, dass nützliche Informationen vergessen werden, die neu gewonnen werden müssen.
Da Hosts keine Informationen über jemand anderen als sich selbst übertragen, führt ein Neustart eines Hosts dazu, dass seine Adresszuordnungstabelle aktuell ist. Schlechte Informationen können nicht dauerhaft bestehen bleiben, indem sie von Maschine zu Maschine weitergegeben werden; die einzigen schlechten Informationen, die existieren können, befinden sich in einer Maschine, die nicht weiß, dass eine andere Maschine ihre 48-Bit-Ethernet-Adresse geändert hat. Vielleicht reicht das manuelle Zurücksetzen (oder Löschen) der Adresszuordnungstabelle aus.
Wenn man glaubt, dass dieses Problem wichtig ist, ist es wichtig, dass der Daemon einen Timeout durchführt und die Frage erneut stellt, anstatt einfach den Eintrag zu entfernen. Der Daemon könnte auch bessere Arbeit bei Neuübertragungen leisten als dieses Protokoll, da eine Zielmaschine, die physisch verbunden, aber nicht erreichbar ist (z.B. aufgrund eines Software-Fehlers), nicht auf die Anfrage antworten sollte. Dieses Protokoll wird verwendet, um die Ethernet-Adresse des nächsten Hop-Gateways zu bestimmen, und dieses Gateway sollte nicht auf alle Adressauflösungspakete auf dem Ethernet antworten müssen. Dies ist kein wesentliches Problem, da der Daemon das Adressauflösungsprotokoll verwenden könnte, um die Frage zu stellen, anstatt das Adressauflösungsmodul sein eigenes Protokoll verwenden zu lassen.