メインコンテンツまでスキップ

RFC 1034 - DOMAIN NAMES - CONCEPTS AND FACILITIES

ドメイン名 - 概念と機能

発行日: 1987年11月
ステータス: インターネット標準 (STD 13)
著者: Paul Mockapetris (ISI)
廃止: RFC 882, 883, 973


Status of this Memo (本メモのステータス)

このRFCは、ドメインネームシステム (Domain Name System, DNS) の入門書であり、詳細な情報は補完的なRFC「Domain Names - Implementation and Specification」[RFC-1035] に記載されています。そのRFCは、読者がこのメモで議論されている概念に精通していることを前提としています。

DNS機能とデータ型 (Data Types) のサブセットが公式プロトコル (Official Protocol) を構成しています。公式プロトコルには、標準クエリ (Standard Queries) とその応答、およびほとんどのインターネットクラスデータフォーマット (例: ホストアドレス) が含まれます。

しかし、ドメインシステム (Domain System) は意図的に拡張可能 (Extensible) です。研究者は継続的に新しいデータ型、クエリ型、クラス (Classes)、機能などを提案、実装、実験しています。したがって、公式プロトコルのコンポーネントは本質的に変更されず、プロダクションサービスとして動作することが期待されていますが、公式プロトコルを超える拡張では、常に実験的な動作が期待されるべきです。


Abstract (概要)

DNS (Domain Name System, ドメインネームシステム) は、インターネットインフラストラクチャの基本的なコンポーネントの1つであり、分散型の階層的な名前付けシステム (Naming System) を提供します。このRFCは、ドメイン名、インターネットメールおよびホストアドレスサポートでの使用、およびドメイン名機能を実装するために使用されるプロトコル (Protocols) とサーバー (Servers) を紹介します。


目次 (Table of Contents)

1. Status of this Memo (本メモのステータス)

2. Introduction (序論)

  • 2. Introduction (序論)
    • 2.1 The history of domain names (ドメイン名の歴史)
    • 2.2 DNS design goals (DNS設計目標)
    • 2.3 Assumptions about usage (使用に関する前提)
    • 2.4 Elements of the DNS (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 (RRのテキスト表現)
      • 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)


コアコンセプトクイックリファレンス

DNS階層構造

                    .  (ルート)
|
+----------+----------+
| | |
com org net ...
| | |
+----+----+ | +---+---+
| | | | |
google amazon ietf example ...
|
+---+---+
| |
www mail

ドメイン名の構造

www.example.com.
│ │ │ └─ ルート (通常は省略)
│ │ └───── トップレベルドメイン (TLD)
│ └─────────── セカンドレベルドメイン (SLD)
└───────────── ホスト名/サブドメイン

完全修飾ドメイン名 (Fully Qualified Domain Name, FQDN): www.example.com.
相対ドメイン名 (Relative Domain Name): www

DNSレコードタイプ (RR Types)

タイプ名称用途
AAddressIPv4アドレス
AAAAIPv6 AddressIPv6アドレス
CNAMECanonical Nameエイリアスレコード
MXMail Exchangeメールサーバー
NSName Serverネームサーバー
PTRPointer逆引きDNS
SOAStart of Authorityゾーン権威の開始
TXTTextテキストレコード
SRVServiceサービスロケーション

DNSクエリタイプ

再帰クエリ (Recursive Query):
クライアント → ローカルDNS → [再帰クエリ] → 最終的な回答

反復クエリ (Iterative Query):
クライアント → DNS1 → [参照] → DNS2 → [参照] → DNS3 → 回答

リソースレコード形式 (RR Format)

name    TTL   class   type   rdata
example.com. 3600 IN A 93.184.216.34
│ │ │ │ │
│ │ │ │ └─ レコードデータ
│ │ │ └────── レコードタイプ
│ │ └──────────── クラス (IN=Internet)
│ └────────────────── 生存時間 (秒)
└──────────────────────────────── ドメイン名

DNS解決プロセス

1. ユーザーが www.example.com をクエリ

2. ローカルキャッシュを確認

3. ローカルDNSサーバーにクエリ

4. ルートサーバーにクエリ → .comサーバーを返す

5. .comサーバーにクエリ → example.comサーバーを返す

6. example.comサーバーにクエリ → IPアドレスを返す

7. 結果を返してキャッシュ

ゾーン (Zone) vs ドメイン (Domain)

