ietf-corpus

rfc-1034

Domain names - concepts and facilities

P. Mockapetris
date1987-11 streamLegacy statusINTERNET STANDARD pages55 canonicalhttps://www.rfc-editor.org/rfc/rfc1034 doi10.17487/RFC1034 errataview
This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.

obsoletes

updated by

also

Extracted elements (30)

design-rationale §3.1

Case is preserved on receipt but comparisons are case-insensitive so that future extensions can introduce full binary domain names for new services without changing existing services. Mandating case-folding would foreclose that option.

dns

design-rationale §4.2.1

Glue RRs (address records for subzone name servers) are required when the name server's name is 'below' the delegation cut. Without them, a resolver would need the server's address to ask for the server's address—a circular dependency.

dns

design-rationale §2.1

The DNS was designed to replace the centralized HOSTS.TXT distribution model, whose bandwidth cost scaled as the square of the number of hosts. The distributed zone-and-delegation architecture allows local administrators to make changes immediately visible without coordinating with a central authority.

dns

design-rationale §2.3

The iterative query mode is preferred over recursive mode for datagram-based access because it avoids burdening name servers with unbounded work and allows clients to make use of referral information for future queries. Recursive mode is supported as an option for simple clients that cannot follow referrals.

dns

interoperability-note §3.7.2

Inverse queries (mapping a resource back to its domain name) are optional in a name server, but all name servers must be able to understand an inverse query message and return a not-implemented error. Inverse queries must not be used for address-to-name mapping; IN-ADDR.ARPA must be used instead.

dns

interoperability-note §5.3.2

RRs in the answer, authority, and additional sections of responses may include data with varying authority levels (authoritative vs. cached). Name servers mark responses to indicate whether data is authoritative. Resolvers must never let cached information override authoritative zone data when both are present.

dns

normative-requirement §4.3.1 MUST

All name servers must implement non-recursive (iterative) query mode; recursive service is optional and may be restricted to specific clients. A server should never perform recursive service unless the RD bit is set in the query.

dns

normative-requirement §3.6.2 MUST NOT

CNAME chains should be followed by resolvers; CNAME loops must be detected and signalled as an error. RRs that reference another name by domain name should point to the canonical (primary) name, not an alias, to avoid extra indirections.

dns

normative-requirement §3.1 SHOULD

Domain name comparisons for all present domain functions are done in a case-insensitive manner, assuming ASCII with a high-order zero bit. Implementations should preserve the case of received labels even though comparisons ignore case.

dns

normative-requirement §3.1 MUST

Domain name labels are limited to 63 octets or less. The total encoded domain name must not exceed 255 octets. These constraints simplify implementations and bound resource usage.

dns

normative-requirement §4.1 REQUIRED

Every zone must be available from at least two name servers to ensure availability despite host or communication link failure.

dns

normative-requirement §3.6.2 SHOULD

If a CNAME RR is present at a node, no other data should be present at that node. This ensures that data for a canonical name and its aliases cannot differ and that a cached CNAME can be used without consulting authoritative servers for other types.

dns

normative-requirement §3.5 SHOULD

Preferred label syntax (the LDH rule): labels must start with a letter, end with a letter or digit, and contain only letters, digits, and hyphens as interior characters. Labels must be 63 characters or less. Names violating these rules may break older software.

dns

normative-requirement §4.3.5 MUST

Zone transfers (AXFR) must use TCP or another reliable protocol because accuracy is essential. The first and last messages in an AXFR response must contain the data for the top authoritative node of the zone.

dns

protocol-element §3.6

A Resource Record (RR) consists of an owner name (domain name where the RR is found), a 16-bit type, a 16-bit class, a 32-bit TTL in seconds, and a variable-length RDATA field whose format depends on the type and class.

dns

protocol-element §4.2.1

A zone's data comprises: authoritative RRs for all nodes within the zone; the top-node data (including the SOA and NS RRs); delegation NS RRs at zone cuts (not authoritative for the zone); and glue address RRs for subzone name servers whose names fall below the cut.

dns

protocol-element §3.7

