Domain Name System
出典: フリー百科事典『ウィキペディア(Wikipedia)』
アプリケーション層 |
---|
DNS, ENRP, FTP, HTTP IMAP, IRC, NNTP, POP3 SIP, rlogin, RTP, SMTP SNMP, SSH, SSL, TELNET CMIP |
トランスポート層 |
DCCP, IL, RSVP, RUDP SCTP, TCP, UDP |
ネットワーク層 |
ARP, BGP, IP(IPv4,IPv6) ICMP, IGMP, IGP, RARP |
データリンク層 |
ATM, DTM, FDDI, PPP SLIP, SMDS, イーサネット Wi-Fi, トークンリング フレームリレー |
Domain Name System (DNS) はインターネットを使った階層的な分散型データベースシステムである。1983年に情報科学研究所 (ISI) のポール・モカペトリスとジョン・ポステルにより開発された。
現在ではおもにインターネット上のホスト名や、電子メールに使われるドメイン名とIPアドレスとの対応づけを管理するために使用されている。
インターネットに接続されているすべてのコンピュータは、固有のIPアドレスを持っている。たとえば、ウィキペディア日本語版のwebサーバの持つIPアドレスは2007年4月現在では "211.115.107.162" である。インターネット上のどんなコンピュータにアクセスする際にも最終的にはそのコンピュータの IPアドレスを知る必要がある。しかし、IPアドレスは、3桁までの4つの数値の組み合わせ(IPv4の場合)からなっており、最大12桁の数字の羅列となり覚えにくい。このため、IPアドレスを人間が覚えやすい名前で扱うことができるような機構が考案された。
目次 |
[編集] 検索
DNSは、ホスト名(例えば"ja.wikipedia.org")の入力があるとDNSサーバ と呼ばれるコンピュータを参照し、そのホストのもつ IP アドレス(例えば"130.94.122.197")に接続するシステムである。例えるなら、DNSは氏名から電話番号を自動で調べる電話帳のようなものである。
たとえば ウェブブラウザ に URI を入力してネットワークにアクセスする際、ブラウザはURIを解析して、アクセスすべきWebサーバのホスト名を取り出し、後述のリゾルバ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アドレスを検索できる。
[編集] 役割
DNSはふだんほとんどの人が意識しない透過的なシステムだが、その役割は非常に重要である。あるドメインを管理しているDNSサーバがダウンすると、そのドメイン内のホストをさす URL やメールアドレス が使えなくなるため、たとえネットワークがつながっていてもそのドメインには事実上ほとんどアクセスできなくなる。またDNS偽装が行われると、通常のインターネットを盗聴するよりもはるかに簡単に情報を盗聴・偽装することができる。そのため、たいていの重要な DNSサーバは二重化されていることが多い。
[編集] 関連語句
- Dynamic Domain Name System(ダイナミックDNS、DDNS)
- TCP/IP
- トップレベルドメイン (TLD)
- リゾルバ
- 国際化ドメイン名
- ゾーン
- Glue Record
- 正引き
- 逆引き
- BIND
- djbdns
- FQDN
- DNSラウンドロビン
- DNS偽装
- MXレコード
- 誕生日攻撃
- DNS-Pinning
- レジストリ
- レジストラ