メインコンテンツまでスキップ

5. リソースレコードセット (Resource Record Sets)

リソースレコードセット (RRSet) とは、同じ NAME、CLASS、TYPE を持つすべての リソースレコード (RR) の集合です。たとえば、あるドメインの MX レコードの集合は RRSet であり、そのドメインの A レコードの集合は別の RRSet です。

あるゾーンには、名前・クラス・タイプが同じだが TTL が異なる RR が含まれ、それら が単一の RRSet として扱われる場合があります。これは問題です。なぜなら RRSet は 単一の実体として扱われるため、個々の RR の TTL は同じでなければならないからです。

RRSet の取り扱い規則は以下のとおりです:

5.1. RRSet からの RR の送信 (Sending RRs from an RRSet)​

サーバーが応答で RRSet を送信する際は、その RRSet 内のすべての RR を送信しなければ なりません (must)。サーバーが部分的な RRSet を送信する場合 (たとえばメッセージ サイズの制限により)、TC ビットを設定しなければなりません (must) (第 9 節参照)。

5.2. RRSet 内の RR の TTL (TTLs of RRs in an RRSet)​

RRSet 内のすべての RR の TTL は同じでなければなりません (must)。サーバーが TTL の 異なる RRSet を受信した場合、RRSet 内で最も小さい TTL を持つ RR の TTL を、その RRSet の TTL として使用しなければなりません (must)。これは、RRSet 内のすべての RR が同じ TTL を持つことを求めていた RFC1035 からの変更です。

なお、これは本書の前身 (RRSet 内の RR の TTL がすべて同じでない場合、RRSet の TTL は 未定義であるとしていた) からの変更である点に注意してください。

5.3. DNSSEC の特殊な場合 (DNSSEC Special Cases)​

DNSSEC [RFC2065] は RRSet の取り扱いに関するいくつかの特殊な場合を導入します。 特に、RRSet をカバーする SIG レコードは、それがカバーする RRSet と同じ TTL を持た なければなりません (must)。これは、SIG レコードとそれがカバーする RRSet が一緒に キャッシュされ、一緒に期限切れになるようにするために要求されます。

5.4. RRSet の受信 (Receiving RRSets)​

サーバーが RRSet を受信した場合、その RRSet 内のすべての RR の TTL が同じであるか 確認しなければなりません (must)。異なる場合は、最も小さい TTL をその RRSet の TTL として使用しなければなりません (must)。

リゾルバは、TTL がゼロの RRSet をキャッシュしてはなりません (must not)。すなわち、 TTL がゼロの RRSet はキャッシュされてはなりません。

5.5. RRSet の送信 (再考) (Sending RRSets (reprise))​

サーバーが応答で RRSet を送信する際は、その RRSet 内のすべての RR を送信しなければ なりません (must)。サーバーが部分的な RRSet を送信する場合 (たとえばメッセージ サイズの制限により)、TC ビットを設定しなければなりません (must) (第 9 節参照)。 TC ビットが設定されていない限り、サーバーは RRSet を複数のメッセージに分割しては ならず (must not)、クライアントも TC ビットが設定されていない限り複数のメッセージ から RRSet を再構成してはなりません (must not)。