BOOTP(ブートストラッププロトコル)とは
Bootstrap Protocol(BOOTP)は、
コンピュータネットワークに接続された
クライアントが、
IPアドレス、
ホスト名、
サブネットマスクなどのネットワーク設定情報を自動的に取得するためのプロトコルです。RFC 951で定義されており、主に
オペレーティングシステムが起動する際に利用されます。BOOTPは、ネットワークに接続された機器が起動時に必要なネットワーク設定を自動的に行うことを可能にし、ネットワーク管理を効率化します。
BOOTPの概要
クライアントがネットワークに接続され、電源が投入されて
オペレーティングシステムが起動すると、システムソフトウェアはBOOTPメッセージをネットワークに
ブロードキャストで送信し、
IPアドレスの割り当てを要求します。BOOTPサーバは、この要求に基づいて、管理者によって設定された
IPアドレスプールから
IPアドレスを割り当てます。BOOTPは転送プロトコルとしてUDPを使用し、サーバはポート番号67で
クライアントからの要求を待ち受け、
クライアントはポート番号68でサーバからの応答を受信します。これらのポート番号はDHCPと同じです。
BOOTPは
IPv4でのみ動作します。歴史的には、
IPアドレスの割り当てだけでなく、ディスクレスノードが
ブートイメージのネットワーク上の場所を取得するためにも使用されました。企業環境では、BOOTPを使って、事前に設定された
クライアントの
ブートイメージを新しいPCに展開することも行われました。
初期のネットワーク接続を確立するためには、ネットワークカードの製造元は
ブート用の
フロッピーディスクを用意する必要がありました。しかし、その後、インターフェイスカードのBIOSやオンボードネットワークアダプタを備えたシステムボードにBOOTPが組み込まれ、直接ネットワーク
ブートが可能になりました。
BOOTPからDHCPへ
BOOTPは、
IPアドレスのリース機能を持たないため、一度割り当てられた
IPアドレスは固定となります。この制限を克服するために、リース機能を追加した
Dynamic Host Configuration Protocol(DHCP)が開発され、BOOTPは次第にDHCPに置き換えられました。しかし、現在でもBOOTPの一部はDHCPプロトコルにサービスを提供するために使用されており、DHCPサーバは従来のBOOTP機能も提供しています。
BOOTPの歴史
BOOTPは、1985年9月に公開されたRFC 951で最初に定義されました。これは、1984年6月にRFC 903で公開されたReverse
Address Resolution Protocol(RARP)を置き換えるものでした。RARPがBOOTPに置き換えられた理由は、RARPが
リンク層プロトコルであったため、多くのサーバープラットフォームでの実装が困難であり、かつサーバーを個々の
サブネットに配置する必要があったからです。
BOOTPは標準IPルーティングを使用してローカルネットワークからBOOTPパケットを転送するリレーエージェントの技術を導入し、1つのBOOTPサーバーで多数の
サブネット上のホストにサービスを提供できるようにしました。
BOOTPの動作
クライアントとサーバが同じネットワーク上にある場合
1. BOOTPサーバは、
MACアドレスと
IPアドレス、
ホスト名の対応表を事前に用意します。
2. ネットワークに接続された機器は、自身の
MACアドレスを
ブロードキャストで送信します。
3. BOOTPサーバは、受け取った
MACアドレスに対応する
IPアドレスを対応表から検索し、
クライアントに送信します。
DHCPのような動的な
IPアドレスの配布は行えません。BOOTPサーバはUDPポート67でパッシブオープンコマンドを発行して
クライアントを待ち受け、
クライアントは起動時にポート68でアクティブオープンコマンドを発行します。このメッセージはUDPユーザデータグラムにカプセル化され、UDPユーザデータグラムはIPデータグラムにカプセル化されます。
クライアントは送信元アドレスにオール0(0.0.0.0)、宛先アドレスにオール1(255.255.255.255)を使用します。
クライアントとサーバが異なるネットワーク上にある場合
BOOTPリクエストは
ブロードキャストで送信されるため、ルータを通過することができません。この問題を解決するために、リレーエージェントが導入されました。
1. リレーエージェントは、BOOTPサーバのユニキャストアドレスを事前に知っており、ポート67で
ブロードキャストメッセージを待ち受けます。
2. リレーエージェントが
ブロードキャストパケットを受信すると、メッセージをユニキャストデータグラムにカプセル化し、BOOTPサーバに要求を送信します。
3. ユニキャストパケットはルータを通過することができ、パケットがBOOTPサーバに到達します。BOOTPサーバはリレーエージェントに応答を送信します。
4. リレーエージェントは、BOOTPサーバからの応答を受け取ると、それを
クライアントに送信します。
関連技術
外部リンク