DNSの概要
ブラウザにドメインを入力するとアプリにアクセスできる。そんなことは当たり前ですが、アプリケーションを動かしているサーバーなどは本来IPアドレスによって居場所が管理されているはずです。
それにも関わらず、ドメインを入力して目的のサーバーに到達できる仕組みがDNS(Domain Name System)です。
本記事ではDNSの仕組みについて解説してみたいと思います。
DNSの仕組み
本記事ではtaka_2525.com
というドメインが名前解決される例を取り扱っていきます(筆者のQiitaアカウント名から採用しました)。
taka_2525.com
がブラウザに入力されてからIPアドレスが返却されるまでの大まかな流れが以下の図です。
第1章: DNSリゾルバ
まず、ブラウザにドメインが入力されたらDNSリゾルバにアクセスします。
DNSリゾルバの役割は、
- ここから色々なサーバーに問い合わせをして、目的のドメインのIPアドレスを取得する
- 取得したIPアドレスをクライアントに返却する
- 名前解決の結果をキャッシュする
です。
つまり、ブラウザがIPアドレスを探しにいくのではなく、DNSリゾルバがIPアドレスを探しにいってくれます。
ただし、DNSリゾルバにキャッシュがある場合は、IPアドレスを探しに行く過程をすっ飛ばしてブラウザにIPアドレスを返却します(上の図の②〜⑦がスキップされる)。
ここからIPアドレスを取得するための旅が始まります。
第2章: ルートサーバー
DNSリゾルバは、まず最初にルートサーバーに問い合わせます。ただし、ルートサーバー自身はtaka_2525.com
のIPアドレスを返却してくれません。なぜならtaka_2525.com
の情報の保持を他のサーバーに委任しているからです。
ルートサーバーはcomの情報を委任しているサーバー(権威サーバー)の情報を返却してくれます。つまり「自分に聞かれてもわからないのでBさんに聞くといいよー」と教えてくれます。
第3章: TLDの権威サーバー
ルートサーバーに問い合わせたのち、次はcom
の権威サーバーへの問い合わせを行います。
このように、名前解決はドメインの右側から行われるのがポイントです。com
やjp
のように一番右側にある箇所をTLD(top level domain)と言います。また、それ以降の箇所は右から順に2LD(second level domain), 3LD(third level domain)...と呼ばれます。
しかし、TLDの権威サーバーも目的のIPアドレスは返却してくれません。そのかわりに2LDの情報を教えてくれます。先ほどと同じように「自分に聞かれてもわからないのでCさんに聞くといいよー」と教えてくれるのです。
第4章: 2LDの権威サーバー
上記の流れでようやくtaka_2525の権威サーバーに到達しました。このサーバーはtaka_2525.com
のIPアドレスを持っているので、DNSリゾルバにIPアドレスを返却します。
今回の例では2LDまでの例でしたが、ドメインがもっと長い場合は3LD, 4LD…と問い合わせが続いていきます。
感想
DNSについてはぼんやりと理解してましたが、図に書いてみると整理されてより理解が深まりました。これだけの通信が一瞬の内に行われるなんてすごいですね。