インターネットサーバー入門: DNSのしくみ

 DNSによりインターネット上で名前が使えることを説明してきました。ここでは、さらにDNSがどのようにして動作しているかみていきます。

 パソコンからDNSサーバに名前を問い合わせるとIPアドレスが帰ってくることがわかりましたが、ではDNSはどのようにして、その対応を答えているのでしょうか。図2.3-1には携帯電話と同じように、DNSサーバに名前とIPアドレスのすべての対応を持つ方法を示しました。これは、図2.2で説明したと同様、すべての情報をリアルタイムに持つことは難しいです。次の図では、実際にDNSで使われている方法を示しました。少し難しい表現になりますが、階層的な管理をすることでこの問題を解決しています。ではどのように名前をIPアドレスに変換しているのか実際にDNSサーバになったつもりで考えていきましょう。

 まず、あなたのパソコンがDNSサーバに「www.monbu.go.jpのIPアドレスは?」と問い合わせしたとします。するとDNSサーバの内部では次のような処理が続きます。
 初めに名前の最後を見て「.jp」であり、これを世界中の名前の管理をしているDNSサーバに対して「.jp」を管理してるDNSサーバを問い合わせします。ここで「.jp」を管理しているDNSサーバが解ったのでこのサーバに「monbu.go.jp」を管理しているDNSサーバを問い合わせします。そして、最後に「monbu.go.jp」を管理しているDNSサーバに「www.monbu.go.jp」のIPアドレスを問い合わせします。
 意外に思うかもしれませんが、あなたが名前の問い合わせをあなたが使うDNSサーバにしたとき、そのDNSサーバは世界に二十数台しかない大元のDNSサーバに問い合わせに行き、そして日本に数台しかない「.jp」を管理しているDNSサーバに問い合わせを行っています。(実際には、世界中からいちいちアクセスすると大変なので、一度もらった情報、例えば「.jp」を管理しているDNSサーバはどれであるか記憶していて、次からアクセスすることはほとんどありません)

 ここでDNSのしくみやDNSサーバの役割を整理してみます。機能は大きく次の2つになります。
まず、パソコンなどから名前をもらってそのIPアドレスを回答する機能です。この機能はリゾルバ(Resolver)呼んでいて図の右上の機能になります。もう一つの機能は他のDNSサーバのリゾルバからの問い合わせに対して回答する機能です。この場合、個々のDNSサーバはすべて情報を持っていて答えているのではなく、限られた範囲の情報を持っていて回答しています。例えば大元のサーバは単に「.jp」がどのサーバで管理されているか答えるだけであり、そして「.jp」を管理しているサーバは「monbu.go.jp」を管理しているサーバがどれか答えるだけです。
 ここで名前の管理の体系としてドメイン(Domain:意味としては地域とか領域)というものがあります。インターネットは全世界で使用するので、ある程度体系付けられ管理されています。例えば、このwww.monbu.go.jpでは.jpをJPドメインとして日本にある名前であることを示しています。またmonbu.goはmonbu.goドメインとして文部省であることを示しています。ドメインという言葉を使って個々のDNSサーバの管理している範囲を説明するならば、それぞれのドメインサーバはそれが設置されているドメインの一つの層の情報を持つといえます。
 少し話が難しくなりましたが、例えばアメリカから日本の文部省のある部署に手紙を出すことも考えてみましょう。たとえばアメリカからの住所が日本−東京都−港区−文部省−××部署(多分文部省でしたら、細かい住所をかかなくても届くでしょう)。この場合、まずアメリカの郵便局は文部省のある港区を意識しているわけでなく、とにかく日本当てに送るでしょう。次に日本に来た手紙は、東京都宛てに分類され、東京都に配達されます。東京都ではそれを港区の郵便局に配達し、最後に文部省のポストに入れられます。この時点で文部省に配達した郵便局員は文部省のその部署のことはしりませんが、後で文部省の人がその手紙に書かれた部署にもっていくでしょう。このように手紙の場合も間に仲介する人がすべての情報を持っている必要がなく、次にどこに持っていけばいいか知っているだけです。
 同様に、DNSもそれぞれの階層で情報を分散して持つことにより、最終的に目的の名前とIPアドレスの変換をしているといえます。

 DNSのしくみの説明が終わったところで、あらためて名前でホームページをアクセスする場面を考えてみます。まずブラウザからあなたが使うDNSサーバに問い合わせが行きます。DNSサーバはいろいろなサーバに問い合わせして、最後に文部省のDNSサーバに問い合わせして、WebサーバのIPアドレスを取得します。そしてブラウザでは、このIPアドレスをもとにホームページを表示します。
 いままでDNSサーバと呼んでいましたが、インターネット上の名前を扱うことからネームサーバ(Name Server)とも呼ばれています。