Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

Dokumentation zum RESOLVE.STX Version 1.06 von Ulf Ronald Andersson

Inhalt:

Einführung in den DNS-Resolver

Die meisten TCP/IP-Clients erlauben es dem User, IP-Adressen entweder in Form symbolischer Domain-Namen oder als numerische Adresse (x.x.x.x). Diese werden dann als Argument dem Resolver-Modul übergeben. Indem eine Befehlssyntax benutzt wird, die illegal ist entweder für symbolische oder numerische Adressen, erlaubt mein Resolver-Modul diesen Programmen, auch für Befehle benutzt zu werden.

Die empfohlene Methode, diese Kommandos zu benutzen, ist, dies über das Resolve Tool des STinG Dialers von Peter Rottengatter zu tun. Mit anderen Interfaces sollte es auch funktionieren, könnte aber unerwünschte Nebenwirkungen in diesen Programmen haben (normalerweise wird versucht, eine Verbindung aufzubauen mit gespeicherten IP-Adressen).

Alle Schlüsselworte beginnen und enden mit eckigen Klammern ('[' und ']'), und ein unbekannter Befehl, der mit einer öffnenden eckigen Klammer beginnt, wird keine Auswirkungen haben. Der Resolver wird in diesem Fall 'E_CANTRESOLVE' zurückliefern. Diese Fehlermeldung wird auch immer zurückgegeben, wenn seine Ausführung fehlschlägt, egal aus welchem Grund.
Dies hat den Grund, daß einige Clients Rückmeldungen nur auf diese Meldung überprüfen. Diese Clients würden, wenn ich einen anderen Fehlercode zurückgebe, Müll produzieren. Alle erfolgreich durchgeführten Befehle werden am Ende einen Cache-Eintrag hinterlassen, um die erfolgreiche Durchführung aufzuzeigen. Die einzigen Ausnahmen sind [FIRST] und [NEXT], wenn sie in dieser Form benutzt werden, um einen nicht vorhandenen Eintrag zu erhalten. Hier wird 'E_CANTRESOLVE' zurückgegeben werden, obwohl kein wirklicher Fehler aufgetreten ist.

TABs und Leerzeichen werden ignoriert, wenn sie um Schlüsselworte, Argumente und Trenner herum oder zwischen diesen stehen, sie dürfen jedoch nicht innerhalb dieser stehen.

Bitte beachten:
Punkte ('.') werden hier nicht als Trenner betrachtet, sondern eher als Operatoren, mit denen aus Einzelstrings ganze Adressen oder Namen gebildet werden. Innerhalb von Domain-Namen oder numerischen IP-Adressen sind TABs und Leerzeichen nicht erlaubt. Die einzigen zur Zeit definierten Trenner sind '=' und ':'.

Innerhalb der eckigen Klammern ist Groß-/Kleinschreibung egal und wird auch nicht beibehalten, also können Sie statt [LOAD] auch [load] oder [loAD] (usw.) benutzen.


BefehlArgumentBeschreibung
[LOAD]kein Argumentlädt die Datei CACHE.DNS ins RAM
[SAVE]kein Argumentspeichert die Datei CACHE.DNS auf HD
[FIRST]kein Argumentresolved den Root-Eintrag des DNS-Cache im RAM
[NEXT]kein Argumentresolved den nächsten Eintrag des DNS-Cache im RAM
[CNAME]arg1=arg2:arg3Definiert einen "canonical" Domain-Namen für eine IP
[ALIAS]arg1=arg2:arg3Definiert einen Alias-Domain-Namen für eine IP

Die letzten beiden Befehle haben eine identische Syntax; das Argument hat folgende Bedeutung:

ArgumentBedeutungBeispielErklärung
arg1Der Domain-Namehugin.oden.se(der Server meines Providers)
arg2Die numerische IP193.45.240.2dessen IP-Adresse
arg3Time To Live (in Sekunden)172800zwei Tage gültig

Der TTL-Eintrag und der einleitende Doppelpunkt sind optional, und werden sie weggelassen, wird als Voreinstellung 10 Jahre angenommen. Dies ist dazu gedacht, um Einträge mit halb-permanenten IPs in lokalen Netzwerken zu erstellen, und erlaubt, ausschlißlich symbolische Adressen sowohl in einem kleinen Intranet als auch im Internet zu benutzen. Es wird hierfür kein Nameserver benötigt, was insofern wichtig ist, als es für TOS noch keinen gibt.

