Domain Name System(ドメイン ネーム システム、DNS)とは、人間にとって覚え易い名前を機械にとってわかりやすい数字に変換してくれるシステムだ。この機能を持つ機器をDNSサーバという。逆変換も行う。だからこの機械(サーバ)にexample.comのip address は?と聞くと123.123.123.123 と返事がくる。逆にip address で聞くとドメインネームであるexample.comを返してくれる。
わからないと、自動的により上のDNSサーバに聞きに行って返事をくれる。そこでもわからないとさらに上のサーバに聞きに行く。上のサーバとはm の場合はabc.example.comのDNSサーバで、さらに上はexample.comのDNSサーバ、そこでもわからないとac.jp のDNSサーバ、さらに上はjpのDNSサーバということになる。その上は?というと世界中に13台ある。13台といっても論理的にだ。管理しているのはほとんどが米国、スウェーデンとオランダと日本に1台ずつだ。
クライアント(あんたのことだ)がこのページを読みに行きたくてURLをブラウザで入力するとまず一番近いすぐ上のDNSサーバにip address を聞きに行く。ここに登録されているのは、あなたの所属するネットのDNSサーバで、ここに登録されていないと、その上のサーバに、そこでもわからないとさらに上のDNSサーバにと聞きに行く訳だ。それぞれのDNSサーバは自分の範囲のドメインネームは必ず登録してある。mの場合はabc.example.comのDNSサーバに登録してあるのだ。でわからないときは最上位のDNSサーバに聞く訳で、最上位のDNSサーバは jp だったらjpのDNSサーバに、そして jp のサーバはcom だったら comのDNSサーバに、さらにexammple.com だったらexample.comに、そしてdef.example.comだったらdef.example.comのDNSサーバに聞きに行き、そこでabc.def.example.com のip address は123.123.123.123 だとわかる訳だ。
このようなTree構造になっているので、最上位のDNSサーバをルートサーバ(根っこのサーバ)というわけだ。
だれがどう考えたって、何億とあるユーザからの問い合わせがルートサーバに行ったら大変だ。たいてい、途中のサーバが、これまで問い合わせのあったドメインネームを一時的に記憶している。だからルートサーバまで問い合わせることはほとんどないだろうけどそれでも全世界をカバーするのでルートサーバの負荷は大きい。
もしドメインネームとip address の対応を変更すると、途中のDNSサーバに記憶されている昔の名前がなくならない限り最新の情報が返ってこない。しばらく時間がたって記憶が更新されないと遠方からの問い合わせに昔の名前が返って来て接続できないことになる。めったに変更できないわけだ。
スマホを買って新しく契約したとき、電話番号が誰かが使っていたものだと、その誰かの知り合いから電話がくることになる。その知り合いの電場番号簿が更新されないかぎり間違い電話になるわけだ。これと同じだ。
管理者の携帯の場合、もらった電話番号の以前の持ち主は、その筋の人から借金をした人だったらしく、怖いお兄さんから「借金を何時返す?」という脅しの電話が何回かあった。楽しんだよ。
閑話休題。で、DNSに話をもどすとユーザからの問い合わせが殺到したら返事に時間がかかる。しかし、自分の所属するネットのDNSサーバに問い合わするのが普通だ。そのDNSサーバはそのカバーする範囲からの問い合わせにしか答えないのが普通だ。よそからの問い合わせに答えていられないからな。とすると、自分が使っているDNSサーバの能力が低くてすぐ過負荷になると、URL を入力しても、なかなかページがでてこない。だからといって自由に使えるDNSサーバなどめったにないからしょうがない。ところがGoogle が提供しているようで
8.8.8.8
8.8.4.4
というip address のDNSサーバは誰でも使っていい。あっちの大学はネットが遅いので、このgoogle提供のDNSサーバに変更してみた。問題ない。ちと早くなったかもね。