2012-03-25 10 views
4

Ich habe DNS-Antwort-Pakete in Wireshark untersucht, und bin nicht in der Lage, Hex-Codierung für die Antwort und autorisierende Abschnitte zu verstehen.DNS Antwort Antwort & autoritativen Abschnitt

Unter Berücksichtigung DNS-Abfrage für: mail.abcd.com

Die Antwort Abschnitt Namensfeld enthält, und die Hex-Codierung für diese variiert unter:

0xc00c 
0xc012 

Beide auf den gesamten Namen führen, dass im Feld bevölkert.

Der maßgebliche Abschnitt enthält auch den Namen Feld, aber das Hex für diese Codierung ist in der Regel:

0xc010 

Dies führt zu abcd.com auf dem Gebiet bevölkert wird.

Kann jemand sagen, was ist die Konvention gefolgt, um diese Felder zu füllen, wie es ziemlich verwirrend ist.

Dank

+0

Hoffentlich nützlich: http://www.zoneedit.com/doc/rfc/ – sarnold

Antwort

8

DNS-Labels verwenden das Format <length><data ...>.

Ein Label darf maximal 63 Bytes lang sein, daher hat das Feld <length> noch zwei Bits übrig. Diese werden verwendet, um einen Etikettentyp zu codieren.

Wenn die oberen zwei Bits 0b11 dann werden die verbleibenden sechs Bits statt mit dem folgenden Byte-Form kombiniert ein Komprimierungs pointer die eine innerhalb der DNS-Nutzlast über eine vor Instanz einer anderen Etiketten versetzt ist.

Da der Header des DNS-Protokolls 12 Byte lang ist, beträgt der kürzeste zulässige Offset 12 Byte, was den oben angezeigten Wert von 0xc00c ergibt.

[technisch, könnte man einen Kompressionszeiger konstruieren, der in den Header zeigt, aber es ist nicht streng konform mit dem Protokoll].

Ich würde dringend gegen versuchen, die Spezifikation von Drahtpaketen rückentwickeln - Sie werden unweigerlich Dinge vermissen. Lesen Sie stattdessen RFC 1035 - alles Kernmaterial ist da drin.

+0

Aber was ist, wenn eine Implementierung nicht dem Standard entspricht? Ist das möglich? – Utku

+0

Es ist möglich, aber der Empfänger sollte es als missgebildete Antwort behandeln – Alnitak

3

Lesen Sie in der Beschreibung auf name compression auf. 0xc, 0x12 und 0x10 sind Zeiger auf frühere Kopien der Namen "mail.abcd.com" und "abcd.com" im Paket.