Skip to main content

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)

TypeNamePurpose
AAddressIPv4 address
AAAAIPv6 AddressIPv6 address
CNAMECanonical NameAlias record
MXMail ExchangeMail server
NSName ServerName server
PTRPointerReverse DNS
SOAStart of AuthorityZone authority
TXTTextText record
SRVServiceService 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

ConceptDefinitionExample
DomainA node in the name tree and all its subnodesexample.com and all its subdomains
ZoneA portion of a domain managed by a single authorityexample.com zone file

Key Difference: A domain can be divided into multiple zones for management purposes.

Name Server Types

TypeDescription
AuthoritativeOfficial source for zone data
RecursivePerforms complete resolution on behalf of clients
CachingOnly caches query results
ForwarderForwards 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)

FeatureHOSTS.TXTDNS
ManagementCentralizedDistributed
ScalabilityPoor (O(n²) bandwidth)Good (hierarchical)
UpdatesManual FTPAutomatic sync
QueriesLocal file lookupNetwork queries
StructureFlat listHierarchical tree
PerformanceLimited by file sizeOptimized 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.



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.