DNSの根本を理解するポイントは「資源レコードを基本とする対応表を持つ」ということと,「ツリー構造で表されるDNSサーバー同士が連携する」ということの2点だ。
Part2では,この二つのポイントを中心に,DNSの根本のしくみを確認していこう。
構成要素はリゾルバとDNSサーバー
DNSはインターネットに多数のサーバー・マシンが分散して,ドメイン名とIPアドレスなどの対応関係を管理する巨大システムである。ただ,数が多いだけで,その構成要素は二つしかない。それは,パソコン上で動く「リゾルバ」と,インターネット上に公開されている「DNSサーバー」である。どちらも,その実態はコンピュータ上で動くソフトウエアだ*1。
話を単純にするために,リゾルバが動いているパソコン1台と,DNSサーバー1台があるケースを想定しよう。こうした環境で,パソコンのユーザーがWebブラウザのアドレス欄に「http://www.example.jp/」などと打ち込むと,Webブラウザはドメイン名に対応するIPアドレスの調査をリゾルバに依頼する。
そうすると,リゾルバは「ドメイン名がwww.example.jpのコンピュータに割り当てられているIPアドレスを教えてください」といったような検索要求をDNSサーバーへ送る(図2-1(1))。
|
|
図2-1●DNSサーバーからさまざまな情報を引き出す DNSサーバーは,資源レコードという単位でドメイン名に対応するいろいろなデータを持っており,クライアントのリゾルバから要求された情報を返す。 [画像のクリックで拡大表示] |
情報はDNSサーバーが持つ
一方のDNSサーバーは,ドメイン名とIPアドレスなどのデータを対応づけた対応表(ゾーン情報)を持っている。この対応表を構成する1行は「資源レコード」と呼ばれる。
資源レコードは,ドメイン名に何らかのデータを対応づけた情報で,データの種類によって「タイプ」が決まっている。IPアドレスが書かれているタイプは「A」(AはAddressの意味)である。一般にドメイン名とIPアドレスを対応づけた1行は「Aレコード」と呼ばれる。このほか,データ部分にDNSサーバー名を記したNSレコードや,メール・サーバー名を記したMXレコードなどもある。つまりDNSサーバーには,ドメイン名に対してIPアドレス以外の情報も登録できる。
このようなDNSサーバーが,リゾルバから検索要求を受け取ると,ゾーン情報を検索し,対応するレコード(図2-1ではAレコード)を探し出す(図2-1(2))。そして,その検索結果をリゾルバに返信する((3))。こうした一連の処理は,「名前解決」と呼ばれる。
ちなみに,リゾルバがAレコード以外のタイプを指定して検索要求をDNSサーバーへ送ると,DNSサーバーはそのタイプと一致する情報を探し出す。例えば,「ドメイン名がexample.jpに対応するメール・サーバー名(MXレコード)を教えて下さい」というような検索要求を受け取ったら,自身のゾーン情報を検索して「example.jpに対応するMXレコードはmail.example.jpです」と返答する(図2-1参照)。
多数のDNSサーバーが連携
実際のインターネットでは,多数のDNSサーバーが連携するようになっている。それは,それぞれのドメイン名ごとにDNSサーバーを設け,階層をなしている。例えば,example.co.jpドメインを管理するDNSサーバーは,www.example.co.jpやmail.example. co.jpといったドメイン名とIPアドレスの対応関係だけを管理する(図2-2)。
|
|
図2-2●DNS全体は複数のサーバーからなるツリー構造になっている DNSの全体像は,ルート・サーバーを頂点にしたツリー構造になっている。こうして,世界規模の分散処理を実現している。 [画像のクリックで拡大表示] |
こうすれば,個々のDNSサーバーは自分が管理する範囲(ゾーン)が明確に決まる。コンピュータにIPアドレスを割り当て直したためにドメイン名とIPアドレスの対応関係(Aレコード)が変わったりしても,その情報を変更する必要があるのは,そのAレコードを管理しているDNSサーバーだけで済む。
一方,その上位のco.jpドメインを管理するDNSサーバーには,配下のexample.co.jpやnikkeibp.co.jpのようなドメイン名を管理しているDNSサーバーのありかが登録されている。
さらに,その上位にはjpドメインを管理するDNSサーバーがある。そして最上位に位置するのが,jpやcom,netなどのドメインを管理するDNSサーバーのありかを登録しているルートDNSサーバーである。