Socket DNS Update Pakete empfangen

Ashiaka

Mitglied
Hallo zusammen,

ich habe ein paar Fragen zur Netzwerkprogrammierung mit Java. Ich versuche gerade einen in Java implementierten DNS-Server mit der Möglichkeit zu erweitern, DNS-Updates zu empfangen (siehe RFC 2136).

Ich habe bei der Netzwerkprogrammierung bisher allerdings nur Erfahrung in der Benutzung von ObjectOutputStreams / ObjectInputStreams bei ausschließlich in Java programmierten Server- Client-Anwendungen.

Deshalb suche ich nun ein paar Stichworte oder Tutorials die mir bei meinem Problem weiterhelfen könnten.

1. Muss ich hier ByteArrayInputStream in Verbindung mit DatagramSockets benutzen?
2. Ist das dann kompatibel zu C/C++, speziell dem Versenden von Chars?
3. Wenn ein DNS-Update Paket aus irgendeinem Grund auf mehrere UDP-Pakete aufgeteilt wird, wie kann man dann festellen, wann ein DNS-Update Paket vollständig vorliegt?
4. Gibt es vielleicht ein fertiges Dyn DNS-Server Modul, das ich beim googlen nicht gefunden hab?

Vielen Dank schonmal für Tipps und Anregungen,

Ashiaka
 

Ashiaka

Mitglied
Ich hab inzwischen mal ein bisschen gebastelt und einen einfachen UDP Server aus der Java-Insel aufgesetzt:

Java:
public class UDPServer 
{ 
  public static void main( String[] args ) throws IOException 
  { 
    DatagramSocket socket = new DatagramSocket( 53 ); 
 
    while ( true ) 
    { 
      // Auf Anfrage warten 
 
      DatagramPacket packet = new DatagramPacket( new byte[1024], 1024 ); 
      socket.receive( packet ); 
 
      // Empfänger auslesen 
 
      InetAddress address = packet.getAddress(); 
      int         port    = packet.getPort(); 
      int         len     = packet.getLength(); 
      byte[]      data    = packet.getData(); 
 
      System.out.printf( "Anfrage von %s vom Port %d mit der Länge %d:%n%s%n", 
                         address, port, len, new String( data, 0, len ) ); 
      for (int i = 0; i<len;i++)
    	  System.out.print(data[i] + ".");
      System.out.println();
    } 
  } 
}

Das ganze hab ich dann auch mal mit nsupdate getestet:
>server 127.0.0.1
>update add test.com 86400 A 1.2.3.4
>send

Es wird also ein DNS-Update Paket an den UDP-Server geschickt, das folgenden Header besitzen sollte:
http://bio3d.colorado.edu/tor/sadocs/dns/dns-hdr.png .


Der Server gibt mir darauf hin aus:

?]wwwtestcom
-33.93.0.0.0.1.0.0.0.0.0.0.3.119.119.119.4.116.101.115.116.3.99.111.109.0.0.6.0.1.

Die ersten 2 byte ergeben sich aus der zufälligen ID im Header. Die naechsten beiden 0-bytes sollten aber definitiv ungleich 0 sein, da hier u.a. der Nachrichtentyp "UPDATE" kodiert sein müsste. Auch die TTL und die IP sind in dem Paket nicht vorhanden, obwohl das laut RFC 2136 so sein sollte. Die "1" als sechstes byte gibt an, dass es ganau einen Query in dem Paket geben soll, aber die Query selbst fehlt.

Sieht jemand auf die Schnelle wo mein Denkfehler sein könnte?

Ich weiss, dass es sich hierbei vermutlich nicht um ein Java spezifisches Problem handelt. Ich möchte nur sicher gehen, dass ich nichts übersehe.

Viele Grüße, Ashiaka
 

Ashiaka

Mitglied
Das "?]" enspricht der zufälligen ID im Header des DNS-Pakets (in diesem Fall -33,93).

Weiterhin hab ich rausgefunden, dass nsupdate zunächst erstmal ein DNS-Query rausschickt um die Start Of Authority zu bestimmen, bevor das eigentliche DNS-Update rausgeschickt wird.

Mit Wireshark, ein bisschen reverse engineering und ein paar Zeilen Code sollte man einen fertigen DNS-Server eigentlich schnell anpassen können, so dass er DNS-Updates verarbeiten kann.

Viele Grüße,
Ashiaka
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Auto-Update programmieren! Netzwerkprogrammierung 24
A Automatisches Update beim Starten Netzwerkprogrammierung 1
G Update - Funktionalität wie Windows Update Netzwerkprogrammierung 11
T UDP Pakete empfangen ohne Programm zu blockieren Netzwerkprogrammierung 3
N Socket Pakete vom Server decodieren Netzwerkprogrammierung 10
staxx6 Mehr/ kleine oder Weniger/ große Pakete? Netzwerkprogrammierung 8
S HTTP Pakete Auslesen Netzwerkprogrammierung 22
A UDP verlorene Pakete/ socket.receive zu langsam Netzwerkprogrammierung 27
S UDP Broadcast - Pakete kommen nicht immer an Netzwerkprogrammierung 15
Dit_ UDP Pakete prüfen, sortieren Netzwerkprogrammierung 20
F UDP Server - mehrere Pakete auf einmal Netzwerkprogrammierung 12
K CRC geprüfte UDP Pakete.. Netzwerkprogrammierung 14
H TCP "verlorene Pakete" Netzwerkprogrammierung 8
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
S Tool zum Beobachten der Pakete Netzwerkprogrammierung 7
W UDP Pakete abfangen Netzwerkprogrammierung 3
G UDP Packet empfangen funktioniert nicht. Netzwerkprogrammierung 16
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
B Nach Verbindung gleich ObjectStream empfangen Netzwerkprogrammierung 1
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
P Server/Client Daten empfangen, wenn Daten gesendet werden Netzwerkprogrammierung 9
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
KeNnY_tHe_OwNeR Empfangen geht, Senden nicht ?! Netzwerkprogrammierung 18
B Befehle an Gameserver senden bzw. empfangen Netzwerkprogrammierung 2
M Client/Server Antwort von Server empfangen Netzwerkprogrammierung 6
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
H Empfangen von Strings Netzwerkprogrammierung 14
A String per ByteBuffer empfangen? Netzwerkprogrammierung 6
M TCP Socket und Server int senden und empfangen Netzwerkprogrammierung 6
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
F Datei senden und empfangen Netzwerkprogrammierung 4
D DatagramSocket Empfangen Textarea Netzwerkprogrammierung 2
M Vom Server per Socket Empfangen, aber wieviel Bytes? Netzwerkprogrammierung 11
TRunKX Hilfe beim senden und empfangen Netzwerkprogrammierung 2
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
S senden und empfangen von Objekten? Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben