RFC 1034 - DOMAIN NAMES - CONCEPTS AND FACILITIES
Published: November 1987
Status: Internet Standard (STD 13)
Author: Paul Mockapetris (ISI)
Obsoletes: RFC 882, 883, 973
Status of this Memo
This RFC is an introduction to the Domain Name System (DNS), and omits many details which can be found in a companion RFC, "Domain Names - Implementation and Specification" [RFC-1035]. That RFC assumes that the reader is familiar with the concepts discussed in this memo.
A subset of DNS functions and data types constitute an official protocol. The official protocol includes standard queries and their responses and most of the Internet class data formats (e.g., host addresses).
However, the domain system is intentionally extensible. Researchers are continuously proposing, implementing and experimenting with new data types, query types, classes, functions, etc. Thus while the components of the official protocol are expected to stay essentially unchanged and operate as a production service, experimental behavior should always be expected in extensions beyond the official protocol.
Abstract
The Domain Name System (DNS) is a fundamental component of the Internet infrastructure, providing a distributed, hierarchical naming system. This RFC introduces domain names, their use for Internet mail and host address support, and the protocols and servers used to implement domain name facilities.
Table of Contents
1. Status of this Memo
2. Introduction
- 2. Introduction
- 2.1 The history of domain names
- 2.2 DNS design goals
- 2.3 Assumptions about usage
- 2.4 Elements of the DNS
3. Domain Name Space and Resource Records
- 3. Domain Name Space and Resource Records
- 3.1 Name space specifications and terminology
- 3.2 Administrative guidelines on use
- 3.3 Technical guidelines on use
- 3.4 Example name space
- 3.5 Preferred name syntax
- 3.6 Resource Records
- 3.6.1 Textual expression of RRs
- 3.6.2 Aliases and canonical names
- 3.7 Queries
- 3.7.1 Standard queries
- 3.7.2 Inverse queries (Optional)
- 3.8 Status queries (Experimental)
- 3.9 Completion queries (Obsolete)
4. Name Servers
- 4. Name Servers
- 4.1 Introduction
- 4.2 How the database is divided into zones
- 4.2.1 Technical considerations
- 4.2.2 Administrative considerations
- 4.3 Name server internals
- 4.3.1 Queries and responses
- 4.3.2 Algorithm
- 4.3.3 Wildcards
- 4.3.4 Negative response caching (Optional)
- 4.4 Using the database
5. Resolvers
- 5. Resolvers
- 5.1 Introduction
- 5.2 Client-resolver interface
- 5.3 Resolver internals
Appendices
Core Concepts Quick Reference
DNS Hierarchy
. (root)
|
+----------+----------+
| | |
com org net ...
| | |
+----+----+ | +---+---+
| | | | |
google amazon ietf example ...
|
+---+---+
| |
www mail
Domain Name Structure
www.example.com.
│ │ │ └─ root (usually omitted)
│ │ └───── Top-Level Domain (TLD)
│ └─────────── Second-Level Domain (SLD)
└───────────── hostname/subdomain
Fully Qualified Domain Name (FQDN): www.example.com.
Relative Domain Name: www
DNS Record Types (RR Types)
| Type | Name | Purpose |
|---|---|---|
| A | Address | IPv4 address |
| AAAA | IPv6 Address | IPv6 address |
| CNAME | Canonical Name | Alias record |
| MX | Mail Exchange | Mail server |
| NS | Name Server | Name server |
| PTR | Pointer | Reverse DNS |
| SOA | Start of Authority | Zone authority |
| TXT | Text | Text record |
| SRV | Service | Service location |
DNS Query Types
Recursive Query:
Client → Local DNS → [recursive query] → Final answer
Iterative Query:
Client → DNS1 → [referral] → DNS2 → [referral] → DNS3 → Answer
Resource Record Format (RR Format)
name TTL class type rdata
example.com. 3600 IN A 93.184.216.34
│ │ │ │ │
│ │ │ │ └─ record data
│ │ │ └────── record type
│ │ └──────────── class (IN=Internet)
│ └────────────────── Time To Live (seconds)
└──────────────────────────────── domain name
DNS Resolution Process
1. User queries www.example.com
↓
2. Check local cache
↓
3. Query local DNS server
↓
4. Query root server → returns .com server
↓
5. Query .com server → returns example.com server
↓
6. Query example.com server → returns IP address
↓
7. Return result and cache
Zone vs Domain
| Concept | Definition | Example |
|---|---|---|
| Domain | A node in the name tree and all its subnodes | example.com and all its subdomains |
| Zone | A portion of a domain managed by a single authority | example.com zone file |
Key Difference: A domain can be divided into multiple zones for management purposes.
Name Server Types
| Type | Description |
|---|---|
| Authoritative | Official source for zone data |
| Recursive | Performs complete resolution on behalf of clients |
| Caching | Only caches query results |
| Forwarder | Forwards queries to other servers |
Zone File Example
$ORIGIN example.com.
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
IN MX 10 mail.example.com.
www IN A 93.184.216.34
mail IN A 93.184.216.35
ftp IN CNAME www.example.com.
DNS Key Features
1. Hierarchical Namespace
- Tree structure with root at top
- Uses dots (.) to separate levels
- Read from right to left (root → TLD → SLD → host)
2. Distributed Database
- No single point of failure
- Data distributed across thousands of servers globally
- Each zone managed by authoritative servers
3. Caching Mechanism
- Reduces query latency
- Lowers load on root servers
- TTL controls cache validity period
4. Redundancy
- 13 root server clusters (A-M)
- Each zone typically has multiple NS records
- Primary/secondary server architecture
5. Extensibility
- Supports new RR types
- Supports new query types
- EDNS0 extension mechanism
DNS vs Early Systems (HOSTS.TXT)
| Feature | HOSTS.TXT | DNS |
|---|---|---|
| Management | Centralized | Distributed |
| Scalability | Poor (O(n²) bandwidth) | Good (hierarchical) |
| Updates | Manual FTP | Automatic sync |
| Queries | Local file lookup | Network queries |
| Structure | Flat list | Hierarchical tree |
| Performance | Limited by file size | Optimized with caching |
DNS Data Flow
+----------+
| Client |
| App |
+----------+
↓ ↑
Query | Response
↓ ↑
+----------+
| Resolver | ← Config: /etc/resolv.conf
+----------+
↓ ↑
DNS Protocol
↓ ↑
+----------+
| Name | ← Zone files
| Server |
+----------+
Root Server System
Global 13 root server identifiers (A-M):
A.ROOT-SERVERS.NET - VeriSign
B.ROOT-SERVERS.NET - ISI
C.ROOT-SERVERS.NET - Cogent
D.ROOT-SERVERS.NET - UMD
E.ROOT-SERVERS.NET - NASA
F.ROOT-SERVERS.NET - ISC
G.ROOT-SERVERS.NET - DISA
H.ROOT-SERVERS.NET - ARL
I.ROOT-SERVERS.NET - Netnod
J.ROOT-SERVERS.NET - VeriSign
K.ROOT-SERVERS.NET - RIPE NCC
L.ROOT-SERVERS.NET - ICANN
M.ROOT-SERVERS.NET - WIDE
Note: Through anycast, each "root server" is actually hundreds of physical servers distributed globally.
Related Resources
- Official RFC: RFC 1034 (TXT)
- Official Page: RFC 1034 DataTracker
- Companion RFC: RFC 1035 - DNS Implementation and Specification
- Standard: STD 13
- Updates:
- RFC 1101 - DNS Encoding of Network Names
- RFC 1183 - New DNS RR Definitions
- RFC 2181 - Clarifications to the DNS Specification
- RFC 2308 - Negative Caching of DNS
- RFC 4033-4035 - DNSSEC
- RFC 6891 - EDNS0 Extensions
- RFC 8499 - DNS Terminology
Useful DNS Commands
Unix/Linux/macOS
# Query A record
dig example.com A
# Query all records
dig example.com ANY
# Trace resolution path
dig +trace example.com
# Reverse DNS query
dig -x 8.8.8.8
# Query specific DNS server
dig @8.8.8.8 example.com
# nslookup command
nslookup example.com
# host command
host example.com
Windows
# Query domain name
nslookup example.com
# Query specific type
nslookup -type=MX example.com
# Clear DNS cache
ipconfig /flushdns
# Display DNS cache
ipconfig /displaydns
Important Note: DNS is a critical Internet infrastructure that nearly all Internet applications depend on. Understanding DNS concepts and how it works is essential for network management, security, and troubleshooting.
Next Steps: Read RFC 1035 - DNS Implementation and Specification for detailed protocol implementation details.