Bitte beachten:
Um ein Alias zu definieren, müssen Sie zuerst den "canonical" Namen dieser IP definieren. Aliase werden über die "canonical" Einträge erstellt, daher müssen diese zuerst vorhanden sein. (Dies wird bei Netzwerkanfragen automatisch erledigt.)

Die beiden Kommandos [FIRST] und [NEXT] können dazu benutzt werden, alle Cacheeinträge zu durchsuchen, da E_CANTRESOLVE zurückgegeben wird, sobald das Ende des Cache erreicht wurde.

Aus technischen Gründen enthält FIRST hier den zuletzt definierten Inhalt von CNAME, und der letzte Eintrag wird das älteste ALIAS des ältesten CNAME sein, oder CNAME selbst, wenn der älteste keine Aliase hat. Auf diese Weise ist der Cache organisiert und die Reihenfolge des Durchsuchens folgt konsequent diesem Muster. Daher werden Einträge relativ zu ihrem CNAME definiert, und die Reihenfolge, in der sie definiert ist, verweist nur auf die anderen Aliase desselben CNAME.

Die Ergebnisse der Befehle, wie sie dem "resolvenden" Client übergeben werden:

SchlüsselwortErgebnis
[LOAD]Löst den 'root'(Wurzel-) Eintrag des erfolgreichen geladenen Caches auf
[SAVE]Löst den 'current'(aktuellen) Eintrag nach erfolgreichem Sichern auf
[FIRST]Löst den 'root' Eintrag des Cache auf, sofern er nicht leer ist
[NEXT]Löst den 'next' (nächsten) Eintrag des Caches auf, sofern das Ende noch nicht erreicht ist
[CNAME]Löst den definierten Eintrag auf, wenn dieser gefunden wird
[ALIAS]Löst den definierten Eintrag auf, wenn dieser gefunden wird

Achtung: Aus Sicherheitsgründen, die in der Einleitung angeführt wurden, werden alle Fehler der Kommandos dem aufrufenden Client mit dem Fehlercode 'E_CANTRESOLVE' gemeldet. Dies ist der einzige Code, der gewährleistet, daß keine falschen Daten unter der Annahme, daß sie gültig seien, benutzt werden, was zu Bomben führen könnte.

Da die meisten Clients versuchen werden, von jeder mit dem Resolver aufgelösten Adresse Gebrauch zu machen, rate ich dringend dazu, daß nur das Resolve-Tool des Dialers dazu benutzt wird, die Befehle einzugeben. Dies ist der einzige mir bekannte Client, der die so ermittelten Adressen nicht im Netzwerk verwenden wird.


Resolver: History

 

VersionGrößere Änderungen seit der letzten Version
1.06, 24.9.97
  • [NEXT] verändert, um das Ende des Cache bei Userzugriffen zu erkennen
  • Bugfix, es wurde bei einem RAM-Fehler E_NOMEM zurückgegeben, jetzt E_CANTRESOLVE
  • Bug gefixt, der im Cache ALIASe ohne CNAME zerstörte
  • Neu: Mehrfache IP-Rückgabe bei DNS-Netz-Anfragen
  • Neu: Mehrfaches Caching bei DNS-Anfragen mit mehrfachen Ergebnissen
  • Neu: Mehrfache IP-Rückgabe bei IP-Cache-Anfragen
  • Neu: Antwort auf ICMP-Fehlermeldungen, so daß alle Rechner im LAN fehlgeschlagene Anfragen an den Provider mitbekommen, der auf Offline-Status zurückzuführen ist
1.05, 12.9.97
  • Case-Sensitivity aus dem Befehlsinterpreter entfernt
  • Etwas Cache-Code restrukturiert
1.04, 6.8.97
  • Ein paar Bugfixes bei den Befehlen
  • Ein paar Bugfixes beim Caching
  • Lokale ttl-Voreinstellung auf unendlich gesetzt, wenn beim Start keine richtige Zeit eingestellt war, um den Verlust von Einträgen zu vermeiden
1.03,??.6.97
  • Erstes richtiges Release
  • Cache-Befehle implementiert
  • Einige Bugs gefixt
  • Etwas Code aus der DNS-Anfrage gefixt
1.02,??.5.97
  • Erste funktionierende Version
  • Caching mit Netzwerk-Anfragen kombiniert
  • UDP-Retries mit TCP-Fallback implementiert
0.00-1.01Frühe experimentelle Versionen, erst von Peter, dann von mir. Diese enthielten getrennt entwickelten Code für Netzwerkanfragen und für das grundlegende Cace-System (noch in großen Teilen enthalten.

Zurück zur Startseite
Zum Anfang der Seite


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum