用語辞典・DNS・ドメイン

名前解決

名前解決とは

名前解決は、人が扱う名前を、IPアドレスなどアプリケーションが通信や処理に使える情報へ対応付ける一連の処理です。英語ではname resolution(ネーム・レゾリューション)と呼びます。

Web閲覧でホスト名からIPアドレスを得る処理が代表例ですが、OSの名前解決はDNSだけを使うとは限りません。端末内のホストファイル、保存済み結果、ローカルネットワーク用の仕組みなどを方針に従って参照する場合があります。

名前解決は「接続先の候補を得る」処理であり、候補への接続、暗号化、Webページ取得はその後の別工程です。表示できない原因を調べるときは、名前解決の失敗と接続後の失敗を分けます。

複数の情報源から接続候補を作り、その後に通信する調べる段階と、相手へつなぐ段階を一本に混ぜない
端末がローカル設定、OSキャッシュ、DNSの順に名前を調べ、アドレス候補を得てから接続先サーバーへ通信する図解
図1問い合わせる情報の種類が違えば、同じ名前でも別の結果になります。OSやアプリは複数のアドレス候補を受け取り、到達性や方針に応じて接続を試します。

端末は、決められた情報源を順に調べる

DNSに届く前に答えが決まることもあるどの情報源を先に使うかは、OSや組織の設定による
  1. 端末
    ホストなどの静的設定

    管理者が端末内に固定した名前とアドレスの対応を確認します。

  2. 保存
    OSやアプリのキャッシュ

    以前に得た有効な結果を再利用できるか確認します。

  3. DNS
    設定済みリゾルバー

    必要なレコード種類を問い合わせ、名前空間の管理情報から答えを得ます。

  4. 選択
    接続候補を整える

    複数のIPv4・IPv6アドレスなどを、アプリが利用できる形で返します。

図2順序や利用する仕組みは環境ごとに異なります。DNS調査ツールが正しい結果を返しても、ホストの固定値が優先されてアプリだけ別の宛先へ進む場合があります。

正引きと逆引きは、同じ表を反対から読む処理ではない

名前からアドレスなどを調べる方向は一般にforward lookup(フォワード・ルックアップ/正引き)と呼ばれます。IPv4アドレスやIPv6アドレスから名前を調べるreverse lookup(リバース・ルックアップ/逆引き)では、専用の逆引き名前空間にあるPTRレコードを問い合わせます。

正引きのA・AAAAレコードと逆引きのPTRレコードは別々に管理されるため、結果が自動的に一致するとは限りません。逆引き名がないことも、複数の名前が同じアドレスを指すこともあります。

名前を解決しても、どのサービスかはまだ別に決める

IPアドレスは通信先のインターフェースを識別しますが、Web、メール、その他のアプリを区別するにはポート番号や通信規則が必要です。URLの場合、スキームが通信方式の選択に関わり、パスやクエリは接続後のHTTP要求に使われます。

そのため、DNSへhttps://example.invalid/articles/全体を問い合わせるのではありません。DNSへ渡す中心はホスト名で、URLの他の部分は別の処理が担当します。

アドレス欄が検索欄にも見える理由

ブラウザの入力欄は、URLと一般的な検索語の両方を受け付けます。入力がURLまたはホスト名として扱えると判断すれば、そのホスト名を名前解決します。検索語だと判断すれば、選択中の検索サービスのURLへ語句を組み込み、その検索サービスのホスト名を名前解決します。

つまり、ブラウザが入力の意味を判定して処理を分岐させているため、一つの欄が二役に見えます。DNSが入力語の意味を検索して、Webページを選んでいるわけではありません。

仕様の確認資料:RFC 1034「Domain Names — Concepts and Facilities」RFC 6724「Default Address Selection for IPv6」

関連用語