BOOTPのメッセージフォーマット

 ここでは、DHCPのメッセージフォーマットを説明して行きます。DHCPは、BOOTP(Bootstrap)の上位互換であるため、メッセージの構造は、ほとんど変わっていません。

まず、BOOTPのメッセージフォーマットを説明します。

 BOOTP、DHCPのメッセージは、ほとんど同じ形式の構造を使用しています。最終フィールドのみ異なります。BOOTPの場合、この省略可能なフィールドを「ベンダ固有領域」と呼び64バイトに制限しています。

 DHCPの場合、この領域は、可変長で「オプション」と呼び、DHCPオプション情報を伝達できるようにしています。

下図は、BOOTPのメッセージフォーマットです。

DHCPのメッセージフォーマット

DHCPはBOOTPの拡張で、メッセージフォーマット等は、ほぼそのままです。

下の図は、DHCPのメッセージフォーマットです。

DHCPの基本フレーム

DHCPメッセージの基本フレームは、下図の通りです。

DHCPメッセージの各フィールドの内容は、下記の通りです。

DHCPのメッセージの主要項目
フィールドName説明
op
(1バイト)
OpCodeパケットが要求と応答のいずれであるかを識別する。
htype
(1バイト)
ハードウェアタイプハードウェアアドレスのタイプを指定します。
hlen
(1バイト)
ハードウェア長ハードウェアアドレス長を指定する。
hops
(バイト)
ホップクライアントが0を設定し、要求がルータを経由する度に値がインクリメントされる。
xid
(4バイト)
トランザクションIDクライアントによって選択されたランダムな数字。DHCPメッセージは全て同じxidが設定される。
secs
(2バイト)
DHCPプロセスが開始されてからの経過した秒数が設定される。
flags
(2バイト)
フラグメッセージが、ブロードキャストなのかユニキャストなのかを指定する。
ciaddr
(4バイト)
クライアント
IPアドレス
Bound,Renew,Rebinding状態のように、クライアントが自身のIPアドレスを知っている時のみ使用される。
yiaddr
(4バイト)
相手先
IPアドレス
クライアントIPアドレスが、0.0.0.0の場合、DHCPサーバはオファーされたクライアントIPアドレスをこのフィールドに設定する。
siaddr
(4バイト)
サーバ
IPアドレス
クライアントがDHCPサーバのIPアドレスを知っている場合は、このフィールドにDHCPサーバのIPアドレスを設定する。それ以外では、DHCPサーバからのDHCPOFFER、DHCPACKで使用される。
giaddr
(4バイト)
ルータ
IPアドレス
ゲートウェイIPアドレス、DHCP/BOOTPリレーエージェントによって設定される。
chaddr
(16バイト)
クライアント
MACアドレス
DHCPクライアントのMACアドレス。
sname
(64バイト)
サーバ名オプションのサーバホスト名。
file
(バイト)
ブートファイル名ブートファイル名。
options
(可変長)
オプション パラメータDHCPサーバが提供するオプションのパラメータ。

 DHCPにおいては、snameやfileなどの巨大なフィールドは、あまり意味を持ちません。このフィールドは、BOOTPの拡張という立場を守るために用意されています。