ネットワークスペシャリスト DNS 再帰問い合わせと非再帰問い合わせ

再帰問い合わせと非再帰問い合わせ

再帰問い合わせ (Recursive Query)

再帰問い合わせは、DNS (Domain Name System) の問い合わせの一種で、クライアントが DNS リゾルバにドメイン名の IP アドレスを問い合わせる際、リゾルバがその回答を持っていない場合、他の DNS サーバーに対してその回答を得るために問い合わせを繰り返すプロセスです。リゾルバは最終的に回答を見つけるまで、複数の DNS サーバーに問い合わせを行います。回答を得たら、それをクライアントに返し、通常、その回答をキャッシュに保存して後続の問い合わせを効率化します。

特徴
  • クライアントは一度の問い合わせで済むため、プロセスが単純になる。
  • リゾルバが問い合わせの全責任を負う。
  • キャッシュ機能により、回答の速度が向上することがある。

非再帰問い合わせ (Non-Recursive Query)

非再帰問い合わせでは、DNS リゾルバはクライアントからの問い合わせに対して、直接回答を返します。リゾルバが回答をキャッシュに持っている場合、そのキャッシュから回答を提供します。キャッシュに回答がない場合、リゾルバはクライアントに対して、回答を得るための他の DNS サーバーの情報を提供しますが、そのサーバーへの問い合わせはクライアント自身が行う必要があります。

特徴
  • クライアントが直接または間接的に複数の DNS サーバーに問い合わせを行う必要がある。
  • リゾルバは回答をキャッシュするが、問い合わせプロセスの全てを管理するわけではない。
  • 一部の環境では、セキュリティや負荷分散のために好まれる方法。
シーケンス図
sequenceDiagram
    participant クライアント as Client
    participant リゾルバ as Resolver
    participant ルートDNS as Root DNS
    participant TLDサーバー as TLD Server
    participant 権威DNS as Authoritative DNS

    クライアント->>リゾルバ: DNS問い合わせ(www.example.com)
    Note over クライアント,リゾルバ: 再帰問い合わせ開始

    alt キャッシュに回答がある場合
        リゾルバ-->>クライアント: IPアドレスを返す
    else キャッシュに回答がない場合
        リゾルバ->>+ルートDNS: www.example.comの問い合わせ
        ルートDNS-->>-リゾルバ: TLDサーバーの情報を返す

        リゾルバ->>+TLDサーバー: www.example.comの問い合わせ
        TLDサーバー-->>-リゾルバ: 権威DNSの情報を返す

        リゾルバ->>+権威DNS: www.example.comの問い合わせ
        権威DNS-->>-リゾルバ: www.example.comのIPアドレスを返す

        リゾルバ-->>クライアント: IPアドレスを返す

    end
    Note over クライアント,リゾルバ: 回答をキャッシュする

まとめ

再帰問い合わせと非再帰問い合わせは、DNS がドメイン名を IP アドレスに解決する方法における二つの異なるアプローチです。再帰問い合わせはクライアントにとってシンプルで効率的な場合が多く、非再帰問い合わせはより制御が必要ですが、特定のシナリオでの柔軟性やセキュリティを提供します。

DNS コンポーネントの説明

クライアント (Client)

インターネット上でサービスやウェブサイトにアクセスするユーザーのコンピューターやデバイスを指します。DNS 問い合わせを開始することで、特定のドメイン名(例: www.example.com)の IP アドレスを求めます。

リゾルバ (Resolver)

クライアントからの DNS 問い合わせを受け取り、必要な IP アドレスを見つけるまで他の DNS サーバーに問い合わせを行う役割を担う DNS サーバーです。リゾルバは、通常、インターネットサービスプロバイダー(ISP)によって提供されます。

ルート DNS (Root DNS)

インターネットの DNS 階層の最上位に位置する DNS サーバーで、全てのドメイン名の最上位レベル(TLD: Top-Level Domain)への問い合わせを管理しています。ルート DNS は、TLD サーバーへの問い合わせを指示することで、ドメイン名の解決プロセスを支援します。

TLD サーバー (TLD Server)

トップレベルドメイン(例: .com, .net, .orgなど)ごとに存在し、その TLD に属するドメイン名の情報を管理する DNS サーバーです。TLD サーバーは、リクエストされたドメイン名に関する権威 DNS サーバーのアドレスをリゾルバに提供します。

権威 DNS (Authoritative DNS)

特定のドメイン名(例: example.com)に対する詳細なレコード情報(IP アドレスを含む)を保持する DNS サーバーです。権威 DNS は、そのドメイン名に関する最終的な回答を提供する役割を持ちます。

関連記事