合同会社小村ソフト
第 3 章

再帰問い合わせ — どうやって答えに辿り着くか

利用者からは再帰、外向きには iterative。キャッシュあり・なしの差を手で追う。

利用者からは再帰、外向きには iterative

第 2 章では委任により親ゾーンと子ゾーンに責任が分かれる仕組みを見ました。本章では、その階層構造を実際にどう辿って最終答えに届くか、問い合わせの流れ を追います。

ブラウザやアプリは、通常 root サーバへ直接問い合わせません。利用者側から見えるのは再帰リゾルバ(recursive resolver)であり、「最終答えを返してください」 と依頼する相手です。

一方で、再帰リゾルバが外へ出るときは root → TLD → 権威サーバと iterative(イテレーティブ = 反復的)に辿っていく ことが多いです。この二層を分けて考えると、recursive(再帰的)と iterative(反復的)の言葉が整理しやすくなります。

root、TLD、権威サーバへ段階的に進む再帰問い合わせの図

利用者からは『一度で解決してほしい』再帰要求でも、裏では referral を受け取りながら段階的に辿ります。

小問 3-1 — フルミス時の経路を手で追う

まずは cache miss の基本経路を確認します。

Q11. 再帰リゾルバのキャッシュが空のとき、www.example.com A を辿る代表的な流れとして最も近いものはどれですか。

Q12. 再帰リゾルバがすでに .com の NS と example.com の NS を有効なキャッシュとして持っているが、www.example.com A 自体は持っていないとします。この最終 A を得るために追加で必要な外向き問い合わせは何回ですか。

シミュレータで辿る

下のシミュレータは www.example.com A を引く例です。キャッシュヒットを切り替えると、外向き問い合わせが一気に減ることが分かります。小問では、この差を数字で数えます。

シミュレータの動作概要(テキスト版): キャッシュが空のフルミス時、再帰リゾルバはまず root サーバへ問い合わせて .com の NS への referral を受け取ります。次に .com の TLD サーバへ問い合わせて example.com の NS への referral を得ます。最後に example.com の権威サーバへ問い合わせ、www.example.com A の最終 RRset を得ます。これで外向き問い合わせは合計 3 回。一方、再帰リゾルバが該当 RRset をすでに有効なキャッシュとして持っている場合、外向き問い合わせは 0 回 で済みます。途中段階のキャッシュ(root / TLD / 親ゾーンの NS)が一部だけ残っているときは、その分だけ問い合わせ回数が減ります。

小問 3-2 — キャッシュがあると何回減るか

同じ resolver を共有するとき、1 回目と 2 回目以降の差が非常に大きくなります。

Q13. 再帰リゾルバに有効なキャッシュが残っているとき、同じ名前・型に対して root / TLD / 権威サーバへの外向き問い合わせはどうなりますか。

Q16. 20 人の利用者が同じ再帰リゾルバを共有し、最初の 1 回だけフルミス、その後の 19 回は TTL の内側で同じ www.example.com A を引いたとします。root / TLD / 権威サーバへの外向き問い合わせは合計何回ですか。

referral と authoritative answer を区別する

root や TLD は、たいてい最終 A / AAAA を返しません。代わりに「その先はこの NS 群へ行ってください」という referral を返します。これに対して権威サーバは、自分の担当ゾーンの正規データを authoritative answer として返します。

返答の種類意味見え方
referral自分は最終答えを持たないが、次の行き先は知っているAUTHORITY / ADDITIONAL に NS や glue が見える
authoritative answer自分の担当ゾーンの正規データを返す最終 RRset が ANSWER に載る
cached answer以前得たデータを TTL のあいだ再利用する利用者からは最終答えに見えるが、権威直送とは限らない

また、名前が存在しない NXDOMAIN と、名前はあるが特定の型だけない NODATA 相当の状態も分けて考える必要があります。

小問 3-3 — referral と NXDOMAIN / NODATA を見分ける

トラブルシュートでは『名前がないのか、型がないのか』を分けるだけで前に進みます。

Q14. root や TLD サーバが返しやすいものとして最も適切なのはどれですか。

Q15. 名前 mail.example.com 自体は存在し、MX だけあって A はないとします。このとき mail.example.com A を引いた結果に最も近い説明はどれですか。

この章で持ち帰ること

  • 利用者は 再帰リゾルバに最終答えを依頼 する
  • 再帰リゾルバは root → TLD → 権威サーバへ iterative に辿る
  • キャッシュヒット時は、その長い道のりが 丸ごと省略 される