Lesson3では,インターネットでDNSが動くしくみを見ていこう。インターネットでは複数のDNSサーバーが連係し,ドメイン名とIPアドレスを階層的に管理している。

右の文字列ほど上位の階層を示す

 ドメイン名がドット(.)で区切られた複数の文字列でできていることは知っているだろう。この文字列は,それぞれが管理する階層を示していて,右にあるほど上位の階層を意味する。DNSサーバーはこの階層ごとに設置され,「ルート・サーバー」というDNSサーバーを頂点に,ツリー状に関連付けられている。そして,それぞれがすぐ下の階層のDNSサーバーの名前とIPアドレスを管理している。

最初のDNSサーバーが聞き回る

 www.aaa.jpというWebサーバーにアクセスするとしよう。このWebサーバーはルート・サーバーの下のjpドメインの下のaaa.jpドメインの下にある(図3の下部を参照)。

図3●インターネットではいくつものDNSサーバーが連係している
図3●インターネットではいくつものDNSサーバーが連係している
インターネットでは階層的にIPアドレスを管理している。問い合わせたDNSサーバーがIPアドレスを知らないときは,上位のDNSサーバーから順に聞く。

 Webブラウザにwww.aaa.jpと入力すると,まずWebブラウザのリゾルバが最寄りのDNSサーバーに問い合わせメッセージを送る((1),図中ではまる数字,以下同)。このDNSサーバーは「ローカル・サーバー」などと呼ばれ,プロバイダや企業のシステム部が用意する。

 一般にローカル・サーバーのキャッシュには過去に調べたドメイン名の情報が残っており,リゾルバから問い合わせメッセージを受け取ると,まずはキャッシュに情報がないか探す。情報があればすぐに答えるが,なければ別のDNSサーバーに問い合わせることになる。

 このとき,実際に問い合わせるのはローカル・サーバーのリゾルバだ。実はWebブラウザだけでなく,ローカル・サーバーにもリゾルバがある。ただ,Webブラウザのリゾルバとは役目が少し違う。

 WebブラウザのリゾルバはIPアドレスを調べるように命じられると,ローカル・サーバーに問い合わせ,あとは答えを待つだけだ。これに対し,ローカル・サーバーのリゾルバは答えが見つかるまで問い合わせを繰り返す

 具体的にはこうだ。ローカル・サーバーからの指令を受けたリゾルバは,まず最上位のルート・サーバーに問い合わせメッセージを送る((2))。ただ,ルート・サーバーが持っているのは,すぐ下のjpドメインを管理するDNSサーバーの情報だけ。そのため,ルート・サーバーからはjpドメインを管理するDNSサーバーの名前とIPアドレスが返ってくる。

 これを受けてリゾルバがjpドメインを管理するDNSサーバーに問い合わせメッセージを出すと,今度はaaa.jpドメインを管理するDNSサーバーの名前とIPアドレスが返ってくる((3))。そこで,aaa.jpドメインを管理するDNSサーバーに問い合わせる。すると,このDNSサーバーはwww.aaa.jpを管理しているので,自分のゾーン情報から該当するIPアドレスを返してくれる((4),(5))。

履歴から問い合わせ先を推測

 以上が基本的な流れだ。ただ,実際はローカル・サーバーのキャッシュに似たようなドメイン名の情報があれば,そこから問い合わせ先のDNSサーバーを推測している。

 例えば,ローカル・サーバーが「news.aaa.jp」というドメイン名の問い合わせを受けたとする((1)’)。ローカル・サーバーがキャッシュを調べると,www.aaa.jpというWebサーバーの情報が見つかった。すると,ローカル・サーバーは「www.aaa.jpを管理しているaaa.jpならnews.aaa.jpのIPアドレスもわかるだろう」と推測し,aaa.jpに問い合わせて答えを得る((2)’,(3)’)。