BOOTPとは

 BOOTP(ブートストラッププロトコル)は、DHCPの前に開発されたホストを構成するためのプロトコルです。

BOOTPは、1985年のRFC 951で定義されています。

 DHCPは、BOOTPに改良を加えたプロトコルで、ホストを構成するサービスとしてのBOOTP の限界を解決しています。30を超える設定パラメータがサポートされています。

 クライアントとサーバー間の通信では、UDPポートを使用します。クライアントからBOOTPおよびDHCPサーバへは、UDPのポート番号67を使用し、BOOTPおよびDHCPサーバからクライアントへは、UDPのポート番号68を使用します。このUDPポートの67番と68番は、現在でもBOOTPポートと呼ばれています。

BOOTPとDHCPの大きな相違点は3つあります。まとめると下表のようになります。

DHCPのメッセージの主要項目
BOOTPDHCP
スタティックマッピングダイナミックマッピング
恒久的な割り当てリース
4つの設定パラメータのみをサポート30を超える設定パラメータをサポート
DHCPのメッセージの主要項目

 DHCPでは、クライアントへIPアドレスをダイナミックに割り当てることができますが、BOOTPでは、スタティックな割り当てを行います。

 BOOTPでは、クライアントからIPアドレスの要求があると、あらかじめBOOTPサーバ上で定義されているテーブルからクライアントのMACアドレスに関連付けられたIPアドレスを探し出し、それをクライアントに割り当てます。

 また、DHCPでは一定期間、クライアントにIPアドレスを割り当て、期間が過ぎると別のクライアントに割り当てることができますが、BOOTPでは、IPアドレスは、MACアドレスに関連付けられているため、別のクライアントにIPアドレスを割り当てることはできません。

 DHCPでは、WINSやドメイン名など、30を超える設定パラメータがサポートされていますが、BOOTPでは、4つの設定パラメータだけがサポートされています。

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

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

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

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

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

BOOTPメッセージの主要の項目を下表に示します。

BOOTPのメッセージフォーマット
情報名説明
CIADDRクライアントIPアドレス、クライアントがBOUND、 RENEW、REBINDING状態の場合に用いられる。
YIADDRDHCPサーバが割り当てるクライアントのIPアドレス(自分のIPアドレス)
SIADDRDHCPサーバのIPアドレス
GIADDRDHCPリレーエージェントのIPアドレス。DHCPサーバはGIADDRを見てクライアントの所属するサブネットを識別する。
CHADDRクライアントのMACアドレス
BOOTPのメッセージフォーマット

BOOTPによるネットワークブートの仕組み

 コンピュータがまだ、非常に高価だった時、ハードディスクを持たない安価なディスクレスパソコンが企業でよく利用されていました。今でもハードディスクをユーザから物理的に切り離すことで情報漏洩の防止が期待できることから、また脚光を浴びています。

 特にコンピュータに最低限の機能しか持たせないでサーバ側でアプリケーションソフトやファイルなどの資源を管理するシンクライアントのシステムは注目を集めています。

ディスクレスのクライアントをネットワーク経由でブートして使用する方法には、いくつか方法があります。

  • NICで起動してネットワーク経由でブートする方法
  • DOSで起動してネットワークでブートする方法
  • BOOTPに対応したカーネルを使用しフロッピーから起動する方法

 ここでは、今となっては対応しているNICが限られますがNICで起動してネットワーク経由でブートする仕組みを紹介して行きます。採用するにあたって使用するネットワークカードが対応しているかどうかが常に問題になります。

 ディスクレスコンピュータの場合、ハードディスクがないので、ローカルでブート情報を持つことができません。OSがないわけですから自力では起動することができません。

 そこで、ディスクレスコンピュータはネットワークを経由してブートを行う必要が生じじてきます。その時に使われるのがBOOTPです。

 BOOTPは、起動時にブート情報をサーバに対して要求し、ブート情報を転送するという難しい局面で使用され、次のような手順でやり取りが行われます。

  • クライアントに電源がONになるとローカルのROMからUDP手順がロードされます。
  • UDPを通じて、サーバにブート情報を要求します。
  • サーバ側はブート情報をTFTPを利用して転送します。

 ここで使用されるTFTPは、FTPの簡易版に当たるプロトコルで、認証などの機能がない分、軽快に動作するプロトコルです。UDPの69番のポートが使用されます。