この特集のトップページへ
Chapter 6:Dynamic DNS 〜DNSとDHCP〜

6.3.2 Dynamic DNSパケット
 次に,Dynamic DNSパケットの構造を示す。Dynamic DNSパケットは,オペレーションコード(OPCODE)が5,つまりUPDATEになっている(Fig.6-2)。通常のDNSパケットと同様,5つのセクションに分かれており,Headerセクションも同じように必ず存在する。また,Dynamic DNSパケットの場合,Zoneセクションも必ず存在する。それ以外は,パケットの内容によって存在しないこともある。

Fig.6-2 Dynamic DNSパケットの構造
fig.6-2
  Headerセクション
 Headerセクションには,Table 6-2に示す情報が含まれている。

Table 6-2 Dynamic DNSパケットのHeaderセクションに含まれる情報

フィールド 意味
ID 識別子。問い合わせるプログラムが生成した16ビットの数値
QR メッセージが照会であるのか,応答であるのかを表すフィールド。0のとき照会,1のとき応答
OPCODE オペレーションコード。Dynamic DNSパケットであれば,5(UPDATE)である
Z 予約。すべて0にセットする
RCODE Response Codeの略。次の値が設定される。
  • 0:エラーなし
  • 1:フォーマットエラー
  • 2:DNSサーバーの障害により回答不可
  • 3:照会されたドメイン名が存在しない(問い合わせたリソースレコードが含まれるゾーンに対して,権威を有するDNSサーバーのみがこの戻り値を返す)
  • 4:サポートされていない照会
  • 5:拒否
  • 6:登録しようとしているのと同じ名前が存在している
  • 7:リソースレコードセットが存在している
  • 8:リソースレコードセットは存在していない
  • 9:DNSサーバーは,「Zoneセクション」で示されたゾーンに対する権威を持たない
  • 10:要求された名前は「Zoneセクション」で示されたゾーンに含まれていない
ZOCOUNT 後述する「Zoneセクション」に含まれているリソースレコードの数
PRCOUNT 後述する「Prerequisiteセクション」に含まれているリソースレコードの数
UPCOUNT 後述する「Updateセクション」に含まれているリソースレコードの数
ADCOUNT 後述する「Additionalセクション」に含まれている追加情報の数
 
  Zoneセクション
 このメッセージによってUpdateするゾーンの名前。
 
  Prerequisiteセクション
 リソースレコードをアップデートする場合に必要となる条件を表す。
 クライアントは,Dynamic DNSによりUpdateするとき,Prerequisiteパケットを送信して,登録しようとしているリソースレコードがすでにDNSに登録されているかどうかを確認する。もしすでに登録されていれば,Prerequisiteパケットによって,登録されているリソースレコードの必要条件のみを更新し,タイムスタンプを変更することができる。必要条件のみを更新するパケットには,Prerequistesセクションは含まれているが,Updateセクションは含まれていない。そのため,ゾーン情報は変更されない。
 重複するリソースレコードが存在しなければ,そのリソースレコードはUpdateされる。ただし,Updateパケットに含まれるPrerequisiteセクションに示された条件が満たされない場合は,Updateされない。Prerequisiteセクションに示される必要条件は,CLASSとTYPE,RDATAに示される値がどのようになっているかで意味が異なっており,Table 6-3に示す5つのパターンが存在する。なお,CLASSはリソースレコードのクラスを表す。通常は1(IN)であり,この場合はInternetクラスを意味する。254はNONEを,255はANYを意味する。TYPEはリソースレコードの種類であり,AレコードやCNAMEレコードなどを表す。RDATAはリソースレコードのデータであり,たとえばAレコードであれば,IPアドレスがデータとなる。

Table 6-3 Prerequisiteセクションに示される必要条件

意味 CLASS TYPE RDATA 解説
Name is in use ANY ANY なし Zoneセクションで指定されたゾーンとクラスと一致しているリソースレコードが,少なくとも1つは存在していなければならない
RRset exists(value independent) ANY リソースレコード なし 名前と種類が一致しているリソースレコードが,Zoneセクションで指定されたゾーンとクラスに少なくとも1つは存在していなければならない
Name is not in use NONE ANY なし 指定した名前のリソースレコードは,いかなる種類であっても存在していてはならない
RRset does not exit NONE リソースレコード なし 名前と種類が一致するリソースレコードが,Zoneセクションで指定されたゾーンとクラスに存在していてはならない
RRset exists(value dependent) zone rrset リソースレコード 指定したリソースレコードの情報と同じものが存在していなければならない
 
  Updateセクション
 この更新によって追加および削除されるリソースレコードの情報。削除する場合は,TTLとRDLENGTH(Resource Data Length:リソースレコードのデータであるRDATAの長さを表す)が0で,CLASSがANYであるパケットを送信する。
 
  Additionalセクション
 追加情報(可変長)。
PREV 5/13 NEXT