URLバーにURLを入力してからブラウザに表示されるまで(DNS)
URLバーにURLを入力してからブラウザに表示されるまで(DNS)
URLバーにURLを入力してからブラウザにWebページが表示されるまでを解説していきます。
大枠の流れは以下のシーケンス図の通りです。
ブラウザ → ローカルDNSキャッシュ
ユーザーがWebブラウザのアドレスバーにURLを入力し、エンターキーを押すと、ブラウザはそのURLのドメイン名に対応するIPアドレスを見つけるためにDNSクエリを開始します。
-
ブラウザのDNSキャッシュ
- ユーザーがWebブラウザにURLを入力した瞬間、ブラウザはまず自身のDNSキャッシュをチェックします。このキャッシには、最近解決されたドメイン名とその対応するIPアドレスが一時的に保存されます。ブラウザのキャッシュに該当するエントリが見つかった場合、そのIPアドレスが直ちに使用され、DNSリクエストはネットワーク外へ送信されません。
- ブラウザキャッシュの中身を実際に確認する方法
- Chromeを開いて、アドレスバーに
chrome://net-internals/#dns
と入力し、Enterキーを押します。ここのフォームにURLを入力すると、そのURLのDNSキャッシュがブラウザに存在しているかを確認できます。
- Chromeを開いて、アドレスバーに
-
オペレーティングシステムのDNSシステム
- ブラウザのキャッシュに該当するエントリがない場合、次のオペレーティングシステム(OS)のDNSキャッシュがチェックされます。OSは、以前に解決されたすべてのDNSキャッシュがチェックされます。OSは、以前に解決されたすべてのDNSクエリの結果を保持しており、ブラウザと同様に、キャッシュにエントリがある場合はその情報が使用されます。OSのDNSキャッシュは、ブラウザのキャッシュよりも長い期間データを保持することがあります。
ローカルDNSキャッシュ → ルーターのキャッシュ
OSのキャッシュにも該当するエントリが無い場合、クエリはネットワーク上のルーター(あるいは別のローカルDNSキャッシュサーバー)に送信されます。多くのルーターは、ネットワーク内のデバイスが行ったDNSクエリがネットワーク内の他のデバイスから行われた場合、迅速に解決することができる。
ISPのDNSサーバーへの問い合わせ
ルーターのキャッシュにも該当するエントリが無い場合、クエリはISPのDNSサーバーに転送されます。ISPのDNSサーバーには広範囲のドメイン名とIPアドレスのマッピング情報が含まれており、多くのクエリがこのレベルで解決されます。
ISPのDNSサーバー → 再帰的DNSクエリの実行
ISPのDNSサーバーでもIPアドレスが見つからない場合、サーバーは他のDNSサーバーに問い合わせを行い(再帰的クエリ)、必要な情報を見つけるまでDNSの階層構造をたどります。このプロセスには、ルートDNSサーバー、トップレベルドメイン(TLD)サーバー、そして目的のドメインの権威DNSサーバーへの問い合わせが含まれます。
再帰的DNSクエリ実行の具体的なシナリオ
ISPが提供するDNSサービスが再帰的リゾルバの役割を果たします。
- ルートDNSサーバーへの問い合わせ
- DNSリゾルバはまず、インターネットのドメイン名システムの最上位に位置するルートDNSサーバーに問い合わせます。ルートDNSサーバーは、TLD(例: .com, .net, .orgなど)ごとにどのDNSサーバーが権威(特定ドメインに関する詳細な情報)を持っているかの情報を持っています。
- ユーザーが訪問しようとしているドメイン(例:
www.example.com
)に対して、ルートDNSサーバーは.com
TLDの権威DNSサーバーへの参照(アドレス)をリゾルバに提供します。ルートDNSサーバー自体は、ドメイン名に対応するIPアドレスを知りませんが、次に問い合わせるべきTLD DNSサーバーを指し示します。
- TLD DNSサーバーへの問い合わせ
- ルートDNSサーバーからの情報を受け取ったあと、リゾルバは指定されたTLD DNSサーバー(この例では
.com
ドメイン用)に問い合わせを行います。このTLD DNSサーバーは、そのTLD内のすべてのドメイン名に関する情報を管理しており、特定のドメイン(この例ではexample.com
)の権威DNSサーバーのアドレスを知っています。 - TLD DNSサーバーは、
example.com
ドメインの権威DNSサーバーへの参照をリゾルバに提供します。このステップではまだ、リゾルバはwww.example.com
のIPアドレスを取得していません。
- ルートDNSサーバーからの情報を受け取ったあと、リゾルバは指定されたTLD DNSサーバー(この例では
- 権威DNSサーバーへの問い合わせ
- TLD DNSサーバーから得た情報をもとに、リゾルバは
example.com
ドメインの権威DNSサーバーに直接問い合わせを行います。権威DNSサーバーは、そのドメインに関連するすべてのサブドメインやレコード情報(Aレコード、MXレコード、TXTレコード)などを管理しています。 - リゾルバは、具体的に
www.example.com
のAレコード(IPv4アドレス)またはAAAAレコード(IPv6アドレス)を要求します。権威DNSサーバーはこの要求に応じて、対応するIPアドレスをリゾルバに返します。
- TLD DNSサーバーから得た情報をもとに、リゾルバは
再帰的クエリ → ISPのDNS
ISPのDNSに権威サーバーから返された情報をキャッシュして、クライアントに返します。
ISPのDNS → ルーターのキャッシュ → ローカルDNSのキャッシュ → ブラウザ
最終的に、目的のドメインの権威DNSサーバーからIPアドレスが取得されると、この情報は逆方向に伝播され、ISPのDNSサーバー、ルーター、ユーザーのローカルキャッシュに順に保存されます。これにより、同じドメイン名に対する将来のクエリがより迅速に解決されます。
これらのフェーズを経ることで、DNSクエリは効率的に処理され、ユーザーは目的のウェブサイトにアクセスできるようになります。DNSシステムの階層的な設計とキャッシングメカニズムは、インターネットのスケーラビリティとパフォーマンスを大幅に向上させています。