🤗

[初心者向け] DNSの仕組み 〜 ブラウザがWebサイトを表示するまで

2024/10/28に公開

はじめに

ブラウザでWebサイトを表示する際、最初に行われるのがDNS(Domain Name System)による名前解決。
これは、人間が理解しやすい「www.google.com」のようなドメイン名を、コンピュータが理解できるIPアドレス「172.217.161.68」に変換する仕組みである。

ちなみに、

dig www.google.com

をターミナルで出力すると、IPアドレスが返ってくる。

DNS解決の流れ

例として「www.google.com」にアクセスする場合のフローを見ていく。

1. DNSキャッシュによるチェック

まず、www.google.comがブラウザ内でクリックされると、以下の順番でキャッシュをチェックする。

  1. ブラウザのDNSキャッシュ
  2. ローカルDNSキャッシュ
  3. ルーターのDNSキャッシュ (設定されている場合)

これらは、最近アクセスしたサイトの情報が一時的に保存される場所。「一時的に」なので、設定された有効期限を過ぎるとその情報は破棄される。有効期限は、TTL(Time To Live)といい、秒単位で設定される。

ローカルDNSキャッシュとは、ローカルマシン(あなたが使用しているMacBookなど)のOSレベルのキャッシュのこと。

もし直近で同じサイトにアクセスしたことがあり、これらのキャッシュに情報が残っていたら、情報が取得できた地点でWebサイトが表示される。

(補足)

TTL(Time To Live)は、ドメインの管理者が設定する。ちなみに、冒頭で紹介したコマンド「dig www.google.com」を実行してみると、下記の記述部分があった。

;; ANSWER SECTION:
www.google.com.		27	IN	A	172.217.161.68

この「27」は、TTLの残り時間を示している。通常、googleは300秒のTTLを設定しているみたい。つまり、このコマンドを打ったのは、www.google.comにアクセスしてから273秒後だった、ということ。

2. ISPのDNSサーバーへの問い合わせ

1のローカルDNSキャッシュに情報がなかった場合、次にISP(Internet Service Provider、 NTTとか)のDNSサーバーに問い合わせる。

ISPは日本全国の各地域にDNSサーバーを設置しており、負荷分散と冗長性のため、通常はプライマリとセカンダリの2つのサーバーが設定されている。

もしこのDNSサーバーに情報があったら、ここから情報を取得してWebサイトが表示される。

⚠︎これ以降のプロセスは、ISPのDNSサーバーが代わりに行う

3. ルートDNSサーバーへの問い合わせ

もしISPのDNSサーバーにもなかったら、ルートDNSサーバーに問い合わせる。

ルートDNSサーバーとは、道案内役みたいなもの。www.google.comというドメインに対して、TLD(トップレベルドメイン)は「.com」だからこのサーバーにアクセスしてみてね、という情報を返す。

ちなみに、よく「ルートDNSサーバーは世界に13台」と言われているが、これは語弊がある。物理的なサーバーが13台しかないというわけではないからだ。13個あるのは、ルートDNSサーバーアドレス。同じアドレスを持ったサーバーが世界中に分散されており、もっとも近いサーバーに誘導される。

4. TLDサーバーへの問い合わせ

ルートDNSサーバーからTLDサーバーの情報を受け取ると、ここに辿り着く。

TLDサーバーは、特定のトップレベルドメイン(.com、.org、.netなど)を管理しているサーバー。ここでは、www.google.comの「google.com」部分を担当するDNSサーバーの情報を提供する。このサーバーは、最終的なIPアドレスを持つサーバーの場所を教えてくれる。

5. オーソリティDNSサーバー

TLDサーバーから情報を取得すると、このオーソリティDNSサーバーに辿り着く。

オーソリティDNSサーバーは、ドメインレジストラ(例:お名前.com)が提供するDNSサーバーで、そのドメインの正式な(権威のある)情報を持つサーバーである。ここから最終的な「www.google.com」に対応するIPアドレスが返され、ブラウザは目的のWebサーバーに接続することができるようになる。

最後に

以上が、ブラウザがWebサイトを表示するまでの、DNSのフローである。

これらの ルートDNSサーバーTLSサーバーオーソリティDNSサーバー という階層的な構造により、世界中の膨大な量のドメインが効率的に管理され、キャッシュの活用により高速な名前解決が実現されている。

ただ、留意が必要なのは、実際は「3. ルートDNSサーバーへの問い合わせ」以降はISPのDNSサーバーが代わりに行う、ということ。また、通常はこれらのプロセスがミリ秒単位で実行されるため、ユーザーがこの複雑な過程を意識することはない。

Discussion