| 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)