
今回のテーマは、「DNSがドメインを管理する仕組み」だ。
DNSはインターネットを支える基盤技術の1つで、DNSが無ければ現在のインターネット通信は全くと言っていいほど機能しなくなる。
本記事では、そんなDNSの役割と仕組み、それを理解するために必要な知識を順々に紹介していこうと思う。
IPアドレスとホスト名
まずは、IPアドレスとホスト名の役割と違いについて解説する。
既知の方は読み飛ばしてもらって構わない。
IPアドレスとは?
IPアドレスとは、インターネットに接続されているコンピューター固有の番号である。
IPv4という規格では、32ビットの2進数で表され、それを8ビットずつに分けて10進数に変換し、4つの10進数の組で表されることが多い。(例:192.168.10.123)
IPアドレスの用途は、主に「インターネット通信の宛先指定」である。
広大なインターネットの世界で任意の相手と間違いなく通信するために、コンピューターは相手のIPアドレスを指定して通信を試みるのである。
なお、以下の記事ではインターネット通信の仕組み(データが運ばれる仕組み)について解説している。IPアドレスの役割についてより詳しく触れているので、興味があれば読んでみてほしい。
ホスト名とは?
ホスト名とは、IPアドレスを人間の扱いやすいように変換したものである。
上述の通り、IPアドレスは2進数や10進数などの数字の羅列で表されるため、コンピュータには都合が良いが、人間にとっては少々扱いにくい。
そこで、IPアドレスとは別に「ホスト名」という、人間が扱いやすい別の名前を付けることにした。
例えば、本サイトが設置されているサーバーのホスト名は「maya.nai-office.com」である。
ホスト名ってドメイン名のこと?と思う方もいると思うが、大体そのような認識で問題ない。
IPアドレスとホスト名は1対1で対応しており、ホスト名を使って通信を試みた場合、「名前解決」という仕組みによってホスト名がIPアドレスに変換されることで相手のコンピューターと接続できるようになる。
ドメインの階層構造
次章に移る前に、ドメインの階層構造についても軽く触れておく。
ドメイン名は他のドメイン名と重複しないように、管理団体によって厳重に管理されている。ドメイン名を新たに取得したい人は、管理団体に申請して許可が出れば利用することができる。
例えば首相官邸のホームページのドメインは「kantei.go.jp」であるが、この文字列はどのような意味を持っているのだろうか?
トップレベルドメイン
一番右端の「jp」はJapan、つまり日本のことを意味している。
通常ドメインの右端にある文字列は「トップレベルドメイン」という。
「jp」や「us」のように国を表している場合は「国別トップレベルドメイン」と呼ばれ、そのほか「com」や「org」のような「分野別トップレベルドメイン」なども存在する。
トップレベルドメインは規定のものの中からしか選べず、ドメイン取得者が自由な文字列を設定できるわけでは無い。
セカンドレベルドメイン
「go」はgovermentを意味しており、政府機関や各省庁所管の施設・法人のみが登録可能なドメインである。
通常トップレベルドメインの左端にある文字列は「セカンドレベルドメイン」という。
セカンドレベルドメインには政府機関を意味する「go」の他にも、教育機関academyを意味する「ac」や、商業commercialを意味する「co」などがある。
セカンドレベルドメインも、トップレベルドメインと同様に、自由な文字列を設定できるわけでは無い。
(セカンドレベルドメインがない場合もある)
サードレベルドメイン
セカンドレベルドメインの左隣にある「kantei」は、「サードレベルドメイン」と呼ばれ、ドメイン取得者が任意の文字列を設定できる。
このように、ドメインは右に行くにつれてレベルがあがる。
kantei.go.jpの場合は、日本(jp)の政府機関(go)の首相官邸(kantei)という風に、上位が下位を包含する構造になっている。
DNSの役割と仕組み
上述の通り、IPアドレスとホスト名は1対1で対応している。
しかしながら、世界には10億以上のホストが存在しており、それらすべてのIPアドレスとホスト名の対応を管理しようと思うと、その対照表は巨大なものになってしまう。
その問題を解決するのが、DNS(Domain Name System)である。
DNSは、複数のDNSサーバーを運用して巨大な対照表を分散管理することで、スムーズな名前解決の仕組みを実現している。
ドメインを分散管理する仕組み
DNSは、ドメインの階層構造に基づき、原則1つのDNSサーバーが1つの階層を受け持っている。
具体的には、ルートサーバーと呼ばれる最上位DNSサーバーが、すべてのトップレベルドメイン(jpやcom)を受け持ち、下層のDNSサーバーへのつなぎ役となる。
次いで、各トップレベルドメイン(例えばjp)を受け持つDNSサーバーは、直下のすべてのセカンドレベルドメイン(go.jpやco.jp)を受け持ち、下層のDNSサーバーへのつなぎ役となる。
次いで、各セカンドレベルドメイン(例えばgo.jp)を受けもつDNSサーバーは、直下のすべてのサードレベルドメイン(kantei.go.jpなど)を受け持ち、IPアドレスを検索する。
このように、ルートサーバーを始点としてトップ→セカンド→サードという風にドメインを辿っていくことで、IPアドレスを探し出すことができる。
しかし、世界中のすべてのホストが上述の流れでドメイン検索を始めた場合、ルートサーバーへのアクセスが集中してしまうことになる。
この問題を解決するために、DNSでは「キャッシュサーバー」を用いている。
キャッシュサーバーの仕組み
キャッシュサーバーは、一度検索したホスト名とIPアドレスの組み合わせを記憶するサーバーのことである。
ホストがホスト名からIPアドレスを検索する場合、先にキャッシュサーバーに問い合わせることで、DNSサーバーの負担を減らすことができる。
DNSがドメインを管理する仕組み|まとめ
以上で、「DNSがドメインを管理する仕組み」についての解説は終了だ。
IPアドレスは時として人間に扱いやすい「ホスト名」に変換して利用され、そのために、ホスト名からIPアドレスを探し出す「DNS」という仕組みが存在する。
DNSは、IPアドレスとホスト名の巨大な対照表を、ドメイン階層ごとにいくつかのDNSサーバーを設置して分散管理することで、スムーズな「名前解決」の仕組みを実現している。