この特集のトップページへ
>
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パケットの構造 |
- 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の略。次の値が設定される。 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セクション
- 追加情報(可変長)。
5/13 |