第16章 BOOTP:ブートストラップ・プロトコル Tomomi@ECN
1 イントロダクション ディスクレス・システム 解決⇒Bootstrap Protocol RARPの利用 UDPの利用 1 イントロダクション ディスクレス・システム RARPの利用 IPアドレスしか返ってこない リンク層ブロードキャストの利用(ルータ転送不可) 解決⇒Bootstrap Protocol UDPの利用 TFTPと連携して動作
2 BOOTPパケット形式(1) Opcode(オペレーションコード):1:要求、2:応答 ハードウェア・タイプフィールド 2 BOOTPパケット形式(1) Opcode(オペレーションコード):1:要求、2:応答 ハードウェア・タイプフィールド データリンク層で扱うハードウェアタイプ 例)1: 10MbpsEthernet ハードウェア・アドレス長 オクテット数で表したハードウェアアドレスの長さ ホップ・カウント(代理サーバが利用:16.5) クライアントが0を入れる サーバまでのホップ数を、通過するルータが加える TCP/IPネットワーク上で、クライアントマシンがネットワークに関する設定をサーバから自動的に読みこむためのプロトコル。RFC 951として規定されている。BOOTPに対応したクライアントはホスト名やドメイン名、IPアドレス、サブネットマスク、DNSサーバなどを自動設定してくれるので、人力で設定する手間が省ける。
2 BOOTPパケット形式(2) トランザクションID 秒数 クライアントID サーバID 識別用ID(クライアントがランダムに設定) 2 BOOTPパケット形式(2) トランザクションID 識別用ID(クライアントがランダムに設定) 秒数 経過時間を記録 一定時間反応がない場合、サーバがダウンしたとみなす クライアントID サーバID 代理サーバの場合はゲートウェイIPアドレス
2 BOOTPパケット形式(3) クライアント・ハードウェア・アドレス ベンダー使用エリア:拡張機能用 RFC1084 に詳細
2 ポート番号 2つのポート番号 67:サーバ、68:クライアント 2 ポート番号 2つのポート番号 67:サーバ、68:クライアント サーバが応答をブロードキャストにおくれるようにするため(ただし、通常は使わない) (理由1)クライアントがエフェメラルポートを使用 他のクライアントが同じポート番号を使用していた場合、そちらでもパケットを受信してしまうから (理由2)クライアントがサーバと同じポート番号を使用 全てのサーバがブロードキャストの応答に反応してしまうから
4 BOOTPサーバの設計 クライアントは自分のIPアドレスを知らない時 最初のサーバからのARP要求への応答方法は? Ioctl要求 4 BOOTPサーバの設計 クライアントは自分のIPアドレスを知らない時 最初のサーバからのARP要求への応答方法は? Ioctl要求 クライアントのエントリをARPキャッシュにおく サーバが、IPアドレス、ハードウェアアドレス共に知っているため実行できる BOOTP応答ではなく、ブロードキャスト 迷惑なので、使用しないほうが望ましい
5 ルータを経由するBOOTP ディスクレス・ルータを利用 サーバのウェルノウン・ポート(67)で待機 リクエスト受信 5 ルータを経由するBOOTP ディスクレス・ルータを利用 サーバのウェルノウン・ポート(67)で待機 リクエスト受信 自分のIPアドレスをゲートウェイIPアドレスに設定 本物のサーバに要求を送る サーバは、中継ルータに応答を送る
6 ベンダー仕様情報 64バイトのベンダー仕様エリア マジッククッキー サーバからクライアントへ返す追加情報格納 最初の4バイト 6 ベンダー仕様情報 64バイトのベンダー仕様エリア サーバからクライアントへ返す追加情報格納 マジッククッキー 最初の4バイト IPアドレス 99.130.83.99 情報が格納含まれていることを示す