## page was renamed from DNS/返答/DJBの分類 ## page was renamed from DNS/返答/DJB == DNS/返答/DJBの分類 == <> <> DJBの分類にもどづき説明を試みる。 [[DNS/実装/djbdns]]の付属文書 http://djbdns.qmail.jp/djbdns/notes/type.html 返答をしないサーバーとか、エラー返答は別途扱う。 [[DNS/返答/分類]] も参照。 -- ToshinoriMaeno <> == 5種類の DNS 返答 == 正常な DNS 返答を受け取るとキャッシュサーバは 以下の5つの情報のどれか一つだけを学習する。 Rcode NoError / NXDOMAIN 1. The query was not answered because the query name is an alias. I need to change the query name and try again. 「照会名が別名であったため問合せに答えは得られなかった。 照会名を変えてもう一度試みる必要がある。」 {{{ 返答のanswer sectionに照会名に対するCNAMEレコードが含まれていて、 『かつ』CNAMEがquery typeとマッチしないときに当てはまる。 }}} RCODEは 0と3とがあることが分かっている。(他の値については知られていない。) 「照会名」をownerにもつCNAMEレコード以外は無視すべきである。-- ToshinoriMaeno <> 2. The query name has no records answering the query, and is also guaranteed to have no records of any other type. 「照会名に対して答えるべきレコードを持っていない。 また、他のいかなるタイプのレコードも存在しないことが保証されている。」 {{{ これは返答コードがNXDOMAINであって、#1があてはまらない時に適用される。 }}} この情報をキャッシュしてよい時間は応答のauthority sectionにある SOAレコードの内容(もしあれば)に依存する。 3. The query name has one or more records answering the query. 「照会名に対して答レコードが(複数可)あった。」 RCode NoError {{{ 返答のanswer sectionに照会名とタイプの合致するレコード(複数可)があるときに適用される。 ただし、#1 が当てはまらず、#2 も当てはまらないとき。 }}} 4. The query was not answered because the server does not have the answer. I need to contact other servers. 「サーバが答を持っていないので、問合せには答えてもらえなかった。 別のサーバにコンタクトする必要がある。」 {{{ 返答の authority section に NS レコードが含まれていて、 authority section に SOA レコードが含まれていないときに適用される。 ただし、#1, #2, #3 のどれも当てはまらないときに限る。 RCode NoError }}} authority section の NS レコードに "other servers”の名前がある。 (訳注)answer sectionがレコードを含むケースは#3に分類される。 5. The query name has no records answering the query, but it may have records of another type. 「照会名は答レコードをもたない。 しかし、別タイプのレコードはあるかもしれない。」 #1, #2, #3, #4 のどれもが当てはまらない場合にあたる。 RCode NoError この情報をキャッシュしてよい時間は 返事のauthority section内のSOA レコードの内容(もしあれば)に依存する。 ---- この手順は得られる情報が少ない割に、信じがたい位多大な手間のかかる(誤り易い)解析を必要とする。 根底にはDNSが人間にとって見やすい形式で情報を宣言するよう 設計されていて、 もっとも簡単な可能なやり方で 重大な操作をサポートするように設計されてないことに問題がある。 == NXDOMAINに関する警告: == NXDOMAIN は 照会ドメインにサブドメインが存在しないことを保証することは RFC 1034 と RFC 1035 から明らかである。 例えば、ns.heaven.af.milに対して NXDOMAIN があったら、 a.ns.heaven.af.mil と b.ns.heaven.af.mil とが存在しないと結論できる。 あるサーバがa.ns.heaven.af.mil と b.ns.heaven.af.mil に対するレコードを持ち、 ns.heaven.af.mil に対するレコードを持たないなら、 NXDOMAINではなく、zero-records (#5) 返答を送る。 『にもかかわらず』、RFC 2308 ではドメインが存在しているときでさえ、 照会名に対してはいかなるタイプのレコードも存在しないことを意味する ことに NXDOMAIN を返事することを認めた。 そこで、相互運用上の破滅を引き起こさぬために、 キャッシュとしては上の推論をしないようにすることが必須である。 == まとめと命名 == 参照の便のため、上の5種類の返答に名前をつけておく。-- ToshinoriMaeno <> それぞれの例があると理解の助けになるだろう。 1. CNAME返答 2. NXDOMAIN返答 3. 有効返答 4. 参照返答 (あえて、委任返答とは呼ばない) 5. NORECORD返答 -- ToshinoriMaeno <> ゾーンサーバからの返答がかならずこれらのどれかに分類できるのかは疑念が残る。  分類できないこと自体がなんらかの利用法の誤りを示していそうな気もする。 -- ToshinoriMaeno <>