プラカンブログSTAFF BLOG

2015.11.25

「ドメインってなんじゃい」の巻

スノーデン

システムのまついです

最近よく社内でサーバーやドメインの事を質問されるようになりました。
同じ質問を何度も何度も受けますが、繰り返し質問があるのは当然の事と思っています。なぜかといいますと、身近にサーバーやドメインというものに接する機会が無いのでイメージしにくいからではと思います。
今まで、この類は私に丸投げだったのですが、最近は、わからないなりに質問をしてききて理解をしようとしているようです。
とてもうれしく思います。
今まで、サーバーやドメインの事は自分に無関係だと思っていた人も、しくみがわからないことには仕事が先に進まないこともあると気が付いたようです。(意識のスキルアップでしょうか)
WEB制作が単にデザインやコーディングだけで成立しているのではなく、システムやサーバーのしくみと密接に関係しているという事を案件を通して感じたはずです。

しかしながら、やっぱりよくわからんのがドメイン関係の事と思います。
ドメインのしくみを簡単な文章で説明すると、確かにとっつきはいいのですが、分かったようでわからんという結果になりますし、そこそこ忠実に掘り下げて説明するとツッコミどころ満載になってしまいます。
ちょうどいい湯加減が難しいのですが、ドメインとかDNSをできるだけわかりやすく、専門用語をなるべく使わないで説明してみたい思います。

以下は、www.yahoo.co.jpのトップページを表示するまでを順を追って説明しています。
出演は、私、ブラウザ、リゾルバ、(ドメイン)ネームサーバー、ルートネームサーバーです。
随所太字で補足説明を入れています。
なお分かりにくい事の一つですが、リゾルバ、(ドメイン)ネームサーバー、ルートネームサーバーは、bindという名前のソフトウェアを使う用途に合わせて設定したものがそれぞれの機能の名称で呼ばれます。
そして、それぞれは物理的に別々のサーバーとしてネットワーク上に存在します。

さて、ここから順を追って説明をはじめます。
・私がブラウザにhttp://www.yahoo.co.jp/ と入力します。

www.yahoo.co.jp という文字列は人に分かり易くするための表記であり、実際の通信ではIPアドレスに変換されて使われます。IPアドレスとはサーバーを特定するための番号のようなものです。」

・入力を受けたブラウザは、リゾルバにwww.yahoo.co.jpのIPアドレスを調べろと丸投げします。

「ブラウザは入力されたwww.yahoo.co.jpをIPアドレスに変換する作業を自分は行わずにリゾルバへ依頼します。
ちなみにPCにてブラウザが使うリゾルバを設定する方法は、コントロールパネルのネットワークアダプタでDNSサーバー欄にIPアドレスを入力します。名称はDNSサーバーとなっていますが厳密にはリゾルバサーバーの事です。DNSサーバーは厳密にいえば(ドメイン)ネームサーバーの事であり、社内PCでは設定の必要はありません」

・リゾルバはwww.yahoo.co.jpのIPアドレスを見つけるのが役目ですが、まずは(お決まりなのですが)、ルートネームサーバーにJPドメインネームサーバーのIPアドレスを教えてもらいます。
なぜ、直接ルートネームサーバーにwww.yahoo.co.jpのIPアドレスを聞かないのかと思われると思いますが、www.yahoo.co.jpのIPアドレスはルートネームサーバーは知らないのです。yahoo.co.jpドメインネームサーバーだけが知っています。
ルートネームサーバーは、知らないので、JPドメインネームサーバーに聞いてくれよ!と受け流します。
なぜこのように受け流しをするのかといいますと、下記図のように、問い合わせが1つのネームサーバーに集中しないように、各ドメイン単位のネームサーバーに情報を分散させているためです。
そういったしくみですのでリゾルバは、まずはルートネームサーバーから ➡ JPドメインネームサーバー ➡ CO.JPドメインネームサーバーへと順々にたどり、最後の yahoo.co.jpドメインネームサーバー でやっとwww.yahoo.co.jpのIPアドレスを得ることができます。
刑事(リゾルバ)が聞き込みで犯人(IPアドレス)にたどり着くのと似ていますね。

下記図は名前解決のためのネームサーバーの構成です。

www.yahoo.co.jpのIPアドレスを得る(名前解決)には、
1.ルートネームサーバー
2.JPドメインネームサーバー
3.CO.JPドメインネームサーバー
4.yahoo.co.jpドメインネームサーバー
の4回の問い合わせが発生します。
www.yahoo.comのIPアドレスを得る(名前解決)には、
1.ルートネームサーバー
2.COMドメインネームサーバー
3.yahoo.co.jpドメインネームサーバー
の3回の問い合わせで一回少ないです。

都市伝説ですが、15年ほど前はインターネット回線がアナログモデムでとても遅い時代でしたので、この1回の差から、www.yahoo.co.jpよりwww.yahoo.comの方がアクセスが早いと考えられ、COMドメインを優先的に選んだ事もありました。

ルートネームサーバー
   |
   +--- JPドメインネームサーバー
   |       |
   |       +--- CO.JPドメインネームサーバー
   |      |        |
   |       ...      +--- yahoo.co.jp ドメインネームサーバー
   |                |
   |                +--- google.co.jp ドメインネームサーバー
   |                |
   |                +--- plusdesign.co.jp ドメインネームサーバー
   |                ...
   |
   +--- COMドメインネームサーバー
   |       |
   |       +--- yahoo.com ドメインネームサーバー
   ...     |
           +--- google.com ドメインネームサーバー
           |
           +--- plusdesign.com ドメインネームサーバー
           ...

さて、リゾルバがルートネームサーバーにJPドメインネームサーバーのIPアドレスを教えてもらってからの続きです。

・リゾルバはJPドメインネームサーバーへCO.JPドメインネームサーバーのIPアドレスを問い合わせます。
・.JPドメインネームサーバーは CO.JPドメインネームサーバーのIPアドレスリゾルバに答えます。
・リゾルバはCO.JPドメインネームサーバーへ yahoo.co.jpドメインネームサーバーのIPアドレスを問い合わせます。
・CO.JPドメインネームサーバーは yahoo.co.jpドメインネームサーバーのIPアドレスリゾルバに答えます。
・リゾルバはyahoo.co.jpドメインネームサーバーへホスト名wwwのIPアドレスを問い合わせます。
・yahoo.co.jpドメインネームサーバーは自身が知っているIPアドレスをリゾルバに答えます。

「リゾルバは最初にルートネームサーバーに問い合わせ、以後再帰的に問い合わせをします。www.yahoo.co.jpのIPアドレスを得るには計4回の問い合わせを行うことになります。」

・リゾルバは www.yahoo.co.jp のIPアドレスをブラウザへ伝えます。
・ブラウザはそのIPアドレスのサーバーへコンテンツをリクエストして待ちます。
・ブラウザは、サーバーからコンテンツが届いたら表示します。
・私は表示されたトップページのYahoo!ニュースを見ます。

以上で終了です。

Yahoo!のサイトを見るだけですが、裏方で頑張っているしくみは壮大でおもしろいですね。
わかったでしょうか。

ますます、疑問が出てきましたか!
疑問は私に直接聞いてください。
待ってます。

 

この記事は、MATUI が書きました。