Lesson3では,インターネットでDNSが動くしくみを見ていこう。インターネットでは複数のDNSサーバーが連係し,ドメイン名とIPアドレスを階層的に管理している。
右の文字列ほど上位の階層を示す
ドメイン名がドット(.)で区切られた複数の文字列でできていることは知っているだろう。この文字列は,それぞれが管理する階層を示していて,右にあるほど上位の階層を意味する。DNSサーバーはこの階層ごとに設置され,「ルート・サーバー」というDNSサーバーを頂点に,ツリー状に関連付けられている。そして,それぞれがすぐ下の階層のDNSサーバーの名前とIPアドレスを管理している。
最初のDNSサーバーが聞き回る
www.aaa.jpというWebサーバーにアクセスするとしよう。このWebサーバーはルート・サーバーの下のjpドメインの下のaaa.jpドメインの下にある(図3の下部を参照)。
![]() |
図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)’)。