Hallo liebes Forum,
ich bin am verzweifeln.. ich suche und suche tagelang und ich bekomm einfach nichts hin!
ich würde gerne einen einfachen dns client schreiben, der mit zu einem host die dazugehörige IP
adresse ermittelt (A record), jedoch ohne java funktionen wie getHostByName() etc.
Ich will das ganze manuell machen, sprich mit nameservern kommunizieren.
Meine Idee war es zwei Klassen zu erstellen.
Eine hauptklasse und einen resolver der mit den nameservern kommunizieren kann.
Laut dem RFC 1035 kann ich die Daten per TCP/ UDP verschicken.
Das heißt also ich kann mit Sockets und Datagrammen arbeiten soweit ich mich nicht irre.
Ich hab herausgefunden, dass in der Anfrage der A record den Wert "1" hat und die CLASS ist standardmäßig: IN.
Meine Fragen sind nun:
- Wie erstelle ich diese "Oktett Pakete" ?
- Wie bringe ich meine Query unter?
- Wie sieht überhaupt meine query aus wenn ich einfach nur den A record eines hosts (z.b. google.de)
haben will?
- Wie bekomme ich so eine Paket Struktur hin?:
- Wie kann ich weitere Optionen, wie "recursive" übergeben?
- Wie empfange ich die Daten und wie kann ich diese auswerten?? (wegen der oktett struktur)
Ich hab zahlreiche Programme gefunden unter anderem auch dnsjava und ich habe auch probiert den quellcode zu analysieren.. jedoch finde ich mich da nicht zurecht, da da programm zu komplex für mich ist.
Ich bin am verzweifeln da ich nicht weiß wo ich anfangen soll.
Das hintergrundwissen über DNS Server ist mehr oder weniger vorhanden, jedoch
bekomme ich die impelementation in java einfach nicht hin weil ich darüber nichts gefunden habe.
Das forum hab ich auch schon durchsucht nach "dns client", hab leider auch nichts gefunden.
Ich bin dankbar für jede hilfe... sodass ich mal anfangen kann an dem programm zu arbeiten
[EDIT]
Ich hab mehrmals probiert mit einem nameserver zu kommunizieren...
aber sowas wie:
klappt leider nicht.. mein programm bekommt gar keine ausgabe...
[/EDIT]
Mit freundlichem Gruß
Johnny
ich bin am verzweifeln.. ich suche und suche tagelang und ich bekomm einfach nichts hin!
ich würde gerne einen einfachen dns client schreiben, der mit zu einem host die dazugehörige IP
adresse ermittelt (A record), jedoch ohne java funktionen wie getHostByName() etc.
Ich will das ganze manuell machen, sprich mit nameservern kommunizieren.
Meine Idee war es zwei Klassen zu erstellen.
Eine hauptklasse und einen resolver der mit den nameservern kommunizieren kann.
Laut dem RFC 1035 kann ich die Daten per TCP/ UDP verschicken.
Das heißt also ich kann mit Sockets und Datagrammen arbeiten soweit ich mich nicht irre.
Ich hab herausgefunden, dass in der Anfrage der A record den Wert "1" hat und die CLASS ist standardmäßig: IN.
Meine Fragen sind nun:
- Wie erstelle ich diese "Oktett Pakete" ?
- Wie bringe ich meine Query unter?
- Wie sieht überhaupt meine query aus wenn ich einfach nur den A record eines hosts (z.b. google.de)
haben will?
- Wie bekomme ich so eine Paket Struktur hin?:
Code:
+---------------------+
| Header |
+---------------------+
| Question | the question for the name server
+---------------------+
| Answer | RRs answering the question
+---------------------+
| Authority | RRs pointing toward an authority
+---------------------+
| Additional | RRs holding additional information
+---------------------+
- Wie empfange ich die Daten und wie kann ich diese auswerten?? (wegen der oktett struktur)
Ich hab zahlreiche Programme gefunden unter anderem auch dnsjava und ich habe auch probiert den quellcode zu analysieren.. jedoch finde ich mich da nicht zurecht, da da programm zu komplex für mich ist.
Ich bin am verzweifeln da ich nicht weiß wo ich anfangen soll.
Das hintergrundwissen über DNS Server ist mehr oder weniger vorhanden, jedoch
bekomme ich die impelementation in java einfach nicht hin weil ich darüber nichts gefunden habe.
Das forum hab ich auch schon durchsucht nach "dns client", hab leider auch nichts gefunden.
Ich bin dankbar für jede hilfe... sodass ich mal anfangen kann an dem programm zu arbeiten
[EDIT]
Ich hab mehrmals probiert mit einem nameserver zu kommunizieren...
aber sowas wie:
Java:
socket = new Socket ("217.237.148.70", 53);
in = socket.getInputStream();
out = socket.getOutputStream();
String query = "google.de IN A";
out.write ( query.getBytes() );
for (int g; (g = in.read()) != -1;) {
System.out.write (g);
}
klappt leider nicht.. mein programm bekommt gar keine ausgabe...
[/EDIT]
Mit freundlichem Gruß
Johnny
Zuletzt bearbeitet: