DNS
Domain Name Systemはインターネットを使った階層的な分散型データベースシステムです。1983年に情報科学研究所 (ISI) のポール・モカペトリスとジョン・ポステルにより開発されました。現在ではおもにインターネット上のホスト名や、電子メールに使われるドメイン名とIPアドレスとの対応づけを管理するために使用されています。インターネットに接続されているすべてのコンピュータは、固有のIPアドレスを持っています。インターネット上のどんなコンピュータにアクセスする際にも最終的にはそのコンピュータのIPアドレスを知る必要があります。しかし、IPアドレスは、3桁までの4つの数値の組み合わせ(IPv4の場合)からなっており、最大12桁の数字の羅列となり覚えにくいです。このため、IPアドレスを人間が覚えやすい名前で扱うことができるような機構が考案されました。
DNS - 検索
DNSは、ホスト名の入力があるとDNSサーバ と呼ばれるコンピュータを参照し、そのホストのもつ IP アドレスを検索するシステムです。例えるなら、DNSは氏名から電話番号を自動で調べる電話帳のようなものです。たとえば ウェブブラウザ に URI を入力してネットワークにアクセスする際、ブラウザはURIを解析して、アクセスすべきWebサーバのホスト名を取り出し、後述のリゾルバAPIに渡します。リゾルバAPI(通常はOS内部での働き)は、Webサーバのホスト名をDNSサーバに問い合わせて帰ってきたIPアドレスにより、ホスト名をIPアドレスに変換してブラウザに返します。ブラウザは、得られたIPアドレスを使用して、Webサーバとの通信を開始します。このようにしてブラウザはインターネットにアクセスします。ホスト名から、そのホストにアクセスするためのIPアドレスを得ることを、(ホスト名の)「解決」 (resolve) と呼び、これを行うためのクライアント側のしくみを「リゾルバ」(resolver)という。 ただし現実の電話帳との違いは、この情報がインターネット上のいくつものコンピュータ(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の役割
DNSはふだんほとんどの人が意識しない透過的なシステムですが、その役割は非常に重要です。あるドメインを管理しているDNSサーバがダウンすると、そのドメイン内のホストをさす URL やメールアドレスが使えなくなるため、たとえネットワークがつながっていてもそのドメインには事実上ほとんどアクセスできなくなります。またDNS偽装が行われると、通常のインターネットを盗聴するよりもはるかに簡単に情報を盗聴・偽装することができます。そのため、たいていの重要な DNSサーバは二重化されていることが多いです。