Eine DNS-Query ist die Anfrage eines Clients oder Resolvers an einen Nameserver. Sie ist im Standard RFC 1035 als Nachricht mit Header und Question-Section definiert — im Kern die Frage: Welche Adresse gehört zu diesem Namen?

Aufbau einer DNS-Nachricht

Jede DNS-Nachricht beginnt mit einem Header von 12 Bytes. Er enthält eine zufällige ID zum Zuordnen von Frage und Antwort, Flag-Bits und Zähler für die folgenden Sektionen. Die wichtigsten Flags: QR (Query oder Response), Opcode (Standard-Query, Inverse Query, Status), AA (Authoritative Answer), TC (Truncated — Antwort abgeschnitten), RD (Recursion Desired) und RA (Recursion Available).

In der Question-Section steht die eigentliche Frage: der QNAME (Domainname als Label-Kette, zum Beispiel www.example.com), der QTYPE (gewünschter Eintragstyp) und die QCLASS (praktisch immer IN für das Internet).

Wichtige QTYPEs

  • A: IPv4-Adresse eines Hosts
  • AAAA: IPv6-Adresse eines Hosts
  • CNAME: Alias auf einen anderen Namen
  • MX: Mailserver einer Domain — Details im Artikel MX-Record
  • NS: zuständige Nameserver einer Zone
  • TXT: freie Textinformationen (SPF, DKIM, Verifikationen)
  • SOA: Start of Authority einer Zone
  • PTR: Reverse-Auflösung von IP zu Name

Transport: UDP und TCP

Die meisten Queries laufen über UDP-Port 53, weil das schnell und leichtgewichtig ist. Klassisch waren Antworten auf 512 Byte begrenzt; mit EDNS0 (Extension Mechanisms for DNS) sind deutlich größere Antworten möglich. Wird eine Antwort zu groß und das TC-Flag gesetzt, wiederholt der Client die Anfrage über TCP. TCP kommt außerdem bei Zonentransfers zum Einsatz.

Verwandte Grundlagen: DNS-Resolver, DNS-Zone, UDP, TCP, Netzwerkpaket., host-Befehle.