TCP/IPとインターネットの仕組みに戻る

ドメインネームシステム(Domain Name System)

目次

ドメインネームシステム(DNS)とは

人間にとってIPアドレスは扱いにくい インターネットに接続されたすべてのマシンには IP アドレスが つけられています。IPアドレスは 210.160.116.130 のような 数字が並んだもので表されますが、人間がこれをそのまま使うのは 不便です。人はこのような数字の列を覚えるのは一般に苦手で、 意味のある名前を使う方が便利です。それで、従来からホスト名 を使ってきました。たとえば/etc/hostsに
hibiki	210.160.116.130
のように記述して、telnet 210.160.116.130とやる代わりに telnet hibikiとできるようにしたのです。
世界中のコンピュータも名前で指定したい でも、この方法ではインターネットに接続されたすべてのマシンに 名前をつけることができません。世界中のインターネットに 接続されたマシンの IP アドレスを /etc/hosts に書くことは できなからです。 この問題を解決するのがドメインネームシステム(DNS)なのです。

たとえば、ドメインネームサーバに hibiki.kitakyu-techno-ctr.co.jp というマシンのIPアドレスを尋ねると、210.160.116.130 であることを 教えてくれます。みなさんのパソコンからインターネットにアクセスし WWWを使う場合にも、www.yahoo.co.jp のような名前を IP アドレスに 変換するのにDNS を使っているのです。 DNS はインターネットを使うには不可欠なものなのです。

ホスト名だけではない DNSが扱う情報は、ホスト名からIPアドレスに変換するためのものだけ ではありません。ホスト名からIPアドレスへの変換には A というタイプのレコードが用いられますが、 このほかにも、IPアドレスからホスト名に変換する時に用いる PTRレコード、 メールの交換に用いる MX レコードなどの情報も持っています。 これらの「名前」を各種の情報に変換する機能を提供するのがDNSなのです。

ドメインネームのつけ方

ドメインネームには階層がある

上でホストの名前として hibiki.kitakyu-techno-ctr.co.jp という例を挙げました。この名前の jp の部分は日本のホストである (正確には日本の JPNIC が管理しているアドレスである)ことを意味しています。 その前の co の部分は会社組織の中のホストであることを意味します。 そして kitakyu-techno-ctr という部分は会社の名前を表し, hibikiはその会社内のホスト名を表しています。 つまり、日本(jp)の会社組織(co)の北九州テクノセンター(kitakyu-techno-ctr)の hibiki というマシンを指定するのにこの名前を用いるのです。 ドメインネームはこのように階層構造になっています。

国ごとにトップレベルドメインが与えられている 国ごとに次のようにトップレベルドメインが与えられています。 アメリカだけは複数のドメインを持っています。
jp日本
tw台湾
deドイツ
ukイギリス
frフランス
auオーストラリア
comアメリカの企業
eduアメリカの教育機関
govアメリカの政府関係者
netアメリカのネットワーク運用組織
日本での第2レベルのドメイン 日本では jp という名前につける第二レベルのドメインを 以下のように決めています。
ac教育研究機関
co企業
adネットワーク管理者
go政府機関
neネットワークサービス業者
地域名(kitakyushuなど)地域型ドメインに用いられる

このドメインの co.jp や ac.jp などの前に会社名や学校名などを表す 名前をつけることができますが、名前が重複しないようにするために、 JPNICという機関がこのレベルのドメイン名を割り当てています。

ドメインネームシステム(DNS)の仕組み

情報を扱うネームサーバ インターネット上のホスト名やドメイン名の情報は、 ネームサーバに保存されています。例えば kitakyu-techno-ctr.co.jp ドメインの情報は、このドメインのネームサーバである 210.160.116.130 のhibikiというマシンで管理されています。
DNSは分散データベース 別のドメインの情報は他のネームサーバが持っています。 このようにドメインごとに別のマシンで管理するのが一般的です。 例えば、kyitakyu-techno-ctr.co.jp ドメインは 210.160.116.130(hibiki) co.jpドメインは 150.100.2.3(ns-jp.sinet.ad.jp)で管理しています。 また九州工業大学のドメイン kyutech.ac.jp は 131.206.2.10 (mutsuki.kyutech.ac.jp)で管理しています。 このようにDNSインターネット上のたくさんのマシンにドメインの情報が 分散して蓄えられた分散データベースなのです。このため、 各ドメインの管理者はそのドメインの下の名前を自由に作成削除することが でき、管理が非常に楽になります。集中管理しているなら、 情報を変更するためには、集中管理しているところに申請や報告が 必要になるでしょう。
リゾルバ 情報を提供するネームサーバに問い合わせをするクライアントを リゾルバと言います。ホスト名からIPアドレスへの変換などを必要 とする必要なアプリケーションには、このリゾルバの機能が組み込まれています。 一般にリゾルバとはライブラリとして提供され、 アプリケーションにリンクされます。
変換時の動作 では、DNSはどのような手順で名前から各種の情報への変換を行うのでしょうか。 まず、リゾルバはそのマシンで設定されているDNSのサーバ (Windowsならネットワークの設定で、UNIXなら/etc/resolv.confで設定されたホスト) に変換の要求を出します。

ネームサーバは自分が管理しているドメインの情報であったり、 以前に調べた情報をキャッシュしていれば、その情報に基づいて回答します。 もし、それらの情報を用いて回答できなければ、リゾルバからの要求を受けた ネームサーバはこの情報を探して、他のネームサーバに要求を転送して問題を 解決しようとします。

ルートネームサーバ 要求を受けたネームサーバがその変換をまったく解決できない場合、 ルートネームサーバから 情報をたどって行くことになります。 ルートネームサーバとは、ルートドメイン(jp,com,eduなど)を管理するサーバです。 このルートネームサーバは、変換しようとしている「名前」の情報を知っていれば 答えますし、知らなければその名前について知っているDNSサーバを紹介します。 紹介されたサーバも同じことを繰り返し、最終的にその「名前」に関する 情報を知っているサーバからリゾルバは答えを得るのです。
ルートネームサーバのリスト
www.kitakyu-techno-ctr.co.jp というホスト名から IPアドレスに変換する場合の 例をあげます。まず、リゾルバから要求を受けたネームサーバにキャッシュした 情報はなく、手がかりがまったくないので、ルートサーバにこれをたずねます。 すると、ルートサーバがキャッシュしてなければ、 jp ドメインのネームサーバを紹介します。それ以降、紹介されるサーバを 次々にたどっていけば答えが得ることができます。 最悪の場合、jp ドメインのサーバは co.jp ドメインのサーバを紹介し、 co.jp ドメインのサーバは kitakyu-techno-ctr.co.jp ドメインのサーバを紹介し、 kitakyu-techno-ctr.co.jpドメインのサーバが変換を行います。

しかし、ネームサーバは過去に問い合わせた情報をキャッシュしているので、 このような最悪のケースになることは滅多にないと思われます。 私たちが用いるネームサーバには、jpドメインやco.jpドメインのサーバの情報は キャッシュされていることが多いので、上の例のような問い合わせをした場合、 ルートサーバ,jpドメインのサーバ,co.jpドメインのサーバへの問い合わせは 行わないことが多いでしょう。


「TCP/IP とインターネットの仕組み」へ戻る