DNS messages contain a fixed header and four sections: Question (query name and parameters), Answer (RRs directly answering the query), Authority (RRs describing authoritative servers), and Additional (RRs that may be helpful in using the other sections).

dns

protocol-element §4.3.4

Optional negative response caching: an authoritative name server may include the zone's SOA RR in the additional section of an authoritative response. The SOA MINIMUM field controls how long the negative result (NXDOMAIN or no-data) may be cached by resolvers.

dns

protocol-element §4.3.1

Recursion negotiation uses two header bits: RD (Recursion Desired), set by the client in the query; and RA (Recursion Available), set or cleared by the server in all responses to indicate willingness to provide recursive service regardless of whether the client requested it.

dns

protocol-element §5.2.1

Reverse name-to-address mapping uses the IN-ADDR.ARPA domain: the octets of an IPv4 address are reversed and suffixed with 'IN-ADDR.ARPA', then a PTR query retrieves the canonical host name. For example, 1.2.3.4 maps to '4.3.2.1.IN-ADDR.ARPA'.

dns

protocol-element §4.3.5

SOA RR parameters governing zone maintenance: SERIAL (32-bit sequence number advanced on every change), REFRESH (seconds before secondary checks for new serial), RETRY (seconds between retries after a failed check), EXPIRE (seconds after which a secondary must discard its zone copy if no serial check succeeds), and MINIMUM (minimum TTL for zone data, also used for negative caching).

dns

protocol-element §3.7.1

Standard queries specify QNAME, QTYPE (16-bit, superset of defined types including AXFR for zone transfer, MAILB, and * for all types), and QCLASS (16-bit, including * for all classes). A QCLASS=* query can never yield an authoritative response because a server may not know all classes.

dns

protocol-element §3.6

Standard RR types defined in this memo include: A (32-bit host address for IN class), CNAME (canonical name for an alias), HINFO (CPU and OS), MX (16-bit preference + mail exchange host), NS (authoritative name server), PTR (domain name pointer), and SOA (start of zone of authority).

dns

protocol-element §3.6

The TTL field specifies in seconds how long a resolver may cache an RR before discarding it. A zero TTL prohibits caching. The TTL does not apply to authoritative data in zones, which is governed by zone refresh policy. Typical values should be on the order of days.

dns

protocol-element §4.3.3

Wildcard RRs have owner names of the form '*.\<anydomain\>'. They synthesize RRs for query names that match descendants of \<anydomain\> where no explicit data exists, with the owner of synthesized RRs set to QNAME. Wildcards do not apply across zone cuts or when explicit data exists for any name between the wildcard domain and the query name.

dns

security-consideration §5.3.3

The resolver must bound the amount of work (packets sent, parallel processes started) so that a request cannot enter an infinite loop or trigger a chain reaction of queries, even if some data is incorrectly configured. This is the highest-priority design constraint for resolver implementors.

dns, security

state-machine §4.3.2

The name server query algorithm proceeds in six steps: (1) set RA; (2) find nearest ancestor zone; (3) match QNAME label-by-label in the zone, handling CNAME restart, referral via NS cuts, and wildcard synthesis; (4) search cache; (5) if recursive mode, invoke resolver; (6) add useful RRs to the additional section.

dns

state-machine §5.3.3

The resolver algorithm uses four data structures—SNAME (target name), SLIST (current best name servers), SBELT (bootstrap safety-belt servers from configuration), and CACHE—and iterates: (1) check local data/cache; (2) find best servers; (3) send queries with retransmission; (4) analyze response: cache answer/name-error, follow delegation, follow CNAME, or drop unreachable server.

dns

state-machine §4.3.5

Zone refresh: a secondary waits REFRESH seconds, then queries the primary's SOA. If SERIAL is unchanged, restart REFRESH timer. If changed, issue AXFR. If the check fails, retry every RETRY seconds. If no successful check occurs within EXPIRE seconds, the secondary must discard its zone copy. Serial number comparisons use 32-bit sequence space arithmetic.

dns

wire-format §3.1

Domain names are represented internally as sequences of labels, where each label is a one-octet length field followed by that many octets of data. A zero-length octet terminates the sequence. The total number of octets representing a domain name (sum of all label octets and length octets) is limited to 255.

dns