永尾 幸夫 NTTデータ関西テクシス ソリューションマーケティンググループ テクニカルサポート担当

DNSサーバーが名前の問い合わせを代行する

 写真3で確認したDNSサーバーは,自分のパソコンが通信相手ホストの名前を問い合わせるDNSサーバーである。では,このDNSサーバーは,どのようにしてあて先に指定したホスト名から,その名前を管理するDNSサーバーを見つけ,最終的にIPアドレスを取得するのであろうか。

 例えば,DNSクライアントからDNSサーバーへ「www.sample.co.jp」という名前のホストのIPアドレスを取得したいという要求があった場合を考えよう。問い合わせを受けたDNSサーバーは,まずはその名前が,自分が管理するドメイン上の名前かどうかを判断する。管理する名前であれば,自分が持っている情報を基にDNSクライアントに回答する。一方,自分が管理していないドメインの名前であったときは,ルート・ドメインを管理するDNSサーバーに対して,「www.sample.co.jp」という名前を問い合わせる。なお,各DNSサーバーはルート・ドメインを管理するDNSサーバーの情報をあらかじめ持っている。

図3●www.sample.co.jpをDNSサーバーに問い合わせ,IPアドレスが返答されるまでの流れ
 問い合わせを受けたルート・ドメインのDNSサーバーは,名前の一番右側を見て,自分の持っている,jpドメインを管理するDNSサーバーのIPアドレスを返答し,ここに問い合わせるように指示する(図3[拡大表示])。そのIPアドレスを基に次のDNSサーバーに問い合わせを行うと,さらに下のドメイン(co)を管理するDNSサーバーのIPアドレスが返され,最後にsample.co.jpを管理するDNSサーバーからwww.sample.co.jpのIPアドレスを取得する。このようにして,DNSサーバーは問い合わせられた名前の右から,ドメイン単位でDNSクライアントを代行して名前を問い合わせ続け,最終的にホストのIPアドレスを取得して,DNSクライアントに回答するのである。つまり,DNSサーバーはDNSクライアントからの問い合わせに答えるサーバーであると同時に,他のDNSサーバーへ問い合わせるDNSクライアントの役目を持っている。

 もちろん,DNSクライアントから問い合わせを受けるたびに毎回このような動作を行っていると,上位のDNSサーバーへの負担が大きくなってしまう。特にルート・ドメインを管理するサーバーには常に問い合わせが殺到し,それが原因で障害が発生しないとも限らない。そこで,上位のDNSサーバーへ問い合わせが殺到しないように各DNSサーバーは,以前に問い合わせた名前の情報を,ある程度の期間ローカルに格納している。これを「キャッシュ機能」という。キャッシュ機能を備えることでDNSクライアントからの問い合わせへの回答を早め,かつ,上位のDNSサーバーの負荷を減らすことができる。情報が格納される期間は,それぞれのドメインを管理するDNSサーバーによって決められている。