Implist | 個人プロダクト開発を加速させるための理論と実装

【DNSの仕組み】を図解でわかりやすく解説してみる。名前解決はどういう流れで行われているのか?


さて今回は「DNSの仕組み」を図を用いて解説して、DNSによって名前解決というものが行われている様子を見ていきます。

この記事の対象読者は、

「サイトを公開したいけど、DNSとかよくわからない」
「ドメインを登録してくれるものってのはなんとなく分かるけど、どういう仕組みなのか分からない」


という「初心者向けDNS解説記事」となってます。ざっくりとDNSの仕組み・全体像を掴んで行きましょう。

DNSは何をするものか?

DNSは一言でいうと「ドメイン」と「IPアドレス」を対応付けるためのものです。

ドメインをブラウザに入力してサイトにアクセスできるのは、ドメインとIPアドレスの対応をDNSが持っていてDNSがドメインに対応するIPを返し、そのIPアドレスが示すサーバにアクセスしているからです。
DNSがドメインからIPアドレスを返すことを「名前解決」と呼んだりします。

ドメイン、IPアドレスというのは、
https://www.example.com/ このExampleサイトを例に取ると、

  • ドメインは「www.example.com」
  • IPアドレスは「93.184.216.3」

になり、この2つの対応付けがDNSにて行われています。
DNSは「Domain Name System」の略で、ドメイン名をIPアドレスと対応付けるためのものになります。

仕組みとしては、DNSでドメインとIPアドレスの対応表みたいなものを持っていて、DNSに対してドメインのIPアドレスは何?聞くと対応表に記述されているIPアドレスを返してくれるといった具合です。
この対応表は「DNSレコード」と呼ばれていて、上の図のように複数登録できたりします。詳しくは次の記事で説明します。

 

ここで、DNSがそもそもなぜ必要になるのかも簡単に触れておくと、
IPアドレスは数字の羅列で覚えづらいけど、ドメインなら覚えやすい」からです。
これが一番の理由です。

 

人間がみて、IPのような数字の羅列を覚えるより、意味のある英単語をつなげた「ドメイン名」の方が覚えやすいですよね。
IPと比較して覚えやすいというだけなので、普通覚えたりはしないと思いますが、ドメインを見ただけで「ああこういうサイトなんだろうな」とかは、なんとなく分かると思います。

登場人物の整理

「DNS」での登場人物を紹介します。

  • リゾルバ
    • ドメインのIPアドレスを知りたいと思っている人(名前解決したい)
    • 下図ではPC・ブラウザなどがリゾルバとなります
  • DNS
    • 名前解決をしてくれるもの
    • ドメインとIPアドレスの対応表を持っていて、リゾルバからの要求に答える
    • リゾルバから「このドメインのIPアドレスおしえて」とくると、対応表をみてIPアドレスを返す
  • Webサイト(サーバ)
    • 本当にアクセスしたい対象
    • 下図では、Webサイトになる
    • IPアドレスをDNSに教えてもらうことによって、IPアドレスでアクセスすることができる

DNS界隈ではもっとたくさんの用語が出てきて、理解しづらいですがひとまずこの3つだけを覚えておけばOKです。この3つがあると認識した上で、名前解決の流れを見ていきましょう。

ドメインをブラウザのURLに入力して、サイトにアクセスするまでの流れ(名前解決)を図解

何かしらのサイトにアクセスするとき、ブラウザのURLバーにドメイン名を打ち込むとアクセスできますよね。ここではサイトが表示されるまでの流れを図解します。
(大抵の場合は検索エンジンからサイトを見つけてアクセスすると思いますが、結果一緒なので言及しません)

どういう流れでサイトが表示されているのか、図解すると以下のような感じになります。

ステップは大きく分けて4つあります。一つずつ説明します。
名前解決と呼ばれているのは①②の話です。

① www.example.comのIPを要求

まずはブラウザからwww.example.comというサイトにアクセスしようとします。
ここで行われるのは、DNSに対して「www.example.com」のIPアドレスは何にになるのか?というのを尋ねる(要求)することです。

これは普段私達が意識することはありません。まずはドメインのIPをDNSに要求するんだな、ということだけ覚えておきましょう。

93.184.216.3を返す

IPの要求をDNSに行ったら、DNSはIPを返そうとします。
どうやってIPを返すかというと、DNSは先に説明した対応表を見に行きます(レコード)。この対応表に「www.example.com」は「93.184.216.3」というIPというのが書かれています。
(もし書かれていなかったら、別のDNSを見に行ったりするのですが複雑になるのでそこは割愛します)

そしてそのIPが返されます。これが名前解決です。

93.184.216.3にアクセス

いよいよ目的のサイトのIPがゲットできたので、そのIPのサーバにアクセスします。

このサーバではWebサーバが稼働しているはずなので、そのWebサーバがサイト情報を返してきます。

④ サイト情報を返す

ここでようやくサーバからサイトの情報が返され、ブラウザでサイトが表示されます。

普段私たちから見ると、サイトにアクセスした途端サイトが表示されていますが、裏ではDNSにアクセスしたり、ドメインからIPを見つけ出したりなどいろいろなことが行われていることが分かります。

この例は簡易的な例であり、①②ですぐにIPを返しているように見えますが、この間では様々なDNSを介してIPを取得しようと試みています。
若干複雑になるので、気になる方は以下を参照ください。

https://domainname.jp/report/dns/#resolution

 

今回は、DNSの仕組み・名前解決の流れをみてきましたが、これを理解した上でDNSの設定をしてみるとかなり理解が深まると思います。
なので、次回は実際にドメインとIPアドレスを紐付けてDNSに登録するというのをやってみましょう。

その際にレジストラやAレコードなどまた聞き馴染みのない用語がでてきますが、それらも図解しながらしっかりと解説していきます。