DNS ( Domain Name System ) をざっくりと知る

DNS ( Domain Name System )とはなんぞや。

私の見解で超ざっくりと答えると、携帯電話の電話帳のようなものです。

ドメインからIPアドレスを探す

まずインターネット通信で必ず必要になるのが各マシンやサイトにユニークに与えられるIPアドレスです。

IPアドレスに対してデータを送ったり、もらったりするのがインターネット通信の基本です。

しかし、IPアドレスは xxx.xxx.xxx.xxx と3桁の数値の並びなので覚えにくい。(新しい規格のIPv6の場合はもっと複雑)

ということで、210.111.123.xxx は hoge.com、220.111.123.xxx は moge.net といった具合にIPアドレスに名前を付けることにしました。
この名前をドメイン名(Domain Name)と言います。

これは電話番号を携帯に登録するときに例えれます。
ほとんどの場合、そのまま覚えないですよね。(携帯電話がなかった時代は番号を覚えていたが・・・)
必ず名前を一緒に入れているはずです。
そして、その後名前で検索して電話をかけているはずです。
何なら多くの人が家族の電話番号さえ覚えてないはずです。

この携帯電話の電話帳にあたるものが、自身のPCにあるhostsと呼ばれるファイルになります。

Linux系だと、多くは/etc/hostにあり、WindowsはC:\Windows\System32\drivers\etc\hostsがそれにあたります。

デフォルトだと何も書かれていないですが、ここにIPアドレスとドメインのセットを書くと、そのパソコンはそのドメインを認識するようになります。
(YahooのドメインにGoogleのIPアドレスを付けることで、Yahooを見に行くとあなたのパソコンではGoogleしか見に行かなくなります。Webエンジニアなら覚えておきましょう。)

ただ、これだと自分のPCしか知らない情報になります。
そこで共用のドメイン情報を管理するサーバーをたて、それをDNSサーバーと呼ぶことになりました。

PCはドメインに該当するIPがあるかを、まずは自分のローカルのhostsを見に行き、該当するものが無かったら、最も身近な共有のDNSに確認しにいきます。
それでも見つからない場合はもっと上位のDNSを見に行きます。

こういった感じでドメインに紐づくIPアドレスを探します。
この仕組みを Domain Name System と呼びます。

ちなみに、このドメインからIPを探してくれる最も身近な共有のDNSサーバーのことを、フルサービスリゾルバー と呼びます。

引用: https://jprs.jp/glossary/index.php?ID=0158

これを携帯電話に置き換えると非常に分かりやすいです。
電話番号をIPアドレス、ドメインを電話帳に登録されている個人名とすると、下記のように置き換えれます。

山田太郎さんに電話をかけたいが、自分の携帯を見るが山田太郎さんの連絡先はない。
そこで自分が知っている中で交友関係が広い友人に聞いてみると、自分は知らないけど、この人なら知ってるはずと、その友人が知り合いづてで電話番号を聞き出してくれました。

といった具合です。

IPアドレスからドメインを探す

さて、逆に電話番号は知っているが名前が分からない。という場合もありますよね。

「○○って番号って誰か分かる?」と友人に聞くことが無かったでしょうか?

これが、IPアドレスからドメインを探す、逆引きと呼ばれるものです。

まぁ、あまり使うこともないですが、覚えておいて損はないでしょう。

DNSキャッシュ

電話番号をなんとかゲットした後に、再度友人に聞きなおすことはしないですよね?
発信履歴や着信履歴に残りますし。

それと同じくローカルにDNSで問い合わせたものをキャッシュする仕組みがあります。
それがDNSキャッシュです。

さきほど、

PCはドメインに該当するIPがあるかを、まずは自分のローカルのhostsを見に行き、該当するものが無かったら、最も身近な共有のDNSに確認しにいきます。
それでも見つからない場合はもっと上位のDNSを見に行きます。

と書いたけど、ローカルのhostsのほかに、このキャッシュも見に行くことになります。

ちなみにこのキャッシュはWindowsだと

ipconfig /displaydns

で覚えてる一覧を確認できます。

リストの中の一例

ちなみにいつまでキャッシュするかを表すのが、Time To Live (TTL) と呼ばれるものです。単位は秒です。

ドメイン情報を取得する際に、このTTLも同時に伝えられ、ドメイン情報として、IPアドレスと共にローカルにキャッシュされます。
そして、キャッシュされたら瞬間からこのTTLが減っていきます。
TTLがなくなるとこのキャッシュは削除される仕組みになってます。

例えるなら、「来年あたりに携帯変えるから、多分番号も変わると思うよ。その時になったら再度探してみて。」と伝えられたら、TTL=1年って感じですかね?
まぁ、現実じゃ番号変わったらそっちから教えてよって感じですけどね(笑)

また、このキャッシュは強制的に消すことができます。

ipconfig /flushdns

覚えておいて損はないでしょう。

フルサービスリゾルバー(DNSキャッシュサーバー)

DNSキャッシュの仕組みは、自分のPCだけの話ではないです。

PCはドメインに該当するIPがあるかを、まずは自分のローカルのhostsを見に行き、該当するものが無かったら、最も身近な共有のDNSに確認しにいきます。
それでも見つからない場合はもっと上位のDNSを見に行きます。

またまた、先ほどの引用ですが、この最も身近な共有のDNSである、フルサービスリゾルバーもDNSキャッシュの仕組みを持っており、DNSキャッシュサーバーの役割も担っています。

さきほどの例えででてきた、交友関係が広い友人も、何度も聞くわけにはいかないので、自分の電話帳に登録しているでしょう。

つまり、あなたにとってその交友関係が広い友人がフルサービスリゾルバーであり、DNSキャッシュサーバーと言えます。

DNSのそのほかの役割

DNSはドメインとIPアドレスを紐づけることが最も大事な役割です。

ですが、そのほかにドメイン名の別名を登録したり、そのドメインが信頼できるものかの証明に使われたりなど、役割は多岐にわたります。

ですが、今回はざっくりですので、割愛させていただきます。

まとめ

あなたの知り合いに一人くらいいそうな、やたらと交友関係が広い友人はいますか?
もしいたら、そのフルサービスリゾルバーな友人は大事にしましょう。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>