## page was renamed from DNS/1/RFC/1035/2 ## page was renamed from DNS/基礎知識/RFC/1035/2 ## page was renamed from DNS/RFC/1035/2 ## page was renamed from DNS/RFC1035/2 #pragma section-numbers off == DNS/RFC1035/2 == <> <> = 2. はじめに INTRODUCTION = == 2.1. 概要 Overview == {{{ The goal of domain names is to provide a mechanism for naming resources in such a way that the names are usable in different hosts, networks, protocol families, internets, and administrative organizations. }}} ドメイン名の目標は資源に名前付けを行う仕組みを提供することである。 さまざまなホスト、ネットワーク、プロトコルファミリ、 インターネット、管理組織などにおいて名前が利用できるようにしたい。 {{{ From the user's point of view, domain names are useful as arguments to a local agent, called a resolver, which retrieves information associated with the domain name. Thus a user might ask for the host address or mail information associated with a particular domain name. To enable the user to request a particular type of information, an appropriate query type is passed to the resolver with the domain name. To the user, the domain tree is a single information space; the resolver is responsible for hiding the distribution of data among name servers from the user. }}} 利用者から見るなら、 ドメイン名はリゾルバと呼ばれるローカルエージェントの引数として役立つ。 リゾルバはドメイン名に付随する情報を検索するものである。 利用者はドメイン名に対応したホストアドレスやメール情報を求めるだろう。 利用者がタイプを指定して情報を求められるように、リゾルバへは ドメイン名とともに問合せタイプが渡される。 利用者のとってはメイン木はひとつの情報空間である; リゾルバはネームサーバ間でデータ分散されていることを 利用者には見えないようにする責任がある。 {{{ From the resolver's point of view, the database that makes up the domain space is distributed among various name servers. Different parts of the domain space are stored in different name servers, although a particular data item will be stored redundantly in two or more name servers. The resolver starts with knowledge of at least one name server. When the resolver processes a user query it asks a known name server for the information; in return, the resolver either receives the desired information or a referral to another name server. Using these referrals, resolvers learn the identities and contents of other name servers. Resolvers are responsible for dealing with the distribution of the domain space and dealing with the effects of name server failure by consulting redundant databases in other servers. }}} リゾルバから見ると、 ドメイン空間を成り立たせているデータベースは様々なネームサーバ上に 分散されている。 ドメイン空間の部分部分はそれぞれのネームサーバに配置されているが、 ひとつのデータ項目を見れば、冗長性をもたせるために、 複数のネームサーバに置かれているだろう。 リゾルバは少なくともひとつのネームサーバを知っていて開始される。 リゾルバは問合せを処理する時、周知のネームサーバに情報を求める; リゾルバは返答として求めていた情報か、あるいは他のネームサーバの 参照情報(referral)を受けとる。 リゾルバはこれらの参照情報を使って、他のネームサーバの同定 (名前とアドレス)と内容とを学習する。 リゾルバには分散配置されているドメイン空間を取り扱うことと ネームサーバに障害があった場合に 他のサーバにある冗長なデータベースを調べて、 障害の影響をやわらげることの責任がある。 {{{ Name servers manage two kinds of data. The first kind of data held in sets called zones; each zone is the complete database for a particular 'pruned' subtree of the domain space. This data is called authoritative. A name server periodically checks to make sure that its zones are up to date, and if not, obtains a new copy of updated zones from master files stored locally or in another name server. The second kind of data is cached data which was acquired by a local resolver. This data may be incomplete, but improves the performance of the retrieval process when non-local data is repeatedly accessed. Cached data is eventually discarded by a timeout mechanism. }}} ネームサーバは 2種類のデータを管理する。 第一種のデータはゾーンと呼ばれる集合中にある; 各ゾーンはドメイン空間から「切り取られた」部分木に対する 完全なデータベースである。 このデータは権威あるデータと呼ばれる。 ネームサーバは自分が管理するゾーンが最新であるかを定期的に調べて、 もし最新でなければローカルに持っているマスターファイルか、 もしくは他のネームサーバから最新のゾーンのコピーを入手する。 第二種のデータとはローカルリゾルバによって得たデータをキャッシュしたものである。 このデータは不完全なこともあるが、 ローカルでないデータに繰り返しアクセスする場合に検索プロセスの効率を高める。 キャッシュデータはタイムアウト機構によっていずれ捨てられる。 {{{ This functional structure isolates the problems of user interface, failure recovery, and distribution in the resolvers and isolates the database update and refresh problems in the name servers. }}} この機能構造はユーザインタフェース、障害回復、リゾルバ中の分散 などの問題を分離する。 そして、ネームサーバにおけるデータベース更新とリフレッシュ問題を分離する。 <> == 2.2. よくある構成 Common configurations == {{{ A host can participate in the domain name system in a number of ways, depending on whether the host runs programs that retrieve information from the domain system, name servers that answer queries from other hosts, or various combinations of both functions. The simplest, and perhaps most typical, configuration is shown below: }}} ホストはいくつかのやりかたで DNS に関与できる。 ホストで DNS から検索するプログラムを実行するかどうか、 他のホストからの問合せに返答するネームサーバを走らせるかどうか、 これらの機能を様々に組み合わせて実行するかどうか、 などによりやり方がいろいろある。 最も単純で典型的な構成を示す: {{{ Local Host ローカルホスト | Foreign | +---------+ ユーザ問合せ +----------+ 問合せ | +--------+ | | user queries | |queries | |Foreign | | User |-------------->| |---------|->| Name | | Program | | Resolver | | | Server | | ユーザプ|<--------------| リゾルバ |<--------|--| ネー| | ログラム| user responses| |responses| |ムサーバ| +---------+ ユーザ返答 +----------+返答 | +--------+ | A | cache additions | | references | キャッシュ追加 V | 参照 | +----------+ | | cache | | |キャッシュ| | +----------+ | }}} {{{ User programs interact with the domain name space through resolvers; the format of user queries and user responses is specific to the host and its operating system. User queries will typically be operating system calls, and the resolver and its cache will be part of the host operating system. Less capable hosts may choose to implement the resolver as a subroutine to be linked in with every program that needs its services. Resolvers answer user queries with information they acquire via queries to foreign name servers and the local cache. }}} ユーザプログラムはリゾルバを通してドメイン名スペースに作用する; ユーザ問合せの形式とユーザ返答の形式はホストと OS 依存である。 ユーザ問合せは普通はシステムコールであり、 リゾルバとそのキャッシュは OS の一部である。 リゾルバサービスを必要とするすべてのプログラムに リゾルバをサブルーチンとしてリンクするような実装を選ぶ ホストもあるだろう。 リゾルバは外部ネームサーバーへの問合せで得た情報と ローカルキャッシュを使って、ユーザの問合せに答える。{{{ Note that the resolver may have to make several queries to several different foreign name servers to answer a particular user query, and hence the resolution of a user query may involve several network accesses and an arbitrary amount of time. The queries to foreign name servers and the corresponding responses have a standard format described in this memo, and may be datagrams. }}} リゾルバはユーザ問合せひとつに答えるのに複数の外部ネームサーバに 複数の問合せをすることもあるので、ひとつのユーザ問合せの解決のために 数回のネットワークアクセスとある程度の時間が必要となりうる。 外部ネームサーバへの問合せと対応する返答は標準の形式があり、 このメモで記述されている。そして、データグラムが使われるだろう。{{{ Depending on its capabilities, a name server could be a stand alone program on a dedicated machine or a process or processes on a large timeshared host. A simple configuration might be: }}} 能力次第だが、ネームサーバは専用マシン上の単体プログラムだったり、 大きなタイムシェアリングホスト上のプロセスやプロセス群だったりする。 単純な構成を示す: {{{ Local Host ローカルホスト | Foreign | +---------+ | / /| | +---------+ | +----------+返答 | +--------+ | | | | |responses| |Foreign | | Master | | | Name |---------|->|Resolver| | files |-------------->| Server | | | | | マスター| | | ネーム |<--------|--|リゾルバ| | ファイル|/ | サーバ | queries | +--------+ +---------+ +----------+ 問合せ | }}} {{{ Here a primary name server acquires information about one or more zones by reading master files from its local file system, and answers queries about those zones that arrive from foreign resolvers. }}} ここではプライマリネームサーバはローカルファイルシステムからマスターファ イルを読込むことでゾーンの情報を得る。そして、これらのゾーンに関しての 外部のリゾルバからやってくる問合せに答える。 {{{ The DNS requires that all zones be redundantly supported by more than one name server. Designated secondary servers can acquire zones and check for updates from the primary server using the zone transfer protocol of the DNS. This configuration is shown below: }}} DNS では冗長性をもたせるために、 すべてのゾーンを複数のネームサーバでサービスするよう要求されている。 セカンダリサーバは DNS のゾーン転送プロトコルを使うことにより、 プライマリサーバからゾーンを取得したり、更新があったかを調べたりできる。 このための設定を示す: {{{ Local Host ローカルホスト | Foreign | +---------+ | / /| | +---------+ | +----------+ 返答 | +--------+ | | | | | responses | |Foreign | | Master | | | Name |--------------|->|Resolver| | files |--------->| Server | | | | | マスター| | | ネーム |<-------------|--|リゾルバ| | ファイル|/ | サーバ | queries | +--------+ +---------+ +----------+ 問合せ | A |メンテナンス問合せ | +--------+ | |maintenance queries | |Foreign | | +--------------------|->| Name | | | | Server | +------------------------|--| ネーム | maintenance responses | | サーバ | メンテナンス返答 | +--------+ }}} {{{ In this configuration, the name server periodically establishes a virtual circuit to a foreign name server to acquire a copy of a zone or to check that an existing copy has not changed. The messages sent for these maintenance activities follow the same form as queries and responses, but the message sequences are somewhat different. }}} この構成では ネームサーバーはゾーンのコピーを得るため、あるいは既存のコピーに 変更がないかを調べるために外部のネームサーバに定期的に TCP接続する。 この保守活動のためのメッセージは問合せと返答と同じ形であるが、 メッセージの順序はやや異なっている。 {{{ The information flow in a host that supports all aspects of the domain name system is shown below: }}} DNS のすべての面をサポートするホストでの情報の流れを示す: {{{ Local Host ローカルホスト | Foreign | +---------+ ユーザ問合せ +----------+問合せ | +--------+ | | user queries | |queries | |Foreign | | User |-------------->| |---------|->| Name | | Program | | Resolver | | | Server | | ユーザプ|<--------------| リゾルバ |<--------|--| | | ログラム| user responses| |responses| | | +---------+ ユーザ返答 +----------+返答 | +--------+ | A | cache additions | | references | キャッシュ追加 V | 参照 | +-----------------+ | | Shared database | | | 共有データベース| | +-----------------+ | 更新 A | 参照 | +---------+ refreshes | | references | / /| | V | +---------+ | +----------+ 返答 | +--------+ | | | | | responses | |Foreign | | Master | | | Name |--------------|->|Resolver| | files |--------->| Server | | | | | マスター| | | ネーム |<-------------|--|リゾルバ| | ファイル|/ | サーバ | queries | +--------+ +---------+ +----------+ 問合せ | A |メンテナンス問合せ | +--------+ | |maintenance queries | |Foreign | | +--------------------|->| Name | | | | Server | +------------------------|--| ネーム| maintenance responses | | サーバ| メンテナンス返答 | +--------+ }}} {{{ The shared database holds domain space data for the local name server and resolver. The contents of the shared database will typically be a mixture of authoritative data maintained by the periodic refresh operations of the name server and cached data from previous resolver requests. The structure of the domain data and the necessity for synchronization between name servers and resolvers imply the general characteristics of this database, but the actual format is up to the local implementor. }}} 共有データベースはローカルネームサーバとリゾルバが使う ドメイン空間データを持つ。 共有データベースの中身はネームサーバが周期的な更新動作によって 保守する権威あるデータとリゾルバが問合せで得た(キャッシュ)データ とを合わせたものである。 ドメインデータの構造に加えて、 ネームサーバとリゾルバの間で同期をとる必要があることが このデータベースの一般的な特徴をきめる。 しかし実際の形式はローカルな実装者次第である。 {{{ Information flow can also be tailored so that a group of hosts act together to optimize activities. Sometimes this is done to offload less capable hosts so that they do not have to implement a full resolver. This can be appropriate for PCs or hosts which want to minimize the amount of new network code which is required. This scheme can also allow a group of hosts can share a small number of caches rather than maintaining a large number of separate caches, on the premise that the centralized caches will have a higher hit ratio. In either case, resolvers are replaced with stub resolvers which act as front ends to resolvers located in a recursive server in one or more name servers known to perform that service: }}} ホスト群が共同して活動を最適化できるように情報フローを対応されられる。 これは能力の低いホストがリゾルバ機能をフルに実装しなくてもいいようして、 ホストの負荷を軽減するのに使われることがある。 このことは必要とされる新しいネットワークコード量を少くしたい PC群やホスト群にむいているだろう。 このやり方によって、ホスト群は個別のキャッシュをそれぞれで維持 するのではなく、少数の共用キャッシュを共同で使えるようになる。 ただし、集中キャッシュがより高いヒット率を持つだろうという前提のもとで。 いずれの場合でも、個々のリゾルバは再帰検索サービスが動作していることが 知られているネームサーバ上のリゾルバに対するフロントエンドとして 動作するスタブリゾルバで置き換えられる。 {{{ Local Hosts ローカルホスト | Foreign | +---------+ 返答 | | Stub | responses | | Resolver|<--------------------+ | | スタブ | | | | リゾルバ|----------------+ | | +---------+ recursive | | | queries | | | 再帰問合せ V | | +---------+ recursive +--------------+問合せ | +--------+ | Stub | queries | |queries | |Foreign | | Resolver|---------->| Recursive |---------|->| Name | | スタブ | | Server | | | Server | | リゾルバ|<----------| 再帰 |<--------|--| ネー| +---------+ responses | サーバ |responses| |ムサーバ| 返答 +--------------+返答 | +--------+ |Central cache| | |集中キャッシュ| | +--------------+ | }}} {{{ In any case, note that domain components are always replicated for reliability whenever possible. }}} どの場合も、信頼性のために、ドメイン構成要素は可能なかぎり 複製が作られることに注意せよ。 <> == 2.3. 便法 Conventions == {{{ The domain system has several conventions dealing with low-level, but fundamental, issues. While the implementor is free to violate these conventions WITHIN HIS OWN SYSTEM, he must observe these conventions in ALL behavior observed from other hosts. }}} DNS には低レベルであるが基本的な事項を扱った便法がある。 実装者は自身のシステム内ではこれらの便法に従う必要はないが、 外部のホストから読み取れるすべての振舞いを観察すべきである。 <> 2.3.1. 望ましい名前構文 Preferred name syntax {{{ The DNS specifications attempt to be as general as possible in the rules for constructing domain names. The idea is that the name of any existing object can be expressed as a domain name with minimal changes. }}} DNS の仕様ではドメイン名を組み立てる規則は最大限に一般的であるものとした。 既存のいかなるオブジェクトの名前も最小限の変更でドメイン名と して表せるようにというものだ。 {{{ However, when assigning a domain name for an object, the prudent user will select a name which satisfies both the rules of the domain system and any existing rules for the object, whether these rules are published or implied by existing programs. }}} しかしながら、オブジェクトにドメイン名をつけるときに、 慎重なユーザーなら DNS の規則とオブジェクトについての既存の規則との 両方を満すようにするだろう。 規則が公表されたものだろうが、既存のプログラム中に隠れているものだろうが。 {{{ For example, when naming a mail domain, the user should satisfy both the rules of this memo and those in RFC-822. When creating a new host name, the old rules for HOSTS.TXT should be followed. This avoids problems when old software is converted to use domain names. }}} 例えば、メールドメインの名前なら、 このメモとRFC-822の両方の規則を満たすべきである。 新しいホスト名でも、HOSTS.TXTのための古くからの規則にも従うべきだ。 こうしておけば、ドメイン名を使うように古いソフトウェアを変更するときの トラブルを避けられる。 {{{ The following syntax will result in fewer problems with many applications that use domain names (e.g., mail, TELNET). }}} 以下の構文規則ならはドメイン名を使うアプリケーション (例えば、メール、TELNET)の多くで問題が少くなる。 {{{ ::= | ' ' ::=