DNS(ドメインネームシステム)
を学ぼう!

インターネットでドメイン名を使えるように
する仕組みが「DNS(ディーエヌエス)」。
DNSはどんなもの?どうやって動くの?
詳しく学んでみましょう。

学習キーワード
IPアドレスDNS分散管理ルート
ルートサーバールートヒント名前解決
キャッシュ
フルリゾルバー権威DNSサーバー

URLとドメイン名について
動画で学ぼう

「教えて、ドメイン名先生」
~ネコのピコ丸と学ぶ簡単解説動画~

「DNS」ってどんなもの?【前編】

「教えて、ドメイン名先生」
~ネコのピコ丸と学ぶ簡単解説動画~

「DNS」ってどんなもの?【後編】

Webサイトを探す冒険に出よう
03.01

インターネットにはおよそ19億ものWebサイトがあると言われており(2022年現在/出典:Internet Live Stats )、さまざまな情報を手に入れることができます。行きたいWebサイトにアクセスする時は、ドメイン名で相手を指定します。では、なぜドメイン名を入れるだけで、正しいサイトに瞬時につながるのでしょうか?

インターネットにつながっているものには「IPアドレス(アイピーアドレス)」という番号がつけられており、情報の送り先のIPアドレスを指定して、データを送ることになっています。

私たちが宅配便で荷物を送る時、送り先を書いた荷札を貼りますね。さらに、誰から届いたかわかるように送り元も書いておきます。同じように、IPアドレスは、インターネットでデータを送る時の「送り先」「送り元」として使われます。

送り先と送り元

インターネットでデータを送る時は、送り先の「IPアドレス」を知る必要があるんだね!

それって、どうやって調べるの?

IPアドレスの調べ方
03.02

インターネットができた頃は、誰がどのIPアドレスを使っているかを全部知っている人がいて、機械とIPアドレスの一覧表をつくってインターネットで公開していたのです。

しかし、インターネットが大きくなってくると、この仕組みを続けることは難しくなってきました。そのため、当時インターネットを動かしていた人たちは、ドメイン名に対応するIPアドレスが自動的にわかる仕組みをつくり、つなぐ時にはドメイン名を入れるだけで送り先のIPアドレスがわかるようにしようと考えました。
こうしてつくられたのが「DNS(ディーエヌエス、ドメインネームシステム)」です。

現在ではWebブラウザーにドメイン名を入力すると、DNSがドメイン名に対応するIPアドレスを自動的に調べて、Webブラウザーに教えてくれます。Webブラウザーは、そのIPアドレスを宛先に指定して、Webサイトに接続する、という仕組みです。

インターネットを支え続けるDNS

文中で紹介した「誰がどのIPアドレスを使っているかを全部知っている人」という役割は、アメリカのSRI-NIC(エスアールアイニック)という組織が担当していました。

SRI-NICがHOSTS.TXT(ホスツテキスト)という、機械とIPアドレスの一覧ファイルを公開し、インターネットに接続する組織はこのファイルを定期的に入手することで、接続相手を名前で指定できるようになったのです。

DNSはこのHOSTS.TXTを置き換える目的で開発されました。最初のDNSが1983年、その改良版が1987年に公開され使われるようになると、「相手先を名前で指定できる」というHOSTS.TXTの利点はそのままに、インターネット自身が大きく成長しても、同じ仕組みを使い続けることができるようになりました。

DNSは、1987年に公開された仕組みにさまざまな改良を加える形で、開発されてから40年近くたった現在も、見えないところでインターネットを支え続けています。

DNSがありがたい存在だってわかってきた!!

次はDNSの特徴を解説するよ!

DNSの分散管理
03.03

DNSの仕組みを役割で例えると、3種類に分けられます。「情報が欲しい人」「情報を探す人」「情報を持っている人たち」

みなさんが使っているパソコンやスマートフォンが「情報が欲しい人」の一つです。「情報が欲しい人」は、Webブラウザーでドメイン名を指定します。すると、「情報が欲しい人」 から「情報を探す人」に「このドメイン名のIPアドレスを調べて、結果を教えてください」とお願いすることになります。

「情報を探す人」は、「情報を持っている人たち」に聞いて回り、得られた結果を「情報が欲しい人」に返します。DNSでは、この一連の流れを理解することが大切なのです。

インターネットにはたくさんのドメイン名があり、対応するIPアドレスの情報を一人で持つと、限界を超えてしまいます。そこでDNSでは限界を超えないように、情報を手分けして持つことにしました。そのため、「情報を持っている人たち」と書いてあるように、情報を持っている人が複数存在することになります。
このように情報を手分けして持つことをコンピューターの世界では「分散管理」と呼んでいます。分散管理は、DNSの代表的な特徴のひとつです。

