![DNS キャッシュ - 反復 vs 再帰](https://rvso.com/image/747327/DNS%20%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%20-%20%E5%8F%8D%E5%BE%A9%20vs%20%E5%86%8D%E5%B8%B0.png)
反復 DNS アーキテクチャでは、ローカル DNS サーバーにキャッシュがあり、ルート サーバーと TLD サーバーへの接続をほとんどスキップできます。
再帰スキーマでは、ローカル DNS サーバーは 1 つの DNS サーバーに接続し、その DNS サーバーは結果を再帰的に取得し、要求されたリソースで応答します。
キャッシュの観点から見た反復 DNS と再帰 DNS の違いは何ですか?
ローカル DNS サーバーは、再帰アーキテクチャでもショートカットを使用できますか?
答え1
キャッシュの観点から見た反復 DNS と再帰 DNS の違いは何ですか?
違いはありません。権限のあるサーバーの有効期限 (TTL) とローカル ポリシーにより、レコードがキャッシュに保持され、キャッシュから提供される期間が示されます。
ローカル DNS サーバーは、再帰アーキテクチャでもショートカットを使用できますか?
ローカル DNS が転送専用 DNS でない場合は、その通りです。これは常に発生します。特定のドメインの応答を取得する方法がわかれば、情報がキャッシュ内にある間は、ルートまで再度アクセスする必要はありません。元の TTL の有効期限が切れたか、ローカル構成でキャッシュ サイズまたは TTL に制限が設定されているために、データがキャッシュから削除されることがあります。たとえば、bind
次のようになりますmax-cache-ttl
。
答え2
DNS 用語に関する標準的なドキュメントが現在存在します。
関連する定義を少し要約して並べ替えたものが以下です。
「再帰リゾルバ: 再帰モードで動作するリゾルバ。[..] [RFC4697] は、再帰リゾルバと反復リゾルバを区別しようとしました。」
「再帰モード: DNS クエリを受信し、ローカル キャッシュからそれらのクエリに応答するか、元のクエリに対する最終的な回答を取得するために他のサーバーにクエリを送信するサーバーの解決モード。」
「反復解決: ネーム サーバーに、他のサーバーでしか回答できないクエリが提示される場合があります。この問題に対処するための一般的な 2 つのアプローチは、「再帰的」アプローチ (最初のサーバーがクライアントに代わって別のサーバーでクエリを実行する) と、「反復的」アプローチ (サーバーがクライアントを別のサーバーに参照し、クライアントがそこでクエリを実行できるようにする) です。([RFC1034] のセクション 2.3 を参照してください。)
In iterative resolution, the client repeatedly makes non-recursive queries and follows referrals and/or aliases. The iterative resolution algorithm is described in Section 5.3.3 of [RFC1034]."
上記で引用した RFC 4697 には次のように書かれています。
このメモは、主に反復リゾルバの動作に関するもので
、反復リゾルバは、通常、再帰ネーム サーバーの一部として使用されます
。このメモでは、通常、そのコンポーネントに焦点が当てられるため、より正確な用語「反復リゾルバ」を使用します。このエンティティのネーム サーバーの役割について言及する必要がある
場合
、このメモで
は「再帰ネーム サーバー」という用語を使用します。違いの例として
、再帰ネーム サーバーのネーム サーバー コンポーネントは
DNS クエリを受信し、反復リゾルバ コンポーネントは
クエリを送信します。
RFC 1034 は、この点に関してさらに不明瞭であるように思われます。より正確に言えば、さらに時代遅れであるように思われます。
- 分散データベースを持つシステムでは、特定のネーム サーバーに、他のサーバーでしか回答できないクエリが提示される場合があります。この問題に対処する一般的な 2 つのアプローチは、「再帰的」アプローチ (最初のサーバーがクライアントのクエリを別のサーバーで実行) と、「反復的」アプローチ (サーバーがクライアントを別のサーバーに参照し、クライアントにクエリを実行させる) です。どちらのアプローチにも利点と欠点がありますが、データグラム スタイルのアクセスには反復的アプローチが適しています。ドメイン システムでは反復的アプローチの実装が必要ですが、オプションとして再帰的アプローチも使用できます。
あなたの質問に戻ります:
キャッシュの観点から見た反復 DNS と再帰 DNS の違いは何ですか?
実際の動作についての私の理解では (上記の定義と完全に一致しているわけではありませんが)、再帰ネームサーバーは反復クエリを実行してクライアントが要求した名前を解決するため、違いはありません。
そして
ローカル DNS サーバーは、再帰アーキテクチャでもショートカットを使用できますか?
基本的に、権威を持たないものはすべてキャッシュを持つことができ、以前に受信した応答から取得した TTL に従っている限り、プロトコルの範囲内で動作しています。
将来的には状況がさらに複雑になる可能性があることに注意してください。 などの一部の提案ANAME
や特定の実装では、ターゲットを解決できるようにするために、特定のクエリが届いた時点で権威ネームサーバーも再帰/反復的になる必要がある場合があります。