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.