分散しちゃったら、目的のIPアドレスを探すのが大変じゃないの?

じゃあ、DNSがどうやってIPアドレスを調べるか、詳しく学んでみよう!

DNSに欠かせない存在「ルートサーバー」
03.04

DNSの「分散管理」下で、「情報を探す人」は「情報を持っている人たち」から目的の情報をどうやって探し出すのでしょうか?

分散管理では、ドメイン名の階層構造に合わせる形で情報を持ちます。つまり、「情報を持っている人たち」は「自分が管理する階層の情報」と「その下の階層の管理を誰に任せたのか」という情報だけを持つことになります。

さらに、ドメイン名の一番上の階層は「ルート」と言います。図の赤い点がルートです。ルートはIPアドレスを探す旅の起点となります。ルートはDNSにとってとても大切なものですが、ドメイン名を書く時、通常は省略されています。

そして、ルートは「ルートサーバー」と呼ばれるサーバーで管理されています。

ルートサーバーはどこにあるの?

出典:https://root-servers.org/

ルートサーバーは世界中にある1500以上の拠点で稼働していますが、場所として公開されているのは都市名まで。具体的な住所は非公開です。

また、ルートサーバーAからMまでの13の系列があります。JPRSではMルートサーバー(M-Root)をWIDEプロジェクトと共同運用し、世界中に公開しています。

「情報を探す人」はルートサーバーのありかが書かれたファイルを持っています。このファイルは情報を探す手がかりになるため「ルートヒント」と呼ばれています。

ルートヒントは、インターネット全体で同じものを使うことになっています。「情報を探す人」はルートヒントを手がかりにしてルートサーバーから順にドメイン名の階層構造を調べていくことで、目的の情報にたどり着くことができるわけです。

ここからは、実際のドメイン名を使ってDNSの動作を学びましょう。

僕が具体的に試してみるよ!

ポン太、IPアドレスにたどり着けるか?!

jprs.jpのIPアドレスは何ですか?
03.05

1)ポン太くんがアクセスしたいサイト(例えば「jprs.jp」)をWebブラウザーに入力します。すると、「情報を探す人」に「jprs.jpのIPアドレスを調べて、結果を教えてください」とお願いすることになります。「情報を探す人」は通常は接続している通信事業者(プロバイダー)で動いています。

2)「情報を探す人」は、ルートヒントを手がかりにして、まずルートサーバーに「jprs.jpのIPアドレスは何ですか?」と聞きます。ところが、ルートサーバーはjprs.jpのIPアドレスは知りませんが、jpを管理しているサーバーは知っているので、「jpはjpのサーバーが管理しています」という情報を、「情報を探す人」に返します。

3)「情報を探す人」は、その情報を使って、今度はjpのサーバーに「jprs.jpのIPアドレスは何ですか?」と聞きます。しかし、jpのサイトもルートサーバーと同じようにjprs.jpのIPアドレスは知りません。ですが、 jprs.jpを管理しているサーバーは知っているので、 「jprs.jpはjprs.jpのサーバーが管理しています」という情報を、「情報を探す人」に返します。

4)「情報を探す人」は、さらにその情報を使って、jprs.jpのサーバーに「jprs.jpのIPアドレスは何ですか?」と聞きます。jprs.jpのサーバーは、jprs.jpのIPアドレスを知っています。そのため「jprs.jpのIPアドレスは192.0.2.1です」と返します(注:このIPアドレスは例示用のもので、実際のIPアドレスとは異なります)。これが知りたかった情報なので、「情報を探す人」は「情報が欲しい人」に「192.0.2.1」を最終結果として返します。

このように、「情報を探す人」はルートから始めて、DNSの階層構造を順に調べていくことになります。これがDNSを使って、ドメイン名からIPアドレスを調べる仕組みです。この「ドメイン名に対応するものをDNSで調べる」ことを、DNSの「名前解決」と呼びます。

IPアドレスを知るだけでも、長い旅なんだな〜

だから「情報を探す人」の存在があるんだね!

「情報を探す人」「情報を持っている人たち」の正体
03.06

先ほど学んだDNSの名前解決によって、ルートから順番にDNSの階層構造を調べていけば、結果を確実に知ることができます。しかし、毎回これをしなければならないのは手間がかかりますね。そのため、「情報が欲しい人」は「情報を探す人」に名前解決をお願いすることにして、役割を分けることにしました。