概念定義
ドメイン (Domain)名前ツリー内のノードとそのすべてのサブノードexample.comとそのすべてのサブドメイン
ゾーン (Zone)単一の権威によって管理されるドメインの一部example.comのゾーンファイル

重要な違い: ドメインは管理を容易にするために複数のゾーンに分割することができます。

ネームサーバーのタイプ

タイプ説明
権威サーバー (Authoritative)ゾーンデータの公式ソースを所有
再帰サーバー (Recursive)クライアントに代わって完全な解決を実行
キャッシュサーバー (Caching)クエリ結果のみをキャッシュ
フォワーダー (Forwarder)クエリを他のサーバーに転送

ゾーンファイルの例

$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の主要な特徴

1. 階層的な名前空間 (Hierarchical Namespace)

  • トップにルートがあるツリー構造
  • ドット (.) を使用してレベルを分離
  • 右から左に読む (ルート → TLD → SLD → ホスト)

2. 分散データベース (Distributed Database)

  • 単一障害点がない
  • データは世界中の数千のサーバーに分散
  • 各ゾーンは権威サーバーによって管理

3. キャッシング機構 (Caching Mechanism)

  • クエリの待ち時間を削減
  • ルートサーバーの負荷を軽減
  • TTLがキャッシュの有効期間を制御

4. 冗長性 (Redundancy)

  • 13のルートサーバークラスター (A-M)
  • 各ゾーンは通常複数のNSレコードを持つ
  • プライマリ/セカンダリサーバーアーキテクチャ

5. 拡張性 (Extensibility)

  • 新しいRRタイプをサポート
  • 新しいクエリタイプをサポート
  • EDNS0拡張メカニズム

DNS vs 初期システム (HOSTS.TXT)

特徴HOSTS.TXTDNS
管理集中型分散型
スケーラビリティ悪い (O(n²)帯域幅)良い (階層的)
更新手動FTP自動同期
クエリローカルファイル検索ネットワーククエリ
構造フラットリスト階層ツリー
パフォーマンスファイルサイズによる制限キャッシングで最適化

DNSデータフロー

+----------+
| クライアント |
| アプリ |
+----------+
↓ ↑
クエリ | レスポンス
↓ ↑
+----------+
| リゾルバ | ← 設定: /etc/resolv.conf
+----------+
↓ ↑
DNSプロトコル
↓ ↑
+----------+
| ネーム | ← ゾーンファイル
| サーバー |
+----------+

ルートサーバーシステム

世界的な13のルートサーバー識別子 (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

注意: エニーキャスト (Anycast) を通じて、各「ルートサーバー」は実際には世界中に分散された数百の物理サーバーです。


関連リソース

  • 公式RFC: RFC 1034 (TXT)
  • 公式ページ: RFC 1034 DataTracker
  • 補完RFC: RFC 1035 - DNS実装と仕様
  • 標準: STD 13
  • 更新:
    • RFC 1101 - DNSネットワーク名のエンコーディング
    • RFC 1183 - 新しいDNS RR定義
    • RFC 2181 - DNS仕様の明確化
    • RFC 2308 - DNSの否定的キャッシング
    • RFC 4033-4035 - DNSSEC
    • RFC 6891 - EDNS0拡張
    • RFC 8499 - DNS用語

便利なDNSコマンド

Unix/Linux/macOS

# Aレコードをクエリ
dig example.com A

# すべてのレコードをクエリ
dig example.com ANY

# 解決パスをトレース
dig +trace example.com

# 逆引きDNSクエリ
dig -x 8.8.8.8

# 特定のDNSサーバーにクエリ
dig @8.8.8.8 example.com

# nslookupコマンド
nslookup example.com

# hostコマンド
host example.com

Windows

# ドメイン名をクエリ
nslookup example.com

# 特定のタイプをクエリ
nslookup -type=MX example.com

# DNSキャッシュをクリア
ipconfig /flushdns

# DNSキャッシュを表示
ipconfig /displaydns

重要な注意: DNSは、ほとんどすべてのインターネットアプリケーションが依存する重要なインターネットインフラストラクチャです。DNSの概念と動作方法を理解することは、ネットワーク管理、セキュリティ、トラブルシューティングに不可欠です。

次のステップ: 詳細なプロトコル実装の詳細については、RFC 1035 - DNS実装と仕様 をお読みください。