Network Working Group Request for Comments: 1541 Obsoletes: 1531 Category: Standards Track |
R. Droms Bucknell University October 1993 |
1. 導入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1 関連技術. . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 問題提起. . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 要求事項. . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 用語. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 目標. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. プロトコル要約 . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1 コンフィグレーション情報格納場所. . . . . . . . . . . . . . . 9 2.2 アドレスの動的割り当て. . . . . . . . . . . . . . . . . . . . 9 3. クライアント・サーバ間プロトコル . . . . . . . . . . . . . . . 10 3.1 クライアント・サーバ - アドレスの割り当て . . . . . . . . . . 10 3.2 クライアント・サーバ - アドレスの再利用 . . . . . . . . . . . 13 3.3 リース期間の取り扱い. . . . . . . . . . . . . . . . . . . . . 15 3.4 ホストパラメータ. . . . . . . . . . . . . . . . . . . . . . . 15 3.5 複数のインタフェースを持つクライアントの運用. . . . . . . . . 16 3.6 クライアントがDHCPを使用すべき場合. . . . . . . . . . . . . . 16 4. DHCPプロトコル定義 . . . . . . . . . . . . . . . . . . . . . . 16 4.1 DHCPメッセージの生成と送信. . . . . . . . . . . . . . . . . . 17 4.2 DHCPサーバの管理. . . . . . . . . . . . . . . . . . . . . . . 18 4.3 DHCPサーバの動作. . . . . . . . . . . . . . . . . . . . . . . 19 4.3.1 DHCPDISCOVERメッセージ. . . . . . . . . . . . . . . . . . . 19 4.3.2 DHCPREQUESTメッセージ . . . . . . . . . . . . . . . . . . . 22 4.3.3 DHCPDECLINEメッセージ . . . . . . . . . . . . . . . . . . . 23 4.3.4 DHCPRELEASEメッセージ . . . . . . . . . . . . . . . . . . . 23 4.4 DHCPクライアントの動作. . . . . . . . . . . . . . . . . . . . 23 4.4.1 初期化とネットワークアドレスの割り当て. . . . . . . . . . . 24 4.4.2 既知のネットワークアドレスによる初期化. . . . . . . . . . . 27 4.4.3 既知のDHCPサーバによる初期化. . . . . . . . . . . . . . . . 28 4.4.4 更新と期限切れ. . . . . . . . . . . . . . . . . . . . . . . 28 4.4.5 DHCPRELEASEメッセージ . . . . . . . . . . . . . . . . . . . 29 5. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 29 6. 参考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7. セキュリティに関する考察 . . . . . . . . . . . . . . . . . . . 31 8. 著者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 A. ホストコンフィグレーションパラメータ . . . . . . . . . . . . . 33
1. DHCPフォーマット . . . . . . . . . . . . . . . . . . . . . . . 9 2. Format of the 'flags' field. . . . . . . . . . . . . . . . . . 10 3. Timeline diagram of messages exchanged between DHCP client and servers when allocating a new network address. . . . . . . . . 15 4. Timeline diagram of messages exchanged between DHCP client and servers when reusing a previously allocated network address. . 18 5. State-transition diagram for DHCP clients. . . . . . . . . . . 31
1. Description of fields in a DHCP message. . . . . . . . . . . . 14 2. DHCP messages. . . . . . . . . . . . . . . . . . . . . . . . . 16 3. Fields and options used by DHCP servers. . . . . . . . . . . . 25 4. Fields and options used by DHCP clients. . . . . . . . . . . . 32
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | op (1) | htype (1) | hlen (1) | hops (1) | +---------------+---------------+---------------+---------------+ | xid (4) | +-------------------------------+-------------------------------+ | secs (2) | flags (2) | +-------------------------------+-------------------------------+ | ciaddr (4) | +---------------------------------------------------------------+ | yiaddr (4) | +---------------------------------------------------------------+ | siaddr (4) | +---------------------------------------------------------------+ | giaddr (4) | +---------------------------------------------------------------+ | | | chaddr (16) | | | | | +---------------------------------------------------------------+ | | | sname (64) | +---------------------------------------------------------------+ | | | file (128) | +---------------------------------------------------------------+ | | | options (312) | +---------------------------------------------------------------+ |
図 1: DHCPメッセージのフォーマット |
FIELD | OCTETS | DESCRIPTION |
op | 1 | オペレーションコード。 1 = BOOTREQUEST, 2 = BOOTREPLY |
htype | 1 | ハードウェア番号。詳細は"Assigned Numbers" RFCを参 照のこと。ちなみに、'1' = 10Mイーサネット |
hlen | 1 | ハードウェアアドレス長。(ちなみに、10Mイーサネットでは'6') |
hops | 1 | 転送回数。クライアントが'0'に設定する。リレイエー ジェントを経由する場合に使用される。 |
xid | 4 | トランザクションID。クライアントが要求毎に用意するランダムな番号で、 メッセージの対応を取るために使用される。 |
secs | 2 | 経過時間。クライアントが初期化を始めてからの経過時間を設定する。 |
flags | 2 | フラグ(図2を参照のこと)。 |
ciaddr | 4 | クライアントIPアドレス。DHCPREQUESTでクライアント が以前に割り当てられたアドレスを設定する。 |
yiaddr | 4 | 要求者IPアドレス。 |
siaddr | 4 | 次回の初期化で使用すべきサーバのIPアドレス。 DHCPOFFER、DHCPACK、DHCPNAKでサーバが返答する。 |
giaddr | 4 | リレイエージェントIPアドレス。リレイエージェントを 使用する時に使用される。 |
chaddr | 16 | クライアントハードウェアアドレス。 |
sname | 64 | サーバのホスト名。オプションで、ヌル文字で終わる文 字列。 |
file | 128 | ブートファイル名。 ヌル文字で終わる文字列。 DHCPDISCOVERで一般的な名称かヌル文字をいれると、 DHCPOFFERでフルパスに変換されて戻る。 |
options | 312 | オプション。詳細はオプションについて定めた文書を参照のこと。 |
表 1: DHCPメッセージの各フィールドの詳細 |
1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ B| MBZ | -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ B: ブロードキャストフラグ MBZ: MUST BE ZERO (未使用) |
図 2: フラグフィールド |
サーバ クライアント サーバ (指定されていない) (指定された) v v v | | | | 初期化開始 | | | | | _____________/|\_____________ | |/ DHCPDISCOVER | DHCPDISCOVER \| | | | コンフィグレーション | コンフィグレーション 設定 | 設定 | | | |\ | ____________/| | \_________ | /DHCPOFFER | | DHCPOFFER\ |/ | | \ | | | 応答待ち | | \| | | コンフィグレーション選択 | | | | | _____________/|\_____________ | |/ DHCPREQUEST | DHCPREQUEST \| | | | | | コンフィグレーション送付 | | | | | _____________/| | |/ DHCPACK | | | | | 初期化終了 | | | | . . . . . . | | | | 正常なシャットダウン | | | | | |\_____________ | | | DHCPRELEASE \| | | | | | リース情報放棄 | | | v v v | |
図 3: | クライアント・サーバ間でネットワークアドレスを 割り当てる際のDHCPメッセージのフローチャート |
Message | Use |
DHCPDISCOVER | サーバを見つけるためにクライアントがブロードキャストする。 |
DHCPOFFER | DHCPDISCOVERメッセージへの応答として、コンフィグレーション情報を 入れてサーバからクライアントに送信される。 |
DHCPREQUEST | クライアントがサーバに提供されたコンフィグレーション情報の割り当 てを要求するためと、その他のサーバに別のサーバを選択したことを知 らせるためにブロードキャストする。 |
DHCPACK | サーバからクライアントに送られる、割り当てられたネ ットワークアドレスを含むコンフィグレーション情報。 |
DHCPNAK | サーバからクライアントに送られる、要求の拒否(要求 されたネットワークアドレスが既に割り当てられているなど) |
DHCPDECLINE | クライアントからサーバに送られる、無効なコンフィグレーション情報 (ネットワークアドレスなど)を含むメッセージ。 |
DHCPRELEASE | クライアントからサーバに送られる、ネットワークアド レスの開放とリースのキャンセルメッセージ。 |
サーバ クライアント サーバ v v v | | | | 初期化開始 | | | | | /|\ | | ___________/ | \___________ | | /DHCPREQUEST | DHCPREQUEST\ | |/ | \| | | | コンフィグレーション | コンフィグレーション 設定 | 設定 | | | |\ | /| | \ | ___________/ | | \ | / DHCPACK | | \________ |/ | | DHCPACK\ | | | 初期化完了 | | \| | | | | | (後続のDHCPACK | | メッセージは | | 無視される) | | | | | | | v v v 図 4: 先に割り当てられたネットワークアドレスを再利用する場合の DHCPサーバとクライアント間のメッセージのフローチャート
Field DHCPOFFER DHCPACK DHCPNAK ----- --------- ------- ------- 'op' BOOTREPLY BOOTREPLY BOOTREPLY 'htype' (From "Assigned Numbers" RFC) 'hlen' (Hardware address length in octets) 'hops' 0 0 0 'xid' 'xid' from client 'xid' from client 'xid' from client DHCPDISCOVER DHCPREQUEST DHCPREQUEST message message message 'secs' 0 0 0 'ciaddr' 0 'ciaddr' from 'ciaddr' from DHCPREQUEST or 0 DHCPREQUEST or 0 'yiaddr' IP address offered IP address 0 to client assigned to client 'siaddr' IP address of next IP address of next 0 bootstrap server bootstrap server 'flags' if 'giaddr' is not 0 then 'flags' from client message else 0 'giaddr' 0 0 0 'chaddr' 'chaddr' from 'chaddr' from 'chaddr' from client client DHCPREQUEST client DHCPREQUEST DHCPDISCOVER message message message 'sname' Server host name Server host name (unused) or options or options 'file' Client boot file Client boot file (unused) name or options name or options 'options' options options Option DHCPOFFER DHCPACK DHCPNAK ------ --------- ------- ------- 要求IPアドレス 不要 不要 不要 リース期間 必須 必須 不要 オプション拡張 オプション オプション 不要 DHCPメッセージタイプ DHCPOFFER DHCPACK DHCPNAK 要求パラメータリスト 不要 不要 不要 コメント あるべき あるべき あるべき クライアントID 不要 不要 不要 クラスID 不要 不要 不要 サーバID 必須 オプション オプション 最大メッセージ長 不要 不要 不要 その他 オプション オプション 不要 表 3: DHCPサーバが作成するパラメータ |
desynchronize the use of DHCP at startup. The client sets 'ciaddr' -------- ------- | | +-------------------------->| |<-------------------+ |リブート| | +-------------------->|初期化 | | | |DHCPNAK/ +---------->| |<---+ | | |Restart| | ------- | | -------- | DHCPNAK/ | | | | Discard offer | -/Send DHCPDISCOVER | -/Send DHCPREQUEST | | | | | | DHCPACK v | | ----------- | (not accept.)/ ----------- | | | | | Send DHCPDECLINE | | | | |リブート中 | | | | 選択中 | | | | | | / | | | | ----------- | / ----------- | | | | / | | | DHCPACK/ | / +----------------+ | | Record lease, | | v | | set timers ------------ | | | +----->| | DHCPNAK, Lease expired/ | | | | 応答待ち | Halt network | DHCPOFFER/ | | | | Discard ------------ | | | | | | ----------- | | +--------+ DHCPACK/ | | | | Record lease, set -----|再割り当て | | | timers T1, T2 / | | | | | DHCPACK/ ----------- | | v Record lease, set ^ | +----------------> ------- /Timers T1,T2 | | +----->| |<---+ | | | |リース |<---+ | | DHCPOFFER, DHCPACK, | | | T2 expires/ DHCPNAK/ DHCPNAK/Discard ------- | Broadcast Halt network | | | | DHCPREQUEST | +-------+ | DHCPACK/ | | T1 expires/ Record lease, set | | Send DHCPREQUEST timers T1, T2 | | to leasing server | | | | ---------- | | | | |------------+ | +->|リース延長| | | |----------------------------+ ---------- 図 5: DHCPクライアントの状態遷移図 ("/"の前がサーバの動作、後がクライアントの動作) Field DHCPDISCOVER DHCPREQUEST DHCPDECLINE, DHCPRELEASE ----- ------------ ----------- ----------- 'op' BOOTREQUEST BOOTREQUEST BOOTREQUEST 'htype' (From "Assigned Numbers" RFC) 'hlen' (Hardware address length in octets) 'hops' 0 0 0 'xid' selected by client selected by client selected by client 'secs' (opt.) (opt.) 0 'flags' Set 'BROADCAST' Set 'BROADCAST' flag if client flag if client requires broadcast requires broadcast reply reply 0 'ciaddr' 0 previously ciaddr allocated newtork address 'yiaddr' 0 0 0 'siaddr' 0 0 0 'giaddr' 0 0 0 'chaddr' client's hardware client's hardware client's hardware address address address 'sname' options, if options, if (unused) indicated in indicated in 'sname/file' 'sname/file' option; otherwise option; otherwise unused unused 'file' options, if options, if (unused) indicated in indicated in 'sname/file' 'sname/file' option; otherwise option; otherwise 'generic' name or 'generic' name or null null 'options' options options (unused) Option DHCPDISCOVER DHCPREQUEST DHCPDECLINE, DHCPRELEASE ------ ------------ ----------- ----------- Requested IP address MAY MUST NOT MUST NOT IP address lease time MAY MAY MUST NOT Use 'file'/'sname' fields MAY MAY MAY DHCP message type DHCPDISCOVER DHCPREQUEST DHCPDECLINE/ DHCPRELEASE Client identifier MAY MAY MAY Class identifier SHOULD SHOULD MUST NOT Server identifier MUST NOT MUST (after MUST DHCPDISCOVER), MUST NOT (when renewing) Parameter request list MAY MAY MUST NOT Maximum message size MAY MAY MUST NOT Message SHOULD NOT SHOULD NOT SHOULD Site-specific MAY MAY MUST NOT All others MUST NOT MUST NOT MUST NOT 表 4: Fields and options used by DHCP clients |
[1] | Acetta, M., "Resource Location Protocol", RFC 887, CMU, December 1983. |
[2] | Alexander, S., and R. Droms , "DHCP Options and BOOTP Vendor Extensions", RFC 1533, Lachman Technology, Inc., Bucknell University, October 1993. |
[3] | Braden, R., Editor, "Requirements for Internet Hosts -- Communication Layers", STD 3, RFC 1122, USC/Information Sciences Institute, October 1989. |
[4] | Braden, R., Editor, "Requirements for Internet Hosts -- Application and Support, STD 3, RFC 1123, USC/Information Sciences Institute, October 1989. |
[5] | Brownell, D, "Dynamic Reverse Address Resolution Protocol (DRARP)", Work in Progress. |
[6] | Comer, D., and R. Droms , "Uniform Access to Internet Directory Services", Proc. of ACM SIGCOMM '90 (Special issue of Computer Communications Review), 20(4):50--59, 1990. |
[7] | Croft, B., and J. Gilmore, "Bootstrap Protocol (BOOTP)", RFC 951, Stanford and SUN Microsystems, September 1985. |
[8] | Deering, S., "ICMP Router Discovery Messages", RFC 1256, Xerox PARC, September 1991. |
[9] | Droms , D., "Interoperation between DHCP an BOOTP" RFC 1534, Bucknell University, October 1993. |
[10] | Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A Reverse Address Resolution Protocol", RFC 903, Stanford, June 1984. |
[11] | Gray C., and D. Cheriton, "Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency", In Proc. of the Twelfth ACM Symposium on Operating Systems Design, 1989. |
[12] | Mockapetris, P., "Domain Names -- Concepts and Facilities", STD 13, RFC 1034, USC/Information Sciences Institute, November 1987. |
[13] | Mockapetris, P., "Domain Names -- Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987. |
[14] | Mogul J., and S. Deering, "Path MTU Discovery", RFC 1191, November 1990. |
[15] | Morgan, R., "Dynamic IP Address Assignment for Ethernet Attached Hosts", Work in Progress. |
[16] | Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, USC/Information Sciences Institute, September 1981. |
[17] | Reynolds, J., "BOOTP Vendor Information Extensions", RFC 1497, USC/Information Sciences Institute, August 1993. |
[18] | Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340, USC/Information Sciences Institute, July 1992. |
[19] | Jeffrey Schiller and Mark Rosenstein. A Protocol for the Dynamic Assignment of IP Addresses for use on an Ethernet. (Available from the Athena Project, MIT), 1989. |
[20] | Sollins, K., "The TFTP Protocol (Revision 2)", RFC 783, NIC, June 1981. |
[21] | Wimer, W., "Clarifications and Extensions for the Bootstrap Protocol", RFC 1542, Carnegie Mellon University, October 1993. |
Ralph Droms Computer Science Department 323 Dana Engineering Bucknell University Lewisburg, PA 17837 Phone: (717) 524-1145 EMail: droms@bucknell.edu A. Host Configuration Parameters IP-layer_parameters,_per_host:_ Be a router on/off HRC 3.1 Non-local source routing on/off HRC 3.3.5 Policy filters for non-local source routing (list) HRC 3.3.5 Maximum reassembly size integer HRC 3.3.2 Default TTL integer HRC 3.2.1.7 PMTU aging timeout integer MTU 6.6 MTU plateau table (list) MTU 7 IP-layer_parameters,_per_interface:_ IP address (address) HRC 3.3.1.6 Subnet mask (address mask) HRC 3.3.1.6 MTU integer HRC 3.3.3 All-subnets-MTU on/off HRC 3.3.3 Broadcast address flavor 0x00000000/0xffffffff HRC 3.3.6 Perform mask discovery on/off HRC 3.2.2.9 Be a mask supplier on/off HRC 3.2.2.9 Perform router discovery on/off RD 5.1 Router solicitation address (address) RD 5.1 Default routers, list of: router address (address) HRC 3.3.1.6 preference level integer HRC 3.3.1.6 Static routes, list of: destination (host/subnet/net) HRC 3.3.1.2 destination mask (address mask) HRC 3.3.1.2 type-of-service integer HRC 3.3.1.2 first-hop router (address) HRC 3.3.1.2 ignore redirects on/off HRC 3.3.1.2 PMTU integer MTU 6.6 perform PMTU discovery on/off MTU 6.6 Link-layer_parameters,_per_interface:_ Trailers on/off HRC 2.3.1 ARP cache timeout integer HRC 2.3.2.1 Ethernet encapsulation (RFC 894/RFC 1042) HRC 2.3.3 TCP_parameters,_per_host:_ TTL integer HRC 4.2.2.19 Keep-alive interval integer HRC 4.2.3.6 Keep-alive data size 0/1 HRC 4.2.3.6 Key: MTU = Path MTU Discovery (RFC 1191, Proposed Standard) RD = Router Discovery (RFC 1256, Proposed Standard)