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サーバーのことを、フルサービスリゾルバー と呼びます。
これを携帯電話に置き換えると非常に分かりやすいです。
電話番号を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アドレスを紐づけることが最も大事な役割です。
ですが、そのほかにドメイン名の別名を登録したり、そのドメインが信頼できるものかの証明に使われたりなど、役割は多岐にわたります。
ですが、今回はざっくりですので、割愛させていただきます。
まとめ
あなたの知り合いに一人くらいいそうな、やたらと交友関係が広い友人はいますか?
もしいたら、そのフルサービスリゾルバーな友人は大事にしましょう。