テレビのアニメはどこから来る? / 第5話

第5話:イトは、よく似た名前の近道を閉じた|DNSは誰に聞く?

ピコルート第5話。よく似た二つのドメイン名のうち、一方だけがキャッシュから即答を返す。イトは速い近道を閉じ、完全な名前を確かめてDNSの案内を待つ。名前解決の流れを選択の結果から学びます。

DNSドメイン名名前解決IPアドレス10分更新

答えは、一秒で返ってきた。

金色のIPアドレス札。

その下に、緑の文字が光る。

キャッシュに記録あり。すぐ配送できます。

イトが小箱へ巻こうとした瞬間、ユイが名前札を二枚に分けた。

video.blue.example.

video-blue.example.

速い答えが返ったのは、下の名前だった。

イトが届けたいのは、上の名前だ。

配送許可は一回。残り五十秒。

点一つと横線一つは、同じ名前ではない

二枚は、離れて見るとよく似ている。

けれどドットで区切ると、構造が違う。

video.blue.example. は、video、blue、exampleという三つのラベルが並ぶ。

video-blue.example. は、video-blueとexampleという二つのラベルだ。

RFC 1034では、DNSの名前空間を木構造として扱い、ドメイン名を対象ノードからルートまでのラベル列で表す。表示では、具体的な側からルートに近い側へ、左から右に書く。

末尾のドットは、ルートまで含む完全な名前であることを示す。

イト

見た目が近くても、棚の場所は別なんだ

ユイ

点で区切った一つずつが違えば、問い合わせる名前も変わります

ピコ

そう。DNSは『だいたい似ている方』を探す仕組みではないよ

ここで使う .example は、説明と練習のための特別な名前だ。RFC 6761で例示用として予約されており、この物語の練習問い合わせを公開DNSへ送ってはいない。

DNSは、一冊の住所録ではない

イトは、上の名前札を配送門へ直接入れた。

門は動かない。

ドメイン名は人が扱いやすい名前だが、IPパケットの宛先欄へそのまま入れるものではない。

名前に結びつく情報を、DNSへ問い合わせる必要がある。

ピコが三つの役を見えるようにした。

  1. 端末から名前を受け取る リゾルバー
  2. 問い合わせを引き受け、答えか次の案内を探す 再帰リゾルバー
  3. 担当範囲の正式なデータを持つ 権威サーバー

実際の構成や呼び方には細かな違いがある。

この街では、端末側の入口、問い合わせを進める役、担当データの出どころを三つのカウンターに分けている。

RFC 1034は、DNSを分散して管理される名前空間、名前サーバー、リゾルバーから成る仕組みとして説明している。一台のサーバーが世界中の答えを全部持つ設計ではない。

速い答えは、別の名前には正しかった

緑のキャッシュ箱を開くと、記録の見出しが見えた。

video-blue.example.

答えは有効期限内だ。

偽物でも、壊れた記録でもない。

ただし、イトが尋ねたい名前とは違う。

キャッシュは、以前得たDNSの情報を一定時間再利用し、問い合わせを速くする。

DNSのリソースレコードにはTTLという値があり、キャッシュに残せる時間の目安になる。RFC 1035は、TTLをリソースレコードを再照会せずキャッシュできる時間として定めている。

イト

近道が悪いんじゃなくて、別の名前の近道だったんだ

マコト

早さだけを見て、質問を取り違えたらいけないね

ユイ

キャッシュを見るときも、何の名前に対する答えかが先です

残り三十八秒。

イトが選べる三つの道

案内台に、三つの方法が現れた。

  1. 一秒で返った別名のキャッシュを使う
  2. 第4話で覚えたIPアドレスを直接使う
  3. 完全な名前を確かめ、その名前でDNSへ問い合わせる

一つ目なら速い。けれど、別の名前に結びついた宛先だ。

二つ目ならDNSを待たなくていい。しかし、第4話で見たように、IPアドレスは現在も同じとは限らない。

三つ目は時間がかかる。残り時間内に、担当の答えへ着く保証はない。

