3. Domain Name Space and RR Definitions (ドメイン名空間とRR定義)
本章では、DNSにおけるドメイン名のエンコード方法とリソースレコード (Resource Record) の形式を定義します。これはDNSを実装するための中核的な技術仕様です。
3.1. Name Space Definitions (名前空間定義)
ドメイン名のエンコーディング
メッセージ内のドメイン名はラベルのシーケンス (Sequence of Labels) として表現されます。
エンコーディング形式:
各ラベルは以下のように表現されます:
[長さバイト (1バイト)][ラベル内容 (Nバイト)]
例: www.example.com
エンコード: 3www7example3com0
詳細説明:
- 各ラベルは1オクテットの長さフィールドとそれに続くオクテット数で表現されます
- すべてのドメイン名はルートの空ラベルで終わるため、ドメイン名は長さバイト0で終了します
- すべての長さオクテットの上位2ビットはゼロでなければなりません (MUST)
- 長さフィールドの残りの6ビットはラベルを63オクテット以下に制限します
長さ制限:
単一ラベル: ≤ 63バイト
完全なドメイン名: ≤ 255バイト (長さバイトを含む)
ラベル内容の規則
バイト値: ラベルを構成するオクテットには任意の8ビット値を含めることができます
強い推奨: ラベルは、このメモの他の場所で説明されている推奨構文に従うべきです (SHOULD)。これは既存のホスト命名規則と互換性があります
比較規則:
- ネームサーバーとリゾルバは、ラベルを大文字小文字を区別しない方法で比較しなければなりません (MUST)
- ゼロパリティのASCIIを想定 (すなわち、A=a)
- 非アルファベットコードは完全に一致する必要があります
3.2. RR Definitions (RR定義)
3.2.1. Format (形式)
すべてのRR (Resource Record、リソースレコード) は、以下に示す同じトップレベル形式を持ちます:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| |
/ /
/ NAME /
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| CLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TTL |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RDLENGTH |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/ RDATA /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールドの説明:
-
NAME: 所有者名 (Owner Name)。すなわち、このリソースレコードが関係するノードの名前。
-
TYPE: RR TYPEコードの1つを含む2オクテット。
-
CLASS: RR CLASSコードの1つを含む2オクテット。
-
TTL: リソースレコードがキャッシュされる可能性のある時間間隔を指定する32ビット符号付き整数。情報のソースに再度問い合わせる前にキャッシュできる時間を指定します。ゼロ値は、RRが進行中のトランザクションにのみ使用でき、キャッシュすべきではないことを意味します。
-
RDLENGTH: RDATAフィールドの長さをオクテット単位で指定する符号なし16ビット整数。
-
RDATA: リソースを記述する可変長のオクテット文字列。この情報の形式は、リソースレコードのTYPEとCLASSによって異なります。
3.2.2. TYPE Values (TYPE値)
TYPEフィールドはリソースレコードで使用されます。これらのタイプはQTYPEのサブセットです。
| TYPE | 値 | 意味 |
|---|---|---|
| A | 1 | ホストアドレス |
| NS | 2 | 権威ネームサーバー |
| MD | 3 | メール宛先 (廃止 - MXを使用) |
| MF | 4 | メール転送者 (廃止 - MXを使用) |
| CNAME | 5 | エイリアスの正規名 |
| SOA | 6 | 権威ゾーンの開始 |
| MB | 7 | メールボックスドメイン名 (実験的) |
| MG | 8 | メールグループメンバー (実験的) |
| MR | 9 | メール名前変更ドメイン名 (実験的) |
| NULL | 10 | ヌルRR (実験的) |
| WKS | 11 | 既知のサービス記述 |
| PTR | 12 | ドメイン名ポインタ |
| HINFO | 13 | ホスト情報 |
| MINFO | 14 | メールボックスまたはメールリスト情報 |
| MX | 15 | メール交換 |
| TXT | 16 | テキスト文字列 |
3.2.3. QTYPE Values (QTYPE値)
QTYPEフィールドはクエリのクエスチョン部分に表示されます。QTYPEはTYPEのスーパーセットであるため、すべてのTYPEは有効なQTYPEです。
| QTYPE | 値 | 意味 |
|---|---|---|
| AXFR | 252 | ゾーン全体の転送要求 |
| MAILB | 253 | メールボックス関連レコードの要求 (MB、MG、またはMR) |
| MAILA | 254 | メールエージェントRRの要求 (廃止 - MXを参照) |
| * | 255 | すべてのレコードの要求 |
3.2.4. CLASS Values (CLASS値)
CLASSフィールドはリソースレコードに表示されます。
| CLASS | 値 | 意味 |
|---|---|---|
| IN | 1 | インターネット |
| CS | 2 | CSNETクラス (廃止) |
| CH | 3 | CHAOSクラス |
| HS | 4 | Hesiod [Dyer 87] |
3.2.5. QCLASS Values (QCLASS値)
QCLASSフィールドはクエリのクエスチョンセクションに表示されます。QCLASS値はCLASS値のスーパーセットです。
| QCLASS | 値 | 意味 |
|---|---|---|
| * | 255 | 任意のクラス |
3.3. Standard RRs (標準RR)
以下のRR定義は、すべての実装で発生することが期待されます。
3.3.1. CNAME RDATA Format (CNAME RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ CNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- CNAME: 所有者の正規名 (Canonical Name) または主要名を指定するドメイン名。所有者名はエイリアスです。
CNAME使用法:
- CNAME RRは、その所有者名をエイリアスとして識別します
- RDATAセクションで対応する正規名を指定します
- CNAME RRがノードに存在する場合、他のデータは存在すべきではありません (SHOULD NOT)
- これにより、正規名とそのエイリアスのデータが異なることがないようにします
3.3.2. HINFO RDATA Format (HINFO RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ CPU /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ OS /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- CPU: CPUタイプを指定する文字列。
- OS: オペレーティングシステムタイプを指定する文字列。
目的: HINFOレコードは、ホストに関する一般的な情報を取得するために使用されます。
3.3.3. MB RDATA Format (MB RDATAフォーマット) - 実験的
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ MADNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- MADNAME: 指定されたメールボックスを持つホストを指定するドメイン名。
ステータス: 実験的
3.3.4. MD RDATA Format (MD RDATAフォーマット) - 廃止
ステータス: 廃止 - MXを使用してください
3.3.5. MF RDATA Format (MF RDATAフォーマット) - 廃止
ステータス: 廃止 - MXを使用してください
3.3.6. MG RDATA Format (MG RDATAフォーマット) - 実験的
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ MGMNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- MGMNAME: ドメイン名によって識別されるメールグループに属するメールボックスを指定するドメイン名。
ステータス: 実験的
3.3.7. MINFO RDATA Format (MINFO RDATAフォーマット) - 実験的
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ RMAILBX /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ EMAILBX /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- RMAILBX: メールボックスの責任者を指定するドメイン名。
- EMAILBX: エラーメッセージを受信するメールボックスを指定するドメイン名。
ステータス: 実験的
3.3.8. MR RDATA Format (MR RDATAフォーマット) - 実験的
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ NEWNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- NEWNAME: メールボックスの正しい名前を指定するドメイン名。
ステータス: 実験的
3.3.9. MX RDATA Format (MX RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| PREFERENCE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ EXCHANGE /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- PREFERENCE: 同じ所有者の他のRRの中でこのRRに与えられる優先度を指定する16ビット整数。低い値が優先されます。
- EXCHANGE: 所有者名のメール交換として機能するホストを指定するドメイン名。
MX使用法:
- MXレコードは、EXCHANGEで指定されたホストに対してタイプAの追加セクション処理を引き起こします
- MX RRの使用はRFC-974で詳しく説明されています
3.3.10. NULL RDATA Format (NULL RDATAフォーマット) - 実験的
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ <anything> /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
<anything>: 任意の内容、最大65535バイト
目的:
- NULL RRは通常の操作には使用されません
- 実験的な目的に使用できます
- 任意のデータを含めることができます
ステータス: 実験的
3.3.11. NS RDATA Format (NS RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ NSDNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- NSDNAME: 指定されたクラスとドメインに対して権威を持つべきホストを指定するドメイン名。
NS使用法:
- NSレコードは、タイプAレコードを見つけるための通常の追加セクション処理を引き起こします
- 参照で使用される場合、名前空間内の委任点 (Delegation Point) を示します
3.3.12. PTR RDATA Format (PTR RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ PTRDNAME /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- PTRDNAME: ドメイン名空間内のどこかの場所を指すドメイン名。
PTR使用法:
- PTRレコードは追加セクション処理を引き起こしません
- これらのRRは、ドメイン空間内の他の場所を指すために特別なドメインで使用されます
- IN-ADDR.ARPAドメインでの逆引きDNSルックアップに使用されます
3.3.13. SOA RDATA Format (SOA RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ MNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ RNAME /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| SERIAL |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| REFRESH |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RETRY |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| EXPIRE |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| MINIMUM |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- MNAME: このゾーンのデータの元のまたは主要なソースであったネームサーバーのドメイン名。
- RNAME: このゾーンの責任者のメールボックスを指定するドメイン名。
- SERIAL: ゾーンの元のコピーの符号なし32ビットバージョン番号。ゾーン転送はこの値を保持します。
- REFRESH: ゾーンをリフレッシュする前に経過すべき32ビット時間間隔。
- RETRY: 失敗したリフレッシュを再試行する前に経過すべき32ビット時間間隔。
- EXPIRE: ゾーンが権威でなくなる前に経過可能な時間間隔の上限を指定する32ビット時間値。
- MINIMUM: このゾーンからの任意のRRとともにエクスポートされるべき符号なし32ビット最小TTLフィールド。
3.3.14. TXT RDATA Format (TXT RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ TXT-DATA /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- TXT-DATA: 1つ以上の文字列。
TXT使用法:
- TXT RRは記述テキストを保持するために使用されます
- テキストのセマンティクスは、それが見つかるドメインに依存します
3.4. Internet Specific RRs (インターネット固有RR)
3.4.1. A RDATA Format (A RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ADDRESS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- ADDRESS: 32ビットインターネットアドレス。
Aレコードの使用法:
- 複数のインターネットアドレスを持つホストは、複数のAレコードを持ちます
- Aレコードは追加セクション処理を引き起こしません
- マスターファイル内のA行のRDATAセクションは、ドットで区切られた4つの10進数として表現されるインターネットアドレスです
例:
www.example.com. IN A 93.184.216.34
3.4.2. WKS RDATA Format (WKS RDATAフォーマット)
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ADDRESS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| PROTOCOL | |
+--+--+--+--+--+--+--+--+ |
| |
/ <BIT MAP> /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
フィールド:
- ADDRESS: 32ビットインターネットアドレス。
- PROTOCOL: 8ビットIPプロトコル番号。
- BIT MAP: 可変長ビットマップ。ビットマップは8ビットの倍数の長さでなければなりません。
WKS使用法: WKSレコードは、特定のインターネットアドレス上の特定のプロトコルによってサポートされる既知のサービスを記述するために使用されます。
3.5. IN-ADDR.ARPA Domain (IN-ADDR.ARPAドメイン)
IN-ADDR.ARPAドメインは逆引きDNSルックアップ (Reverse DNS Lookup) に使用されます - IPアドレスをドメイン名にマッピングします。
構造:
- ドメインはIPアドレスのオクテットを逆順で編成されます
- 各オクテットがドメイン名のラベルを形成します
例:
IPアドレス: 93.184.216.34
IN-ADDR.ARPA名: 34.216.184.93.in-addr.arpa.
使用法:
- IN-ADDR.ARPAドメイン内のPTRレコードは正規ホスト名を指します
- これにより、アプリケーションはアドレスから名前にマッピングできます
PTRレコードの例:
34.216.184.93.in-addr.arpa. IN PTR www.example.com.
3.6. Defining New Types, Classes, and Special Namespaces (新しいタイプ、クラス、特殊名前空間の定義)
DNSは拡張可能に設計されています。新しいRRタイプとクラスを定義して、新しいアプリケーションとサービスをサポートできます。
ガイドライン:
- 新しいタイプとクラスはIANAに登録すべきです (SHOULD)
- 実装は未知のタイプを適切に処理できるべきです (SHOULD)
- 未知のRRタイプはネームサーバーによって保持され、通過させるべきです (SHOULD)
- RRの一般的な形式により、既存の実装を壊すことなく新しいタイプを追加できます