DNSの役割
DNS(Domain Name System:ドメインネームシステム)は、ドメイン名やホスト名とIPアドレスなどの情報を対応付け、通信先を調べられるようにする仕組みです。
インターネットでは、通信先の機器を識別するためにIPアドレスが使われます。例えば、IPv4アドレスは 192.0.2.1 のように数字とドットを組み合わせて表されます。しかし、このような数値を人間が覚えたり、直接入力したりするのは不便です。
そこで、www.example.jp のような、人間にとって覚えやすい名前が利用されています。DNSを使えば、この名前に対応するIPアドレスを調べることができます。
このように、ドメイン名やホスト名から対応するIPアドレスなどを調べる処理を「名前解決」といいます。
例えば、Webブラウザで www.example.jp にアクセスする場合、DNSによって対応するIPアドレスを調べ、そのアドレスを使ってWebサーバに接続します。
DNSは、キーワードからWebページを探す検索エンジンではなく、Webページの内容を提供したり、通信データを転送したりする仕組みでもありません。通信先を特定するための情報を提供することが主な役割です。
なお、DNSでは一つの名前に複数のIPアドレスを対応付けることもできます。また、IPアドレス以外にも、電子メールの配送先などに関する情報を管理しています。
ドメイン名とURL
ドメイン名は、インターネット上の組織やサービスなどを識別するための名前です。
例えば、次のURLを考えます。
https://www.example.co.jp/jouhou/index.html
このURLは、次のように分けられます。
https:通信に使用する方式を示します。
www:ホストを表す名前です。
example.co.jp:ドメイン名です。
/jouhou/index.html:サーバ上の資源を示すパスです。
www を含む www.example.co.jp は、ホストを表す完全な名前であり、完全修飾ドメイン名(FQDN:Fully Qualified Domain Name)と呼ばれます。また、www.example.co.jp 全体を単にドメイン名と呼ぶこともあります。
ドメイン名はドットで区切られた階層構造をもち、右側ほど上位の階層を表します。例えば、jp はトップレベルドメインであり、co.jp、example.co.jp の順に下位の階層になります。
同じ階層で同じドメイン名を複数の組織がそれぞれ独立して登録することはできません。一方、一つのドメイン名の下に複数のホスト名を設けることはできます。
DNSサーバと名前解決の仕組み
DNSサーバは、ドメイン名とIPアドレスなどの対応情報を管理したり、問い合わせに回答したりするサーバです。
DNSは、世界中のすべてのドメイン名を一台のサーバで管理しているわけではありません。多数のDNSサーバが、階層的・分散的に情報を管理しています。
主なDNSサーバの役割は次のとおりです。
- ルートDNSサーバ:DNSの階層構造の最上位に位置し、トップレベルドメインを担当するDNSサーバの情報を案内します。
- トップレベルドメインを担当するDNSサーバ:
jp や com などについて、下位のドメインを管理するDNSサーバの情報(co.jp など)を案内します。
- 権威DNSサーバ:担当するドメインについて、IPアドレスなどの正式なDNS情報を管理します。
- DNSキャッシュサーバ:利用者からの問い合わせを受け、必要に応じて他のDNSサーバへ問い合わせて結果を返します。
例えば、www.example.co.jp のIPアドレスを調べる場合、端末は通常、設定されたDNSキャッシュサーバなどに問い合わせます。そこに情報がなければ、DNSの階層構造をたどり(jpのDNSサーバ→co.jpのDNSサーバ→example.co.jpのDNSサーバのようにして)、必要な情報を取得します。
この仕組みにより、膨大な数のドメイン名を分散して管理できます。また、複数のDNSサーバを設けることで、一部に障害が発生した場合の影響を抑えることもできます。
Webページが表示されるまでの流れ
WebブラウザにURLを入力してからWebページが表示されるまでには、DNSによる名前解決やWebサーバとの通信が行われます。
基本的な処理の順序は次のとおりです。
- URLの入力:利用者がブラウザにURLを入力します。
- DNSへの問い合わせ:URLに含まれるホスト名に対応するIPアドレスを調べます。
- DNSからの回答:名前解決によって対応するIPアドレスを取得します。
- Webサーバへの接続と要求:取得したIPアドレスを使ってWebサーバへ接続し、HTTPの要求を送信します。
- Webサーバからの応答:WebサーバがHTMLなどのデータを返します。
- ブラウザによる表示:受信したHTMLなどを解析し、Webページを画面に表示します。
つまり、基本的な順序は次のようになります。
DNSへの問い合わせ → IPアドレスの取得 → Webサーバへの接続とHTTP要求 → サーバからの応答 → ブラウザによる解析・表示
実際には、過去の名前解決の結果が保存されていれば、DNSへの問い合わせが省略されることもあります。
電子メールの配送とDNS
DNSは、Webページへのアクセスだけでなく、電子メールの配送にも利用されます。
例えば、次のメールアドレスを考えます。
shinobu@example.ed.jp
メールアドレスは @ を境に分けられ、shinobu は受信者を表す部分、example.ed.jp は受信側のドメイン名です。
メールを送信するとき、送信側メールサーバは、受信側のドメイン名をもとに配送先のメールサーバを調べます。このとき、DNSのMXレコードと呼ばれる情報が利用されます。MXレコードには、そのドメイン宛ての電子メールを受け取るメールサーバの名前などが登録されています。
メールアドレスに誤りがある場合、ドメイン名の誤りとユーザ名の誤りでは、検出される段階が異なります。
例えば、次の二つの誤ったメールアドレスを考えます。
shinobu@exaaample.ed.jp(ドメイン名の誤り)
sinobu@example.ed.jp(ユーザ名の誤り)
一つ目では、exaaample.ed.jp がドメイン名です。このドメイン名が存在しない場合、送信側メールサーバはDNSなどを利用して配送先を調べる段階で、配送できないことを検出します。
二つ目のように、ドメイン名が正しく、受信者のユーザ名だけが間違っている場合には、送信側メールサーバは配送先のメールサーバを調べられます。その後、受信側メールサーバがユーザの存在を確認し、宛先が存在しないことを検出する場合があります。
このように、メールが届かない原因を考える際には、ドメイン名とユーザ名のどちらが間違っているのかを区別することが重要です。
DNSのキャッシュと障害
DNSには、名前解決の結果を一時的に保存するキャッシュという仕組みがあります。
以前に調べたIPアドレスなどを保存しておけば、同じ名前について毎回DNSサーバへ問い合わせる必要がなくなり、名前解決にかかる時間やサーバへの負荷を減らすことができます。
DNSの情報には、通常、TTL(Time To Live)と呼ばれるキャッシュの有効期間が設定されています。
例えば、WebサーバのIPアドレスを変更した場合、権威DNSサーバの情報を更新しても、利用者側のキャッシュに古いIPアドレスが残っていることがあります。そのため、キャッシュの有効期間が終了するまでは、古いIPアドレスが使われ、新しいWebサーバへ接続できない場合があります。
つまり、DNSの登録情報を変更しても、すべての利用者に直ちに反映されるとは限りません。
また、DNSに障害や設定の誤りがあると、ドメイン名からIPアドレスを調べられず、Webページにアクセスできなくなることがあります。
例えば、ドメイン名を指定するとWebページを開けないが、同じサーバのIPアドレスを直接指定すると開ける場合には、DNSによる名前解決に問題がある可能性が高いです。
ただし、実際のWebサイトでは、一つのIPアドレスで複数のサイトを提供している場合や、HTTPSの証明書による確認が行われる場合があるため、IPアドレスを直接指定しても必ず同じページが表示されるとは限りません。