私たちがインターネットに接続されたコンピュータにアクセスするときは,分かりやすい名前を使います.たとえば,この「はいぱーワークブック」のトップページの URL は
http://hwb.ecc.u-tokyo.ac.jp/
で,hwb.ecc.u-tokyo.ac.jp の部分がはいぱーワークブックを保存しているコンピュータの場所を表しています.この部分をドメイン名と言います.しかし 16.6.2 IP アドレス で説明したように,実際にコンピュータが通信するときに使うのは IP アドレスです.そのためドメイン名から IP アドレスを調べるための手段が必要になります.これを実現するのが DNS (Domain Name System) です.
DNS リゾルバと DNS サーバ
DNS の文脈ではドメイン名に対応する IP アドレスを調べることを名前解決と言います.名前解決に登場するのは DNS リゾルバ,キャッシュ DNS サーバ,権威 DNS サーバの 3 つです.
DNS リゾルバは,名前解決を行うためのプログラムです.たとえばブラウザがウェブページを取得する場合,ブラウザが DNS リゾルバに「このドメイン名に対応する IP アドレスを調べてください」とお願いをし,DNS リゾルバが IP アドレスを調べ,結果をブラウザに渡します.そのために DNS リゾルバはキャッシュ DNS サーバと通信をし,下で説明する方法に従って要求されたドメインの IP アドレスを取得します.
ドメイン名の階層構造
インターネットの本当に初期の頃はサーバーが数えるほどしかなかったので,DNS サーバは全てのドメインと IP アドレスの対応表を保持できました.しかし現在ではインターネットが極めて巨大になったため,1 台の DNS サーバが世界中のドメイン名と IP アドレスの対応を把握することができません.そこで登場するのがドメインの階層構造です.ドメイン名はピリオド . で区切られた階層構造をしています.たとえば u-tokyo.ac.jp というドメイン名は
- まず jp ドメインがあり
- jp ドメインの下に ac ドメインがあり
- ac ドメインの下に u-tokyo ドメインがある
ということを意味しています.”jp” のように一番上の階層にあるドメインをトップレベルドメインと言い,階層を下るにつれ第 2 レベルドメイン,第 3 レベルドメインなどと言います.
そして各ドメインに対応して,1 つ下の階層に属する全てのドメインと IP アドレスとの対応を記憶する DNS サーバがあります.これを権威 DNS サーバといいます.権威 DNS サーバは,一つ下の階層の権威 DNS サーバの IP アドレスも持っています.したがって上位ドメインの権威 DNS サーバから順番に下のレベルの権威 DNS サーバの IP アドレスを調べていけば,最終的に世界中のどんなドメインに対しても IP アドレスを調べることができるわけです.
たとえば u-toyko.ac.jp に対応する IP アドレスを知る場合は次のようにします.
- ドメイン名管理の頂点に立つのは, .jp や .com などのトップレベルドメインを取りまとめるルート DNS サーバと呼ばれるサーバです.まず DNS キャッシュサーバはルート DNS サーバに対して jp ドメインの権威 DNS サーバの IP アドレスを聞きます.
- jp ドメインの権威 DNS サーバの IP アドレスが分かったので,ac.jp ドメインの権威 DNS サーバの IP アドレスを問い合わせることができます.
- 最後に ac.jp ドメインの権威 DNS サーバに u-tokyo.ac.jp ドメインの権威 DNS サーバの IP アドレスを聞きます.
このようにして,最終的に通信をしようとするサーバの IP アドレスが分かります.ドメイン名に階層構造を持たせ,権威 DNS サーバが管理すべきドメイン名の範囲を適当な幅に収めることによって,インターネットを用いた通信が滞りなくできるようになっているのです.
ちなみに DNS による名前解決をするにはキャッシュ DNS サーバがルート DNS サーバの IP アドレスを知らなければいけませんが,ルート DNS サーバの IP アドレスはキャッシュ DNS サーバのソフトウェアに最初から含まれています.ルート DNS サーバは世界に 13 台しかなく IP アドレスはほとんど固定されているので,プログラムに含めて配布することができます.
DNS キャッシュ
さてキャッシュ DNS サーバの働きで名前解決ができることが分かりましたが,DNS リゾルバからのリクエストがある度に一々 IP アドレスを調べるのは非効率です.そのため DNS キャッシュサーバは問い合わせのあったドメイン名に対応する IP アドレスを一定期間保管します.たとえば,はいぱーワークブックを見ている人は hwb.ecc.u-tokyo.ac.jp というドメインに属するページを少なくとも 2, 3 ページは続けてアクセスするわけです.そこで DNS キャッシュサーバが hwb.ecc.u-tokyo.ac.jp の IP アドレスを記憶しておけば,権威 DNS サーバに一々問い合わせなくても迅速に DNS リゾルバに対して返事ができます.
通常 DNS キャッシュサーバは大勢の人で共有して使いますので,ある人がアクセスしたドメインに別の人がアクセスする場合にもキャッシュは有効に働きます.このようにキャッシュの仕組みを使うことで通信にかかる時間が短縮され,同時にインターネットの通信容量を圧迫することを防いでいます.
ドメイン名の管理
ドメイン名はインターネット上の場所を指し示すものですから公共性を持っています.したがって上位の階層のドメインについては,誰がどのドメイン名を使っているのかきちんと管理しなければいけません.実際にはドメイン名の管理は
- 誰がどのドメインを使っているのかを管理するレジストリという機関
- ドメイン名の登録申請を受け付け,レジストリへの登録を行うレジストラという機関
の 2 種類の機関が行っています (同じ機関が両方の役割を果たすこともあります).もし皆さんがドメイン名を取ろうと思ったら,そのときは欲しいドメイン名を管理するレジストラに申請を出すことになります.
日本の jp ドメインやその配下にある co.jp, or.jp といったドメイン名の場合,レジストリは 株式会社日本レジストリサービス (JPRS) で,JPRS の 指定事業者一覧 に登録されている企業がレジストラとなっています.また .com や .net といったドメインについては,世界のインターネット資源の割り当てをする非営利団体 ICANN と契約した複数のレジストリが共同で管理を行っています.JPRS の指定事業者の中には,これらのドメイン名登録の申請を受け付けているところもたくさんあります.
ドメイン名の種類
DNS における名前解決で重要になるのはドメイン名の階層構造だけであって,各階層がどんな名前であるかはコンピュータにとってはあまり重要ではありません.しかしドメイン名は人間が見るものですから,見ただけである程度分かるように規則的な名前が付けられています.
国コードトップレベルドメイン (ccTLD: country code TLD)
ccTLD は国や地域によって割り当てられたトップレベルドメインです.たとえば日本には jp ドメインが,イギリスには uk ドメインが割り当てられています.ただし,ccTLD の下に属するドメイン名が必ずしも ccTLD の表す国と関係があるわけではありません.たとえば jp ドメインの登録は日本国内の個人や法人に限定されますが,tv ドメインは全世界の誰もが取得することができます.
分野別トップレベルドメイン (gTLD: generic TLD)
ccTLD でないトップレベルドメイン (.com や .net など) は,大体が gTLD と呼ばれるものです.gTLD は登録対象を限定した gov (米国政府機関専用) などと,世界中の誰もが登録できる com, net, org などに分かれます.
JP ドメイン名の分類
JP ドメイン名の場合,その下位のドメインがさらに
- 属性型 JP ドメイン名
- 地域型 JP ドメイン名
- 都道府県型 JP ドメイン名
- 汎用 JP ドメイン名
に 分類されており,それぞれのドメイン名に登録の条件が定められています.たとえば ac.jp というドメイン名は大学などの高等教育機関・研究機関のみが取得できます.したがってドメイン名を見ればある程度所持者の性格が分かります.JP ドメイン名のルールについての詳細は,JPRS の JP ドメイン名の種類 というページに書かれています.