イトは二枚の名前を、ドットごとに指で区切った。

上は三つのラベル。

下は二つのラベル。

「ぼくが聞きたいのは、上の完全な名前」

イトは、速い別名キャッシュのふたを閉じた。

video.blue.example. の名前札だけを、リゾルバーへ渡した。

イトが似た形の別名キャッシュ箱を閉じ、ドットで三つに区切られた正しい名前札だけを青いDNSリゾルバーの入口へ渡している
速い答えではなく、どの完全な名前に対する問い合わせかを確かめて渡す。

答えではなく、次の案内が返る

再帰リゾルバーは、まず自分のキャッシュを探した。

対象の完全な名前に使える答えはない。

そこで、名前空間の上から順に案内をたどる。

最初のカウンターは、最終IPアドレスを返さなかった。

代わりに、次に尋ねる担当を示す。

二つ目も、その下の担当を示す。

このように「答えはここではなく、次はこちら」と返す案内を リファラル と呼ぶ。

再帰リゾルバーは利用者の代わりに、その先へ問い合わせを進めた。

残り二十六秒。

example側の案内。

残り十八秒。

blue.exampleを担当する案内。

残り十一秒。

対象名のデータを持つ権威サーバーへ着いた。

権威サーバーは、自分が担当する範囲の情報から答える。

今回求めたのは、IPv6アドレスに結びつく AAAAレコード だ。

IPv4アドレスなら、主にAレコードを使う。

DNSはIPアドレス以外にもさまざまなリソースレコードを扱うが、今日は名前から配送先を得るところだけを見る。

残り四秒のAAAA札

残り四秒。

権威サーバーから、金色のAAAA札が返った。

札の見出しは、イトが送った完全な名前と一致している。

再帰リゾルバーは答えを端末側へ返し、TTLと一緒にキャッシュへ控えた。

イトは、そのAAAA札を青い映像パケットへ巻く。

配送門が開いた。

パケットは video.blue.example. の練習受取台へ届いた。

一秒で答えた video-blue.example. の道は、閉じたままだ。

夕焼けの一枚は、上の名前に結びついた受取台だけに現れた。

時計がゼロになった。

イトは、閉じた別名キャッシュと、届いた映像を見比べた。

イト

速い答えより先に、何を聞いた答えかを見る

ピコ

うん。DNSは名前を勝手に似たものへ直す案内じゃない

ユイ

完全な名前を問い合わせ、必要なら案内をたどり、担当のデータから答えを得るんですね

DNSが答えたあとにも、残ること

今回のAAAA札にもTTLが付いている。

期限内なら、同じ問い合わせへキャッシュから早く答えられる場合がある。

期限が過ぎれば、もう一度現在の情報を確かめる。

ただし、DNSで名前がIPアドレスへ正しく結びついたことだけで、その相手の内容や安全性まで保証されるわけではない。

また、DNSが返したのは宛先の情報だ。

「アニメの続きを送ってほしい」という依頼までは入っていない。

練習受取台には、夕焼けの一枚だけがある。

その先の映像は、まだ届かない。

イトの前に、空の封筒が現れた。

宛先は書ける。

中身は空だ。

「住所が分かっただけじゃ、何をしてほしいか伝わらない」

イトは空の封筒を開いた。

「次は、この中にお願いを書くの?」

封筒の向こうで、リクエストとレスポンスを分ける二つの扉が開いた。

次回:お願いの言葉はどう届く?

DNSでは、ドットで区切られた完全な名前を問い合わせる。

リゾルバーはキャッシュを使い、必要なら案内をたどって担当のデータからAやAAAAなどの答えを得る。

速さより先に、どの名前に対する答えかを確かめる。

次回、ピコルート第6話。

お願いの言葉はどう届く?

DNSの基本を図でも整理するなら、DNSの仕組みへ進めます。

この物語を、解説で深める

第5話で生まれた疑問を、解説記事で少し深く見ていきます。物語で感じた不思議さを残したまま、言葉と仕組みを順番に整理しましょう。

DNSの仕組み|名前解決の問い合わせを順番にたどるを読む