「情報を探す人」は名前解決の際に「情報を持っている人たち」から得られた情報、先ほどの例だと

  • ・jpはjpのサーバーが管理しています。
  • ・jprs.jpはjprs.jpのサーバーが管理しています。
  • ・jprs.jpのIPアドレスは192.0.2.1です。

といった情報をしばらく覚えておいて、次回以降の名前解決で再利用をします。この仕組みを「キャッシュ」と言います。

「情報が欲しい人」が「情報を探す人」に名前解決をお願いすることにし、「情報を探す人」がキャッシュを持つようにすることで、名前解決の効率を上げることができます。例えば、jprs.jpのIPアドレスを名前解決した直後に、別の「情報が欲しい人」からexample.jpのIPアドレスを調べるようお願いされたとします。「情報を探す人」は「jpはjpのサーバーが管理しています」という情報をキャッシュしているので、ルートサーバーからではなく、jpのサーバーから名前解決を始めることができます。これが「情報が欲しい人」と「情報を探す人」を分けている理由です。

しかし、キャッシュはしばらくすると忘れることになっています。IPアドレスや管理するサーバーを変えた時に、昔のことをいつまでも覚えていると都合が悪いからです。忘れた後は最初と同じように、「情報を持っている人たち」に必要な情報を聞いて回ることになります。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

実際のドメイン名を使って、DNSの具体的な動作を解説しましたが、説明で使った「情報を探す人」と「情報を持っている人たち」にはそれぞれ「フルリゾルバー」「権威DNSサーバー」という名前がつけられています。

これらのサーバーはどちらも「DNSサーバー」と呼ばれていますが、役割が全く異なり、どちらもDNSにとって重要なサーバーとなります。区別して覚えておきましょう。

時代はキャッシュレスだけど、やっぱりキャッシュは大事だね!

ピコ丸、DNSのキャッシュは貯蔵庫を意味する『cache』で、現金の『cash』とは違うんだよ。

・・・っ!!

【体験コーナー】
名前解決の旅をしてみよう!

みなさんが「情報を探す人(フルリゾルバー)」になって
名前解決の旅を体験してみましょう。

名前解決の旅を
してみよう!

Webサイトが見たい
ポン太とピコ丸…

jprs.jp

jprs.jpのIPアドレスが知りたいんだ。

よーし、がんばって情報を探すぞ…!

サーバーくん
サーバーくん

まずは誰に聞きに行きますか?

そう!
まずはルートサーバーに聞きましょう!

そのサーバーのありかは
まだ分かりませんね…

サーバーくん
サーバーくん
サーバーくん
サーバーくん
  • ルートサーバー
  • jprs.jpのサーバー

jprs.jpのIPアドレスは何ですか?

jprs.jpのことは
jpのサーバーに任せておる。
jpのサーバーはあっちじゃぞ。

サーバーくん
サーバーくん
サーバーくん
ルートサーバー
ルートサーバー

次は誰に聞きに行きますか?

そう!
jpのサーバーのありかを
教えてもらったんでしたね。

ルートサーバーには
さっき聞きましたよ…

そのサーバーのありかは
まだ分かりませんね…

サーバーくん
サーバーくん
サーバーくん
サーバーくん
  • ルートサーバー
  • jprs.jpのサーバー

jprs.jpのIPアドレスは何ですか?

jprs.jpのことは
jprs.jpのサーバーに任せてるんだ。
jprs.jpのサーバーはあっちにあるよ。

サーバーくん
サーバーくん
サーバーくん
jpのサーバー

次は誰に聞きに行きますか?

そう!
jprs.jpのサーバーのありかを
教えてもらったんでしたね。

それは関係ないサーバーですね。

サーバーくん
サーバーくん
サーバーくん
サーバーくん

jprs.jpのIPアドレスは何ですか?

jprs.jpのIPアドレスは
192.0.2.1です!!

サーバーくん
サーバーくん
サーバーくん
jprs.jpのサーバー
jprs.jpのサーバー
jprs.jpのサーバー

※ 例示用のIPアドレスで、実際のIPアドレスとは異なります。

次はどこに行きますか?

目的の情報が手に入ったので、
情報が欲しい人に伝えましょう!

もう、知りたい情報は
得られたはずですよ。

サーバーくん
サーバーくん
サーバーくん

192.0.2.1です!

よーし、192.0.2.1にアクセスするぞ!

サーバーくん
サーバーくん

※ 例示用のIPアドレスで、実際のIPアドレスとは異なります。

jprs.jp

jprs.jpにアクセスできました!

Webサイトの住所を見つける仕組みがDNSなんだね!勉強になった〜!

ところで「jp」は日本って意味でいいんだっけ?

はっ!!そうだ!まだまだ謎があるんだった…!