検索
DNSは、ホスト名(例えば"ja.wikipedia.org")の入力があるとDNSサーバ と呼ばれるコンピュータを参照し、そのホストのもつ IP アドレス(例えば"130.94.122.197")を検索するシステムである。例えるなら、DNSは氏名から電話番号を自動で調べる電話帳のようなものである。たとえば ウェブブラウザ に Uniform Resource Identifier|URI を入力してネットワークにアクセスする際、ブラウザはURIを解析して、アクセスすべきWebサーバのホスト名を取り出し、後述のリゾルバApplication Programming Interface|APIに渡す。リゾルバAPI(通常はオペレーティングシステム|OS内部での働き)は、Webサーバのホスト名をDNSサーバに問い合わせて帰ってきたIPアドレスにより、ホスト名をIPアドレスに変換してブラウザに返す。ブラウザは、得られたIPアドレスを使用して、Webサーバとの通信を開始する。このようにしてブラウザはインターネットにアクセスする。ホスト名から、そのホストにアクセスするためのIPアドレスを得ることを、(ホスト名の)「解決」 (resolve) と呼び、これを行うためのクライアント側のしくみを「リゾルバ」という。ただし現実の電話帳との違いは、この情報がインターネット上のいくつものコンピュータ(DNSサーバ)に分散して格納されているところにある。
インターネットには莫大な数のコンピュータが接続されており、これらのホスト名と IPアドレスは日々更新されつづけているため、インターネット上のすべてのホスト名を一台のコンピュータで集中管理することは現実的ではなかった。
そのためインターネット上のコンピュータをある単位で区分けして、それぞれのグループがもつデータをグループごとのコンピュータに別々に管理させるようにした。これが DNS の基本的なアイデアである。このグループをドメインと呼ぶ。各グループには英数字とハイフン ( - ) からなるラベル(ドメイン名)がつけられており、異なるドメインの情報は異なるコンピュータに格納される。今でこそ DNS はホスト名とIPアドレスの対応づけに使用されるのがほとんどだが、もともとは電子メールの配送方法やコンピュータの機種名を登録するなどといった用途も考えられていた。ドメイン名は階層的な構造をもっている。たとえば"ja.wikipedia.org" というホスト名は"ja"、 "wikipedia"、 "org"という 3つの階層に区切ることができる。ja.wikipedia.org というホストは"wikipedia.org" ドメインに所属しており、このドメインはさらに "org" ドメインに所属している、といった具合である。ドメイン名は一個の巨大な木構造 (データ構造)|木構造をなしているといっていい。この構造をドメイン名前空間 (Domain Name Space) と呼ぶ。ドメイン名前空間は頂点に "."(root) ノードをもち、そこから .com, .org, .jp などの各トップレベルドメイン (TLD) が分かれている。各ドメインはゾーンと呼ばれる管轄に分けて管理されている。ゾーンはドメイン名前空間上のある一部分に相当し、それぞれのゾーンは独立したDNSコンテンツサーバと呼ばれるコンピュータによって管理されている(ドメイン名の委譲)。DNSコンテンツサーバは、管理しているゾーンのホスト名とIPアドレスの組を記述したデータベースをもっており、クライアントマシン(あるいはDNSキャッシュサーバ)からの要求に応じて、あるホスト名に対応するIPアドレスを返す。DNSクライアントはルートサーバからいくつものDNSサーバをたどっていき、最終的なホスト名のIPアドレスを得る(DNSの再帰検索)。
DNSの再帰検索
具体的な例として、ja.wikipedia.org というホスト名の IPアドレスを検索することを考えると、再帰検索は、トップレベルドメインをルートサーバに問い合わせることからはじまる。ja.wikipedia.org というホスト名は wikipedia.org ドメインに属し、またwikipedia.orgドメインはorgドメインに属するため、クライアントは最初にorgドメインのDNSサーバ(ネームサーバ)のIPアドレスを得なければならない。まず、クライアントは適当なルートサーバをひとつ選ぶ。ここでは A.ROOT-SERVERS.NET (198.41.0.4) としよう。現在 ルートサーバ に登録されている org ドメインのネームサーバは 9つあり、そのうちのひとつはa7.nstld.com (192.5.6.36) である。つぎにクライアントは、このネームサーバに wikipedia.org ドメインのネームサーバの IPアドレスを問い合わせる。するとそのネームサーバのホスト名は dns34.register.com (216.21.226.87) であることがわかる。最後に、このネームサーバにja.wikipedia.orgのIPアドレスを問い合わせる。するとこのサーバは最終的な答130.94.122.197を返す。こうして目的とするホスト名のIPアドレスを検索できる。