ネームサーバ
前項で少し触れましたが、DNSは一か所ですべてのドメイン名とIPアドレスの対応付けを管理しているのではなく、複数の場所で分散管理しています。管理はネームサーバと呼ばれるホストを使用して行います。
ネームサーバはDNSプロトコルに基づいて、クライアントからの質問に回答します。例えば、「codezine.jp」のIPアドレスについて質問されれば、IPアドレスを回答します。最も基本的な質問はIPアドレスですが、その他にもホスト情報、メールボックスあるいはメールリスト情報、メールの経路制御情報などがあります。
ネームサーバは自分が管理する範囲の情報しか知りませんので、該当する情報がない場合は、他のネームサーバに問い合わせ、クライアントに回答します。
なお、ネームサーバが管理する範囲のことを「ゾーン」と呼びます。この仕組みにより、DNSは一つの場所に情報を保存せず、個々のネームサーバに情報を分散して管理できます。この方式のメリットは、柔軟にドメインを管理できることです。個々のネームサーバは独立して管理していますので、ドメインの追加/削除が容易に行えます。
ネームサーバは障害に備えて、複数用意できます。メインとなるネームサーバをプライマリサーバ、予備のネームサーバをセカンダリサーバと呼びます。
また、既存のネームサーバとして、jpを管理するネームサーバ、comを管理するネームサーバなどがあります。これらのネームサーバがあるお陰でドメイン名を基にサーバーに接続することができます。例えば、shoeisha.co.jpに接続したい場合、「.jpを管理しているネームサーバ」「.co.jpを管理しているネームサーバ」と、順次問い合わせることによりIPアドレスを取得することができます。
ここで、これらTLDのネームサーバのIPアドレスをどうやって知るのかという疑問が湧くと思います。その答えは、「ルートネームサーバに問い合わせする」です。TLDのIPアドレスはルートネームサーバが知っています。
リゾルバ
クライアントからの要求に従い、ネームサーバに問い合わせをするプログラムをリゾルバと呼びます。リゾルバは、少なくとも一つのネームサーバにアクセスして、問い合わせに対する回答を得るか、複数のネームサーバに問い合わしをして回答を得ます。リゾルバがあることにより、アプリケーションはDNSの細部に煩わされることなくIPアドレスなどの情報を取得できます。
これでDNSの主要な概念についての解説が終わりましたので、具体的な説明へと話を進めます。
