PR

Step3 パケットの中を覗いてみよう
オプション部分に情報が
詰まった不思議なパケット

 基本編最後のStep3ではDHCPのパケットの中身を確認しておこう。

図7 DHCPパケットの中身
DHCPはBOOTP(ブートピー)というプロトコルを拡張したため,パケットの構造はBOOTPとまったく同じだ。設定情報は,BOOTPパケットのオプション領域を主に使ってやりとりする。
 DHCPはUDPの上で動くプロトコルなので,IPヘッダー,UDPヘッダーがパケットの前に付いている。このUDPパケットのデータ部分にDHCPのメッセージが入る(図7[拡大表示])。大きさは500バイト程度。この中に,パソコンやDHCPサーバーのIPアドレス,DHCPサーバーが提案するIPアドレス,パソコンのMACアドレス,ID番号などを書き込むフィールドがある。

 ID番号のフィールドはパソコンが最初のDHCPディスカバー・パケットを送る際にランダムに付け,DHCP通信が完了するまで同じ値を使う。複数のパソコンのDHCP通信が入り交じっても区別できるようにするためだ。

 ただ,DHCP通信で使うフィールドは,このID番号とパソコンのMACアドレスを書くフィールドくらい。ほかはあまり使わない。つまり,DHCPパケットの主要なフィールドはほとんど活用されていないのだ。

別のプロトコルを拡張

 DHCPサーバーのIPアドレスを教えたり,サブネット・マスクの値,デフォルト・ゲートウエイやDNSサーバーのIPアドレスなどの設定情報を記述するフィールドは,図7[拡大表示]で示したDHCPパケットのオプション部分にある。

 オプションというと「使っても使わなくてもいい」ような気がするが,DHCPではこのオプション部分を使うことが必須になっている。こうした不可解なことになっているのは,DHCPがBOOTP(ブートピー)というプロトコルを基に拡張されたためだ。DHCPパケットの構造はBOOTPとまったく同じである。

 BOOTPとは,もともとディスクレス・クライアントがネットワークに自動的に接続できるようにするために決められたプロトコル。BOOTPが考案された1985年ころは,設定情報としてIPアドレスさえあればよかった。しかし,現在ではこれだけではやりとりする情報が足りなくなり,BOOTPではほとんど使っていなかったオプションの部分でさまざまな設定情報をやりとりするように改良したのである。

 このオプション部分は,オプション番号,コード長,データという三つのフィールドを一組にしたものが,最大255個まで入れられる。DHCPでは,サブネット・マスクやデフォルト・ゲートウエイのIPアドレスなどといったそれぞれの設定情報に対してオプション番号が決められている。

 例えば,サブネット・マスクのオプション番号は1,デフォルト・ゲートウエイのIPアドレスは3,DNSサーバーのIPアドレスは6,設定情報のリース期限は53という具合だ。