home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1541.txt < prev    next >
Text File  |  1996-05-07  |  98KB  |  925 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           R. Droms Request for Comments: 1541                           Bucknell University Obsoletes: 1531                                             October 1993 Category: Standards Track 
  8.  
  9.                    Dynamic Host Configuration Protocol 
  10.  
  11. Status of this memo 
  12.  
  13.    This RFC specifies an Internet standards track protocol for the    Internet community, and requests discussion and suggestions for    improvements.  Please refer to the current edition of the "Internet    Official Protocol Standards" for the standardization state and status    of this protocol.  Distribution of this memo is unlimited. 
  14.  
  15. Abstract 
  16.  
  17.    The Dynamic Host Configuration Protocol (DHCP) provides a framework    for passing configuration information to hosts on a TCP/IP network.    DHCP is based on the Bootstrap Protocol (BOOTP) [7], adding the    capability of automatic allocation of reusable network addresses and    additional configuration options [19].  DHCP captures the behavior of    BOOTP relay agents [7, 23], and DHCP participants can interoperate    with BOOTP participants [9].  Due to some errors introduced into RFC    1531 in the editorial process, this memo is reissued as RFC 1541. 
  18.  
  19.  Table of Contents 
  20.  
  21.    1.  Introduction. . . . . . . . . . . . . . . . . . . . . . . . .  2    1.1 Related Work. . . . . . . . . . . . . . . . . . . . . . . . .  4    1.2 Problem definition and issues . . . . . . . . . . . . . . . .  4    1.3 Requirements. . . . . . . . . . . . . . . . . . . . . . . . .  5    1.4 Terminology . . . . . . . . . . . . . . . . . . . . . . . . .  6    1.5 Design goals. . . . . . . . . . . . . . . . . . . . . . . . .  6    2. Protocol Summary . . . . . . . . . . . . . . . . . . . . . . .  8    2.1 Configuration parameters repository . . . . . . . . . . . . . 10    2.2 Dynamic allocation of network addresses . . . . . . . . . . . 11    3. The Client-Server Protocol . . . . . . . . . . . . . . . . . . 11    3.1 Client-server interaction - allocating a network address. . . 12    3.2 Client-server interaction - reusing a  previously allocated        network address . . . . . . . . . . . . . . . . . . . . . . . 17    3.3 Interpretation and representation of time values. . . . . . . 19    3.4 Host parameters in DHCP . . . . . . . . . . . . . . . . . . . 19    3.5 Use of DHCP in clients with multiple interfaces . . . . . . . 20    3.6 When clients should use DHCP. . . . . . . . . . . . . . . . . 20    4. Specification of the DHCP client-server protocol . . . . . . . 21 
  22.  
  23.  
  24.  
  25. Droms                                                           [Page 1] 
  26.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  27.  
  28.     4.1 Constructing and sending DHCP messages. . . . . . . . . . . . 21    4.2 DHCP server administrative controls . . . . . . . . . . . . . 23    4.3 DHCP server behavior. . . . . . . . . . . . . . . . . . . . . 24    4.3.1 DHCPDISCOVER message. . . . . . . . . . . . . . . . . . . . 24    4.3.2 DHCPREQUEST message . . . . . . . . . . . . . . . . . . . . 27    4.3.3 DHCPDECLINE message . . . . . . . . . . . . . . . . . . . . 29    4.3.4 DHCPRELEASE message . . . . . . . . . . . . . . . . . . . . 29    4.4 DHCP client behavior. . . . . . . . . . . . . . . . . . . . . 29    4.4.1 Initialization and allocation of network address. . . . . . 29    4.4.2 Initialization with known network address . . . . . . . . . 33    4.4.3 Initialization with a known DHCP server address . . . . . . 34    4.4.4 Reacquisition and expiration. . . . . . . . . . . . . . . . 34    4.4.5 DHCPRELEASE . . . . . . . . . . . . . . . . . . . . . . . . 35    5. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 35    6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 36    7. Security Considerations. . . . . . . . . . . . . . . . . . . . 37    8. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 38    A. Host Configuration Parameters  . . . . . . . . . . . . . . . . 39 
  29.  
  30. List of Figures 
  31.  
  32.    1. Format of a DHCP message . . . . . . . . . . . . . . . . . . .  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 
  33.  
  34. List of Tables 
  35.  
  36.    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 
  37.  
  38. 1. Introduction 
  39.  
  40.    The Dynamic Host Configuration Protocol (DHCP) provides configuration    parameters to Internet hosts.  DHCP consists of two components: a    protocol for delivering host-specific configuration parameters from a    DHCP server to a host and a mechanism for allocation of network    addresses to hosts. 
  41.  
  42.    DHCP is built on a client-server model, where designated DHCP server    hosts allocate network addresses and deliver configuration parameters    to dynamically configured hosts.  Throughout the remainder of this    document, the term "server" refers to a host providing initialization 
  43.  
  44.  
  45.  
  46. Droms                                                           [Page 2] 
  47.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  48.  
  49.     parameters through DHCP, and the term "client" refers to a host    requesting initialization parameters from a DHCP server. 
  50.  
  51.    A host should not act as a DHCP server unless explicitly configured    to do so by a system administrator.  The diversity of hardware and    protocol implementations in the Internet would preclude reliable    operation if random hosts were allowed to respond to DHCP requests.    For example, IP requires the setting of many parameters within the    protocol implementation software.  Because IP can be used on many    dissimilar kinds of network hardware, values for those parameters    cannot be guessed or assumed to have correct defaults.  Also,    distributed address allocation schemes depend on a polling/defense    mechanism for discovery of addresses that are already in use.  IP    hosts may not always be able to defend their network addresses, so    that such a distributed address allocation scheme cannot be    guaranteed to avoid allocation of duplicate network addresses. 
  52.  
  53.    DHCP supports three mechanisms for IP address allocation.  In    "automatic allocation", DHCP assigns a permanent IP address to a    host.  In "dynamic allocation", DHCP assigns an IP address to a host    for a limited period of time (or until the host explicitly    relinquishes the address).  In "manual allocation", a host's IP    address is assigned by the network administrator, and DHCP is used    simply to convey the assigned address to the host.  A particular    network will use one or more of these mechanisms, depending on the    policies of the network administrator. 
  54.  
  55.    Dynamic allocation is the only one of the three mechanisms that    allows automatic reuse of an address that is no longer needed by the    host to which it was assigned.  Thus, dynamic allocation is    particularly useful for assigning an address to a host that will be    connected to the network only temporarily or for sharing a limited    pool of IP addresses among a group of hosts that do not need    permanent IP addresses.  Dynamic allocation may also be a good choice    for assigning an IP address to a new host being permanently connected    to a network where IP addresses are sufficiently scarce that it is    important to reclaim them when old hosts are retired.  Manual    allocation allows DHCP to be used to eliminate the error-prone    process of manually configuring hosts with IP addresses in    environments where (for whatever reasons) it is desirable to manage    IP address assignment outside of the DHCP mechanisms. 
  56.  
  57.    The format of DHCP messages is based on the format of BOOTP messages,    to capture the BOOTP relay agent behavior described as part of the    BOOTP specification [7, 23] and to allow interoperability of existing    BOOTP clients with DHCP servers.  Using BOOTP relaying agents    eliminates the necessity of having a DHCP server on each physical    network segment. 
  58.  
  59.  
  60.  
  61. Droms                                                           [Page 3] 
  62.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  63.  
  64.  1.1 Related Work 
  65.  
  66.    There are several Internet protocols and related mechanisms that    address some parts of the dynamic host configuration problem.  The    Reverse Address Resolution Protocol (RARP) [10] (through the    extensions defined in the Dynamic RARP (DRARP) [5]) explicitly    addresses the problem of network address discovery, and includes an    automatic IP address assignment mechanism.  The Trivial File Transfer    Protocol (TFTP) [20] provides for transport of a boot image from a    boot server.  The Internet Control Message Protocol (ICMP) [16]    provides for informing hosts of additional routers via "ICMP    redirect" messages.  ICMP also can provide subnet mask information    through the "ICMP mask request" message and other information through    the (obsolete) "ICMP information request" message.  Hosts can locate    routers through the ICMP router discovery mechanism [8]. 
  67.  
  68.    BOOTP is a transport mechanism for a collection of configuration    information.  BOOTP is also extensible, and official extensions [17]    have been defined for several configuration parameters.  Morgan has    proposed extensions to BOOTP for dynamic IP address assignment [15].    The Network Information Protocol (NIP), used by the Athena project at    MIT, is a distributed mechanism for dynamic IP address assignment    [19].  The Resource Location Protocol RLP [1] provides for location    of higher level services.  Sun Microsystems diskless workstations use    a boot procedure that employs RARP, TFTP and an RPC mechanism called    "bootparams" to deliver configuration information and operating    system code to diskless hosts.  (Sun Microsystems, Sun Workstation    and SunOS are trademarks of Sun Microsystems, Inc.)  Some Sun    networks also use DRARP and an auto-installation mechanism to    automate the configuration of new hosts in an existing network.     In other related work, the path minimum transmission unit (MTU)    discovery algorithm can determine the MTU of an arbitrary internet    path [14].  Comer and Droms have proposed the use of the Address    Resolution Protocol (ARP) as a transport protocol for resource    location and selection [6].  Finally, the Host Requirements RFCs [3,    4] mention specific requirements for host reconfiguration and suggest    a scenario for initial configuration of diskless hosts. 
  69.  
  70. 1.2 Problem definition and issues 
  71.  
  72.    DHCP is designed to supply hosts with the configuration parameters    defined in the Host Requirements RFCs.  After obtaining parameters    via DHCP, a host should be able to exchange packets with any other    host in the Internet.  The parameters supplied by DHCP are listed in    Appendix A. 
  73.  
  74.  
  75.  
  76.  
  77.  
  78. Droms                                                           [Page 4] 
  79.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  80.  
  81.     Not all of these parameters are required for a newly initialized    host.  A client and server may negotiate for the transmission of only    those parameters required by the client or specific to a particular    subnet. 
  82.  
  83.    DHCP allows but does not require the configuration of host parameters    not directly related to the IP protocol.  DHCP also does not address    registration of newly configured hosts with the Domain Name System    (DNS) [12, 13]. 
  84.  
  85.    DHCP is not intended for use in configuring routers. 
  86.  
  87. 1.3 Requirements     Throughout this document, the words that are used to define the    significance of particular requirements are capitalized.  These words    are: 
  88.  
  89.       o "MUST" 
  90.  
  91.         This word or the adjective "REQUIRED" means that the         item is an absolute requirement of this specification. 
  92.  
  93.       o "MUST NOT" 
  94.  
  95.         This phrase means that the item is an absolute prohibition         of this specification. 
  96.  
  97.       o "SHOULD" 
  98.  
  99.         This word or the adjective "RECOMMENDED" means that there         may exist valid reasons in particular circumstances to ignore         this item, but the full implications should be understood and         the case carefully weighed before choosing a different course. 
  100.  
  101.       o "SHOULD NOT" 
  102.  
  103.         This phrase means that there may exist valid reasons in         particular circumstances when the listed behavior is acceptable         or even useful, but the full implications should be understood         and the case carefully weighed before implementing any behavior         described with this label. 
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. Droms                                                           [Page 5] 
  114.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  115.  
  116.        o "MAY" 
  117.  
  118.         This word or the adjective "OPTIONAL" means that this item is         truly optional.  One vendor may choose to include the item         because a particular marketplace requires it or because it         enhances the product, for example; another vendor may omit the         same item. 
  119.  
  120. 1.4 Terminology 
  121.  
  122.    This document uses the following terms: 
  123.  
  124.       o "DHCP client" 
  125.  
  126.         A DHCP client is an Internet host using DHCP to obtain         configuration parameters such as a network address. 
  127.  
  128.       o "DHCP server" 
  129.  
  130.         A DHCP server is an Internet host that returns configuration         parameters to DHCP clients. 
  131.  
  132.       o "BOOTP relay agent" 
  133.  
  134.         A BOOTP relay agent is an Internet host or router that passes         DHCP messages between DHCP clients and DHCP servers.  DHCP is         designed to use the same relay agent behavior as specified in         the BOOTP protocol specification. 
  135.  
  136.       o "binding" 
  137.  
  138.         A binding is a collection of configuration parameters, including         at least an IP address, associated with or "bound to" a DHCP         client.  Bindings are managed by DHCP servers. 
  139.  
  140. 1.5 Design goals 
  141.  
  142.    The following list gives general design goals for DHCP. 
  143.  
  144.       o DHCP should be a mechanism rather than a policy.  DHCP must         allow local system administrators control over configuration         parameters where desired; e.g., local system administrators         should be able to enforce local policies concerning allocation         and access to local resources where desired. 
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152. Droms                                                           [Page 6] 
  153.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  154.  
  155.        o Hosts should require no manual configuration.  Each host should         be able to discover appropriate local configuration parameters         without user intervention and incorporate those parameters into         its own configuration. 
  156.  
  157.       o Networks should require no hand configuration for individual         hosts.  Under normal circumstances, the network manager should         not have to enter any per-host configuration parameters. 
  158.  
  159.       o DHCP should not require a server on each subnet.  To allow for         scale and economy, DHCP must work across routers or through the         intervention of BOOTP/DHCP relay agents. 
  160.  
  161.       o A DHCP host must be prepared to receive multiple responses to a         request for configuration parameters.  Some installations may         include multiple, overlapping DHCP servers to enhance         reliability and increase performance. 
  162.  
  163.       o DHCP must coexist with statically configured, non-participating         hosts and with existing network protocol implementations. 
  164.  
  165.       o DHCP must interoperate with the BOOTP relay agent behavior as         described by RFC 951 and by Wimer [21]. 
  166.  
  167.       o DHCP must provide service to existing BOOTP clients. 
  168.  
  169.    The following list gives design goals specific to the transmission of    the network layer parameters.  DHCP must: 
  170.  
  171.       o Guarantee that any specific network address will not be in         use by more than one host at a time, 
  172.  
  173.       o Retain host configuration across host reboot.  A host should,         whenever possible, be assigned the same configuration parameters         (e.g., network address) in response to each request, 
  174.  
  175.       o Retain host configuration across server reboots, and, whenever         possible, a host should be assigned the same configuration         parameters despite restarts of the DHCP mechanism, 
  176.  
  177.       o Allow automatic assignment of configuration parameters to new         hosts to avoid hand configuration for new hosts, 
  178.  
  179.       o Support fixed or permanent allocation of configuration         parameters to specific hosts. 
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  Droms                                                           [Page 7] 
  186.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  187.  
  188.  2. Protocol Summary 
  189.  
  190.    From the client's point of view, DHCP is an extension of the BOOTP    mechanism.  This behavior allows existing BOOTP clients to    interoperate with DHCP servers without requiring any change to the    clients' initialization software.  A separate document details the    interactions between BOOTP and DHCP clients and servers [9].  There    are some new, optional transactions that optimize the interaction    between DHCP clients and servers that are described in sections 3 and    4. 
  191.  
  192.    Figure 1 gives the format of a DHCP message and table 1 describes    each of the fields in the DHCP message.  The numbers in parentheses    indicate the size of each field in octets.  The names for the fields    given in the figure will be used throughout this document to refer to    the fields in DHCP messages. 
  193.  
  194.    There are two primary differences between DHCP and BOOTP.  First,    DHCP defines mechanisms through which clients can be assigned a    network address for a fixed lease, allowing for serial reassignment    of network addresses to different clients.  Second, DHCP provides the    mechanism for a client to acquire all of the IP configuration    parameters that it needs in order to operate. 
  195.  
  196.    DHCP introduces a small change in terminology intended to clarify the    meaning of one of the fields.  What was the "vendor extensions" field    in BOOTP has been re-named the "options" field in DHCP. Similarly,    the tagged data items that were used inside the BOOTP "vendor    extensions" field, which were formerly referred to as "vendor    extensions," are now termed simply "options." 
  197.  
  198.    DHCP defines a new 'client identifier' option that is used to pass an    explicit client identifier to a DHCP server.  This change eliminates    the overloading of the 'chaddr' field in BOOTP messages, where    'chaddr' is used both as a hardware address for transmission of BOOTP    reply messages and as a client identifier.  The 'client identifier'    option may contain a hardware address, identical to the contents of    the 'chaddr' field, or it may contain another type of identifier,    such as a DNS name.  Other client identifier types may be defined as    needed for use with DHCP.  New client identifier types will be    registered with the IANA [18] and will be included in new revisions    of the Assigned Numbers document, as well as described in detail in    future revisions of the DHCP Options [2]. 
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  Droms                                                           [Page 8] 
  207.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  208.  
  209.     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)                        |    +---------------------------------------------------------------+ 
  210.  
  211.                   Figure 1:  Format of a DHCP message 
  212.  
  213.    DHCP clarifies the interpretation of the 'siaddr' field as the    address of the server to use in the next step of the client's    bootstrap process.  A DHCP server may return its own address in the    'siaddr' field, if the server is prepared to supply the next    bootstrap service (e.g., delivery of an operating system executable    image).  A DHCP server always returns its own address in the 'server    identifier' option. 
  214.  
  215.    The options field is now variable length, with the minimum extended    to 312 octets.  This brings the minimum size of a DHCP message up to    576 octets, the minimum IP datagram size a host must be prepared to    accept [3].  DHCP clients may negotiate the use of larger DHCP    messages through the 'Maximum DHCP message size' option.  The options    field may be further extended into the 'file' and 'sname' fields. 
  216.  
  217.  
  218.  
  219. Droms                                                           [Page 9] 
  220.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  221.  
  222.     A new option, called 'vendor specific information', has been added to    allow for expansion of the number of options that can be supported    [2].  Options encapsulated as 'vendor specific information' must be    carefully defined and documented so as to allow for interoperability    between clients and servers from diferent vendors.  In particular,    vendors defining 'vendor specific information' MUST document those    options in the form of the DHCP Options document, MUST choose to    represent those options either in data types already defined for DHCP    options or in other well-defined data types, and MUST choose options    that can be readily encoded in configuration files for exchange with    servers provided by other vendors.  Options included as 'vendor    specific options' MUST be readily supportable by all servers. 
  223.  
  224.                                     1 1 1 1 1 1                 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5                 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                 B|             MBZ             |                 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  225.  
  226.                 B:  BROADCAST flag 
  227.  
  228.                 MBZ:  MUST BE ZERO (reserved for future use) 
  229.  
  230.                 Figure 2:  Format of the 'flags' field 
  231.  
  232.    DHCP uses the 'flags' field [21].  The leftmost bit is defined as the    BROADCAST (B) flag.  The semantics of this flag are discussed in    section 4.1 of this document.  The remaining bits of the flags field    are reserved for future use.  They MUST be set to zero by clients and    ignored by servers and relay agents.  Figure 2 gives the format of    the 'flags' field. 
  233.  
  234. 2.1 Configuration parameters repository 
  235.  
  236.    The first service provided by DHCP is to provide persistent storage    of network parameters for network clients.  The model of DHCP    persistent storage is that the DHCP service stores a key-value entry    for each client, where the key is some unique identifier (for    example, an IP subnet number and a unique identifier within the    subnet) and the value contains the configuration parameters for the    client. 
  237.  
  238.    For example, the key might be the pair (IP-subnet-number, hardware-    address), allowing for serial or concurrent reuse of a hardware    address on different subnets, and for hardware addresses that may not    be globally unique.  Alternately, the key might be the pair (IP-    subnet-number, hostname), allowing the server to assign parameters    intelligently to a host that has been moved to a different subnet or 
  239.  
  240.  
  241.  
  242. Droms                                                          [Page 10] 
  243.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  244.  
  245.     has changed hardware addresses (perhaps because the network interface    failed and was replaced). 
  246.  
  247.    A client can query the DHCP service to retrieve its configuration    parameters.  The client interface to the configuration parameters    repository consists of protocol messages to request configuration    parameters and responses from the server carrying the configuration    parameters. 
  248.  
  249. 2.2 Dynamic allocation of network addresses 
  250.  
  251.    The second service provided by DHCP is the allocation of temporary or    permanent network (IP) addresses to hosts.  The basic mechanism for    the dynamic allocation of network addresses is simple: a client    requests the use of an address for some period of time.  The    allocation mechanism (the collection of DHCP servers) guarantees not    to reallocate that address within the requested time and attempts to    return the same network address each time the client requests an    address.  In this document, the period over which a network address    is allocated to a client is referred to as a "lease" [11].  The    client may extend its lease with subsequent requests.  The client may    issue a message to release the address back to the server when the    client no longer needs the address.  The client may ask for a    permanent assignment by asking for an infinite lease.  Even when    assigning "permanent" addresses, a server may choose to give out    lengthy but non-infinite leases to allow detection of the fact that    the host has been retired. 
  252.  
  253.    In some environments it will be necessary to reassign network    addresses due to exhaustion of available addresses.  In such    environments, the allocation mechanism will reuse addresses whose    lease has expired.  The server should use whatever information is    available in the configuration information repository to choose an    address to reuse.  For example, the server may choose the least    recently assigned address.  As a consistency check, the allocation    mechanism may probe the reused address, e.g., with an ICMP echo    request, before allocating the address, and the client will probe the    newly received address, e.g., with ARP. 
  254.  
  255. 3. The Client-Server Protocol 
  256.  
  257.    DHCP uses the BOOTP message format defined in RFC 951 and given in    table 1 and figure 1.  The 'op' field of each DHCP message sent from    a client to a server contains BOOTREQUEST. BOOTREPLY is used in the    'op' field of each DHCP message sent from a server to a client. 
  258.  
  259.    The first four octets of the 'options' field of the DHCP message    contain the (decimal) values 99, 130, 83 and 99, respectively (this 
  260.  
  261.  
  262.  
  263. Droms                                                          [Page 11] 
  264.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  265.  
  266.     is the same magic cookie as is defined in RFC 1497).  The remainder    of the 'options' field consists a list of tagged parameters that are    called "options".  All of the "vendor extensions" listed in RFC 1497    are also DHCP options.  A separate document gives the complete set of    options defined for use with DHCP [2]. 
  267.  
  268.    Several options have been defined so far.  One particular option -    the "DHCP message type" option - must be included in every DHCP    message.  This option defines the "type" of the DHCP message.    Additional options may be allowed, required, or not allowed,    depending on the DHCP message type. 
  269.  
  270.    Throughout this document, DHCP messages that include a 'DHCP message    type' option will be referred to by the type of the message; e.g., a    DHCP message with 'DHCP message type' option type 1 will be referred    to as a "DHCPDISCOVER" message. 
  271.  
  272. 3.1 Client-server interaction - allocating a network address 
  273.  
  274.    The following summary of the protocol exchanges between clients and    servers refers to the DHCP messages described in table 2.  The    timeline diagram in figure 3 shows the timing relationships in a    typical client-server interaction.  If the client already knows its    address, some steps may be omitted; this abbreviated interaction is    described in section 3.2. 
  275.  
  276.    1. The client broadcasts a DHCPDISCOVER message on its local physical       subnet.  The DHCPDISCOVER message may include options that suggest       values for the network address and lease duration.  BOOTP relay       agents may pass the message on to DHCP servers not on the same       physical subnet. 
  277.  
  278.    2. Each server may respond with a DHCPOFFER message that includes an       available network address in the 'yiaddr' field (and other       configuration parameters in DHCP options).  Servers need not       reserve the offered network address, although the protocol will       work more efficiently if the server avoids allocating the offered       network address to another client.  The server unicasts the       DHCPOFFER message to the client (using the DHCP/BOOTP relay agent       if necessary) if possible, or may broadcast the message to a       broadcast address (preferably 255.255.255.255) on the client's       subnet. 
  279.  
  280.    3. The client receives one or more DHCPOFFER messages from one or       more servers.  The client may choose to wait for multiple       responses.  The client chooses one server from which to request       configuration parameters, based on the configuration parameters       offered in the DHCPOFFER messages.  The client broadcasts a 
  281.  
  282.  
  283.  
  284. Droms                                                          [Page 12] 
  285.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  286.  
  287.        DHCPREQUEST message that MUST include the 'server identifier'       option to indicate which server it has selected, and may include       other options specifying desired configuration values.  This       DHCPREQUEST message is broadcast and relayed through DHCP/BOOTP       relay agents.  To help ensure that any DHCP/BOOTP relay agents       forward the DHCPREQUEST message to the same set of DHCP servers       that received the original DHCPDISCOVER message, the DHCPREQUEST       message must use the same value in the DHCP message header's       'secs' field and be sent to the same IP broadcast address as the       original DHCPDISCOVER message.  The client times out and       retransmits the DHCPDISCOVER message if the client receives no       DHCPOFFER messages. 
  288.  
  289.    4. The servers receive the DHCPREQUEST broadcast from the client.       Those servers not selected by the DHCPREQUEST message use the       message as notification that the client has declined that server's       offer.  The server selected in the DHCPREQUEST message commits the       binding for the client to persistent storage and responds with a       DHCPACK message containing the configuration parameters for the       requesting client.  The combination of 'chaddr' and assigned       network address constitute an unique identifier for the client's       lease and are used by both the client and server to identify a       lease referred to in any DHCP messages.  The 'yiaddr' field in the       DHCPACK messages is filled in with the selected network address. 
  290.  
  291.       If the selected server is unable to satisfy the DHCPREQUEST message       (e.g., the requested network address has been allocated), the       server SHOULD respond with a DHCPNAK message. 
  292.  
  293.       A server may choose to mark addresses offered to clients in       DHCPOFFER messages as unavailable.  The server should mark an       address offered to a client in a DHCPOFFER message as available if       the server receives no DHCPREQUEST message from that client. 
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  Droms                                                          [Page 13] 
  312.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  313.  
  314.     FIELD      OCTETS       DESCRIPTION    -----      ------       ----------- 
  315.  
  316.    op            1  Message op code / message type.                     1 = BOOTREQUEST, 2 = BOOTREPLY    htype         1  Hardware address type, see ARP section in "Assigned                     Numbers" RFC; e.g., '1' = 10mb ethernet.    hlen          1  Hardware address length (e.g.  '6' for 10mb                     ethernet).    hops          1  Client sets to zero, optionally used by relay-agents                     when booting via a relay-agent.    xid           4  Transaction ID, a random number chosen by the                     client, used by the client and server to associate                     messages and responses between a client and a                     server.    secs          2  Filled in by client, seconds elapsed since client                     started trying to boot.    flags         2  Flags (see figure 2).    ciaddr        4  Client IP address; filled in by client in                     DHCPREQUEST if verifying previously allocated                     configuration parameters.    yiaddr        4  'your' (client) IP address.    siaddr        4  IP address of next server to use in bootstrap;                     returned in DHCPOFFER, DHCPACK and DHCPNAK by                     server.    giaddr        4  Relay agent IP address, used in booting via a                     relay-agent.    chaddr       16  Client hardware address.    sname        64  Optional server host name, null terminated string.    file        128  Boot file name, null terminated string; "generic"                     name or null in DHCPDISCOVER, fully qualified                     directory-path name in DHCPOFFER.    options     312  Optional parameters field.  See the options                     documents for a list of defined options. 
  317.  
  318.              Table 1:  Description of fields in a DHCP message 
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. Droms                                                          [Page 14] 
  335.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  336.  
  337.                  Server          Client          Server             (not selected)                    (selected)                    v               v               v                   |               |               |                   |     Begins initialization     |                   |               |               |                   | _____________/|\_____________ |                   |/ DHCPDISCOVER | DHCPDISCOVER \|                   |               |               |               Determines          |          Determines              configuration        |         configuration                   |               |               |                   |\              |  ____________/|                   | \_________    | /DHCPOFFER    |                   |  DHCPOFFER\   |/              |                   |            \  |               |                   |       Collects replies        |                   |              \|               |                   |     Selects configuration     |                   |               |               |                   | _____________/|\_____________ |                   |/ DHCPREQUEST  |  DHCPREQUEST \|                   |               |               |                   |               |     Commits configuration                   |               |               |                   |               | _____________/|                   |               |/ DHCPACK      |                   |               |               |                   |    Initialization complete    |                   |               |               |                   .               .               .                   .               .               .                   |               |               |                   |      Graceful shutdown        |                   |               |               |                   |               |\_____________ |                   |               |  DHCPRELEASE \|                   |               |               |                   |               |        Discards lease                   |               |               |                   v               v               v 
  338.  
  339.      Figure 3: Timeline diagram of messages exchanged between DHCP                client and servers when allocating a new network address 
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  Droms                                                          [Page 15] 
  346.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  347.  
  348.     Message         Use    -------         --- 
  349.  
  350.    DHCPDISCOVER -  Client broadcast to locate available servers. 
  351.  
  352.    DHCPOFFER    -  Server to client in response to DHCPDISCOVER with                    offer of configuration parameters. 
  353.  
  354.    DHCPREQUEST  -  Client broadcast to servers requesting offered                    parameters from one server and implicitly declining                    offers from all others. 
  355.  
  356.    DHCPACK      -  Server to client with configuration parameters,                    including committed network address. 
  357.  
  358.    DHCPNAK      -  Server to client refusing request for configuration                    parameters (e.g., requested network address already                    allocated). 
  359.  
  360.    DHCPDECLINE  -  Client to server indicating configuration parameters                    (e.g., network address) invalid. 
  361.  
  362.    DHCPRELEASE  -  Client to server relinquishing network address and                    cancelling remaining lease. 
  363.  
  364.                           Table 2:  DHCP messages 
  365.  
  366.    5. The client receives the DHCPACK message with configuration       parameters.  The client performs a final check on the parameters       (e.g., ARP for allocated network address), and notes the duration       of the lease and the lease identification cookie specified in the       DHCPACK message.  At this point, the client is configured.  If the       client detects a problem with the parameters in the DHCPACK       message, the client sends a DHCPDECLINE message to the server and       restarts the configuration process.  The client should wait a       minimum of ten seconds before restarting the configuration process       to avoid excessive network traffic in case of looping. 
  367.  
  368.       If the client receives a DHCPNAK message, the client restarts the       configuration process. 
  369.  
  370.       The client times out and retransmits the DHCPREQUEST message if the       client receives neither a DHCPACK or a DHCPNAK message.  The client       retransmits the DHCPREQUEST according to the retransmission       algorithm in section 4.1.  If the client receives neither a DHCPACK       or a DHCPNAK message after ten retransmissions of the DHCPREQUEST       message, the client reverts to INIT state and restarts the       initialization process.  The client SHOULD notify the user that the 
  371.  
  372.  
  373.  
  374. Droms                                                          [Page 16] 
  375.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  376.  
  377.        initialization process has failed and is restarting. 
  378.  
  379.    6. The client may choose to relinquish its lease on a network address       by sending a DHCPRELEASE message to the server.  The client       identifies the lease to be released by including its network       address in the 'ciaddr' field and its hardware address in the       'chaddr' field. 
  380.  
  381. 3.2 Client-server interaction - reusing a previously allocated network     address 
  382.  
  383.    If a client remembers and wishes to reuse a previously allocated    network address (allocated either by DHCP or some means outside the    protocol), a client may choose to omit some of the steps described in    the previous section.  The timeline diagram in figure 4 shows the    timing relationships in a typical client-server interaction for a    client reusing a previously allocated network address. 
  384.  
  385.       1. The client broadcasts a DHCPREQUEST message on its local subnet.          The DHCPREQUEST message includes the client's network address in          the 'ciaddr' field.  DHCP/BOOTP relay agents pass the message on          to DHCP servers not on the same subnet. 
  386.  
  387.       2. Servers with knowledge of the client's configuration parameters          respond with a DHCPACK message to the client. 
  388.  
  389.          If the client's request is invalid (e.g., the client has moved          to a new subnet), servers may respond with a DHCPNAK message to          the client. 
  390.  
  391.       3. The client receives the DHCPACK message with configuration          prameters.  The client performs a final check on the parameters          (as in section 3.1), and notes the duration of the lease and          the lease identification cookie specified in the DHCPACK          message.  At this point, the client is configured. 
  392.  
  393.          If the client detects a problem with the parameters in the          DHCPACK message, the client sends a DHCPDECLINE message to the          server and restarts the configuration process by requesting a          new network address.  This action corresponds to the client          moving to the INIT state in the DHCP state diagram, which is          described in section 4.4. 
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. Droms                                                          [Page 17] 
  404.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  405.  
  406.                  Server          Client          Server 
  407.  
  408.                   v               v               v                   |               |               |                   |             Begins            |                   |         initialization        |                   |               |               |                   |              /|\              |                   |  ___________/ | \___________  |                   | /DHCPREQUEST  |  DHCPREQUEST\ |                   |/              |              \|                   |               |               |                Locates            |            Locates             configuration         |         configuration                   |               |               |                   |\              |              /|                   | \             |  ___________/ |                   |  \            | /  DHCPACK    |                   |   \_______    |/              |                   |    DHCPACK\   |               |                   |         Initialization        |                   |            complete           |                   |              \|               |                   |               |               |                   |          (Subsequent          |                   |            DHCPACKS           |                   |            ignored)           |                   |               |               |                   |               |               |                   v               v               v 
  409.  
  410.      Figure 4: Timeline diagram of messages exchanged between DHCP                client and servers when reusing a previously allocated                network address 
  411.  
  412.          If the client receives a DHCPNAK message, it cannot reuse its          remembered network address.  It must instead request a new          address by restarting the configuration process, this time          using the (non-abbreviated) procedure described in section          3.1.  This action also corresponds to the client moving to          the INIT state in the DHCP state diagram. 
  413.  
  414.          The client times out and retransmits the DHCPREQUEST message if          the client receives neither a DHCPACK nor a DHCPNAK message.          The   time between retransmission MUST be chosen according to          the algorithm given in section 4.1.  If the client receives no          answer after transmitting 4 DHCPREQUEST messages, the client          MAY choose to use the previously allocated network address and 
  415.  
  416.  
  417.  
  418. Droms                                                          [Page 18] 
  419.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  420.  
  421.           configuration parameters for the remainder of the unexpired          lease.  This corresponds to moving to BOUND state in the client          state transition diagram shown in figure 5. 
  422.  
  423.       4. The client may choose to relinquish its lease on a network          address by sending a DHCPRELEASE message to the server.  The          client identifies the lease to be released with the lease          identification cookie. 
  424.  
  425.          Note that in this case, where the client retains its network          address locally, the client will not normally relinquish its          lease during a graceful shutdown.  Only in the case where the          client explicitly needs to relinquish its lease, e.g., the client          is about to be moved to a different subnet, will the client send          a DHCPRELEASE message. 
  426.  
  427. 3.3 Interpretation and representation of time values 
  428.  
  429.    A client acquires a lease for a network address for a fixed period of    time (which may be infinite).  Throughout the protocol, times are to    be represented in units of seconds.  The time value of 0xffffffff is    reserved to represent "infinity".  The minimum lease duration is one    hour. 
  430.  
  431.    As clients and servers may not have synchronized clocks, times are    represented in DHCP messages as relative times, to be interpreted    with respect to the client's local clock.  Representing relative    times in units of seconds in an unsigned 32 bit word gives a range of    relative times from 0 to approximately 100 years, which is sufficient    for the relative times to be measured using DHCP. 
  432.  
  433.    The algorithm for lease duration interpretation given in the previous    paragraph assumes that client and server clocks are stable relative    to each other.  If there is drift between the two clocks, the server    may consider the lease expired before the client does.  To    compensate, the server may return a shorter lease duration to the    client than the server commits to its local database of client    information. 
  434.  
  435. 3.4 Host parameters in DHCP 
  436.  
  437.    Not all clients require initialization of all parameters listed in    Appendix A.  Two techniques are used to reduce the number of    parameters transmitted from the server to the client.  First, most of    the parameters have defaults defined in the Host Requirements RFCs;    if the client receives no parameters from the server that override    the defaults, a client uses those default values.  Second, in its    initial DHCPDISCOVER or DHCPREQUEST message, a client may provide the 
  438.  
  439.  
  440.  
  441. Droms                                                          [Page 19] 
  442.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  443.  
  444.     server with a list of specific parameters the client is interested    in. 
  445.  
  446.    The client SHOULD include the 'maximum DHCP message size' option to    let the server know how large the server may make its DHCP messages.    The parameters returned to a client may still exceed the space    allocated to options in a DHCP message.  In this case, two additional    options flags (which must appear in the 'options' field of the    message) indicate that the 'file' and 'sname' fields are to be used    for options. 
  447.  
  448.    The client can inform the server which configuration parameters the    client is interested in by including the 'parameter request list'    option.  The data portion of this option explicitly lists the options    requested by tag number. 
  449.  
  450.    In addition, the client may suggest values for the network address    and lease time in the DHCPDISCOVER message.  The client may include    the 'requested IP address' option to suggest that a particular IP    address be assigned, and may include the 'IP address lease time'    option to suggest the lease time it would like.  No other options    representing "hints" at configuration parameters are allowed in a    DHCPDISCOVER or DHCPREQUEST message.  The 'ciaddr' field is to be    filled in only in a DHCPREQUEST message when the client is requesting    use of a previously allocated IP address. 
  451.  
  452.    If a server receives a DHCPREQUEST message with an invalid 'ciaddr',    the server SHOULD respond to the client with a DHCPNAK message and    may choose to report the problem to the system administrator.  The    server may include an error message in the 'message' option. 
  453.  
  454. 3.5 Use of DHCP in clients with multiple interfaces 
  455.  
  456.    A host with multiple network interfaces must use DHCP through each    interface independently to obtain configuration information    parameters for those separate interfaces. 
  457.  
  458. 3.6 When clients should use DHCP 
  459.  
  460.    A host should use DHCP to reacquire or verify its IP address and    network parameters whenever the local network parameters may have    changed; e.g., at system boot time or after a disconnection from the    local network, as the local network configuration may change without    the host's or user's knowledge. 
  461.  
  462.    If a host has knowledge of a previous network address and is unable    to contact a local DHCP server, the host may continue to use the    previous network address until the lease for that address expires. 
  463.  
  464.  
  465.  
  466. Droms                                                          [Page 20] 
  467.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  468.  
  469.     If the lease expires before the host can contact a DHCP server, the    host must immediately discontinue use of the previous network address    and may inform local users of the problem. 
  470.  
  471. 4. Specification of the DHCP client-server protocol 
  472.  
  473.    In this section, we assume that a DHCP server has a block of network    addresses from which it can satisfy requests for new addresses.  Each    server also maintains a database of allocated addresses and leases in    local permanent storage. 
  474.  
  475. 4.1 Constructing and sending DHCP messages 
  476.  
  477.    DHCP clients and servers both construct DHCP messages by filling in    fields in the fixed format section of the message and appending    tagged data items in the variable length option area.  The options    area includes first a four-octet 'magic cookie' (which was described    in section 3), followed by the options.  The last option must always    be the 'end' option. 
  478.  
  479.    DHCP uses UDP as its transport protocol.  DHCP messages from a client    to a server are sent to the 'DHCP server' port (67), and DHCP    messages from a server to a client are sent to the 'DHCP client' port    (68). 
  480.  
  481.    DHCP messages broadcast by a client prior to that client obtaining    its IP address must have the source address field in the IP header    set to 0. 
  482.  
  483.    If the 'giaddr' field in a DHCP message from a client is non-zero,    the server sends any return messages to the 'DHCP server' port on the    DHCP relaying agent whose address appears in 'giaddr'.  If the    'giaddr' field is zero, the client is on the same subnet, and the    server sends any return messages to either the client's network    address, if that address was supplied in the 'ciaddr' field, or to    the client's hardware address or to the local subnet broadcast    address. 
  484.  
  485.    If the options in a DHCP message extend into the 'sname' and 'file'    fields, the 'option overload' option MUST appear in the 'options'    field, with value 1, 2 or 3, as specified in the DHCP options    document [2].  If the 'option overload' option is present in the    'options' field, the options in the 'options' field MUST be    terminated by an 'end' option, and MAY contain one or more 'pad'    options to fill the options field.  The options in the 'sname' and    'file' fields (if in use as indicated by the 'options overload'    option) MUST begin with the first octet of the field, MUST be    terminated by an 'end' option, and MUST be followed by 'pad' options 
  486.  
  487.  
  488.  
  489. Droms                                                          [Page 21] 
  490.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  491.  
  492.     to fill the remainder of the field.  Any individual option in the    'options', 'sname' and 'file' fields MUST be entirely contained in    that field.  The options in the 'options' field MUST be interpreted    first, so that any 'option overload' options may be interpreted.  The    'file' field MUST be interpreted next (if the 'option overload'    option indicates that the 'file' field contains DHCP options),    followed by the 'sname' field. 
  493.  
  494.    DHCP clients are responsible for all message retransmission.  The    client MUST adopt a retransmission strategy that incorporates a    randomized exponential backoff algorithm to determine the delay    between retransmissions.  The delay before the first retransmission    MUST be 4 seconds randomized by the value of a uniform random number    chosen from the range -1 to +1.  Clients with clocks that provide    resolution granularity of less than one second may choose a non-    integer randomization value.  The delay before the next    retransmission MUST be 8 seconds randomized by the value of a uniform    number chosen from the range -1 to +1.  The retransmission delay MUST    be doubled with subsequent retransmissions up to a maximum of 64    seconds.  The client MAY provide an indication of retransmission    attempts to the user as an indication of the progress of the    configuration process.  The protocol specification in the remainder    of this section will describe, for each DHCP message, when it is    appropriate for the client to retransmit that message forever, and    when it is appropriate for a client to abandon that message and    attempt to use a different DHCP message. 
  495.  
  496.    Normally, DHCP servers and BOOTP relay agents attempt to deliver    DHCPOFFER, DHCPACK and DHCPNAK messages directly to the client using    unicast delivery.  The IP destination address (in the IP header) is    set to the DHCP 'yiaddr' address and the link-layer destination    address is set to the DHCP 'chaddr' address.  Unfortunately, some    client implementations are unable to receive such unicast IP    datagrams until the implementation has been configured with a valid    IP address (leading to a deadlock in which the client's IP address    cannot be delivered until the client has been configured with an IP    address). 
  497.  
  498.    A client that cannot receive unicast IP datagrams until its protocol    software has been configured with an IP address SHOULD set the    BROADCAST bit in the 'flags' field to 1 in any DHCPDISCOVER or    DHCPREQUEST messages that client sends.  The BROADCAST bit will    provide a hint to the DHCP server and BOOTP relay agent to broadcast    any messages to the client on the client's subnet.  A client that can    receive unicast IP datagrams before its protocol software has been    configured SHOULD clear the BROADCAST bit to 0.  The BOOTP    clarifications document discusses the ramifications of the use of the    BROADCAST bit [21]. 
  499.  
  500.  
  501.  
  502. Droms                                                          [Page 22] 
  503.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  504.  
  505.     A server or relay agent sending or relaying a DHCP message directly    to a DHCP client (i.e., not to a relay agent specified in the    'giaddr' field) SHOULD examine the BROADCAST bit in the 'flags'    field.  If this bit is set to 1, the DHCP message SHOULD be sent as    an IP broadcast using an IP broadcast address (preferably    255.255.255.255) as the IP destination address and the link-layer    broadcast address as the link-layer destination address.  If the    BROADCAST bit is cleared to 0, the message SHOULD be sent as an IP    unicast to the IP address specified in the 'yiaddr' field and the    link-layer address specified in the 'chaddr' field.  If unicasting is    not possible, the message MAY be sent as an IP broadcast using an IP    broadcast address (preferably 255.255.255.255) as the IP destination    address and the link-layer broadcast address as the link-layer    destination address. 
  506.  
  507. 4.2 DHCP server administrative controls 
  508.  
  509.    DHCP servers are not required to respond to every DHCPDISCOVER and    DHCPREQUEST message they receive.  For example, a network    administrator, to retain stringent control over the hosts attached to    the network, may choose to configure DHCP servers to respond only to    hosts that have been previously registered through some external    mechanism.  The DHCP specification describes only the interactions    between clients and servers when the clients and servers choose to    interact; it is beyond the scope of the DHCP specification to    describe all of the administrative controls that system    administrators might want to use.  Specific DHCP server    implementations may incorporate any controls or policies desired by a    network administrator. 
  510.  
  511.    In some environments, a DHCP server will have to consider the values    of the 'chaddr' field and/or the 'class-identifier' option included    in the DHCPDISCOVER or DHCPREQUEST messages when determining the    correct parameters for a particular client.  For example, an    organization might have a separate bootstrap server for each type of    client it uses, requiring the DHCP server to examine the 'class-    identifier' to determine which bootstrap server address to return in    the 'siaddr' field of a DHCPOFFER or DHCPACK message. 
  512.  
  513.    A DHCP server must use some unique identifier to associate a client    with its lease.  The client may choose to explicitly provide the    identifier through the 'client identifier' option.  If the client    does not provide a 'client identifier' option, the server MUST use    the contents of the 'chaddr' field to identify the client. 
  514.  
  515.    DHCP clients are free to use any strategy in selecting a DHCP server    among those from which the client receives a DHCPOFFER message.  The    client implementation of DHCP should provide a mechanism for the user 
  516.  
  517.  
  518.  
  519. Droms                                                          [Page 23] 
  520.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  521.  
  522.     to select directly the 'class-identifier' value. 
  523.  
  524. 4.3 DHCP server behavior 
  525.  
  526.    A DHCP server processes incoming DHCP messages from a client based on    the current state of the binding for that client.  A DHCP server can    receive the following messages from a client: 
  527.  
  528.       o DHCPDISCOVER 
  529.  
  530.       o DHCPREQUEST 
  531.  
  532.       o DHCPDECLINE 
  533.  
  534.       o DHCPRELEASE 
  535.  
  536.    Table 3 gives the use of the fields and options in a DHCP message by    a server.  The remainder of this section describes the action of the    DHCP server for each possible incoming message. 
  537.  
  538. 4.3.1 DHCPDISCOVER message 
  539.  
  540.    When a server receives a DHCPDISCOVER message from a client, the    server chooses a network address for the requesting client.  If no    address is available, the server may choose to report the problem to    the system administrator and may choose to reply to the client with a    DHCPNAK message.  If the server chooses to respond to the client, it    may include an error message in the 'message' option.  If an address    is available, the new address should be chosen as follows: 
  541.  
  542.    o The client's previous address as recorded in the client's binding,      if that address is in the server's pool of available addresses and      not already allocated, else 
  543.  
  544.    o The address requested in the 'Requested IP Address' option, if that      address is valid and not already allocated, else 
  545.  
  546.    o A new address allocated from the server's pool of available      addresses. 
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  Droms                                                          [Page 24] 
  559.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  560.  
  561.    Field      DHCPOFFER            DHCPACK             DHCPNAK   -----      ---------            -------             ------- 
  562.  
  563.   '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 
  564.  
  565.   Option                   DHCPOFFER        DHCPACK          DHCPNAK   ------                   ---------        -------          ------- 
  566.  
  567.   Requested IP address     MUST NOT         MUST NOT         MUST NOT   IP address lease time    MUST             MUST             MUST NOT   Use 'file'/'sname'       MAY              MAY              MUST NOT   fields   DHCP message type        DHCPOFFER        DHCPACK          DHCPNAK   Parameter request list   MUST NOT         MUST NOT         MUST NOT   Message                  SHOULD           SHOULD           SHOULD   Client identifier        MUST NOT         MUST NOT         MUST NOT   Class identifier         MUST NOT         MUST NOT         MUST NOT   Server identifier        MUST             MAY              MAY   Maximum message size     MUST NOT         MUST NOT         MUST NOT   All others               MAY              MAY              MUST NOT 
  568.  
  569.            Table 3:  Fields and options used by DHCP servers 
  570.  
  571.  
  572.  
  573.  
  574.  
  575. Droms                                                          [Page 25] 
  576.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  577.  
  578.     As described in section 4.2, a server MAY, for administrative    reasons, assign an address other than the one requested, or may    refuse to allocate an address to a particular client even though free    addresses are available. 
  579.  
  580.    While not required for correct operation of DHCP, the server should    not reuse the selected network address before the client responds to    the server's DHCPOFFER message.  The server may choose to record the    address as offered to the client. 
  581.  
  582.    The server must also choose an expiration time for the lease, as    follows: 
  583.  
  584.    o IF the client has not requested a specific lease in the      DHCPDISCOVER message and the client already has an assigned network      address, the server returns the lease expiration time previously      assigned to that address (note that the client must explicitly      request a specific lease to extend the expiration time on a      previously assigned address), ELSE 
  585.  
  586.    o IF the client has not requested a specific lease in the      DHCPDISCOVER message and the client does not have an assigned      network address, the server assigns a locally configured default      lease time, ELSE 
  587.  
  588.    o IF the client has requested a specific lease in the DHCPDISCOVER      message (regardless of whether the client has an assigned network      address), the server may choose either to return the requested      lease (if the lease is acceptable to local policy) or select      another lease. 
  589.  
  590.    Once the network address and lease have been determined, the server    constructs a DHCPOFFER message with the offered configuration    parameters.  It is important for all DHCP servers to return the same    parameters (with the possible exception of a newly allocated network    address) to ensure predictable host behavior regardless of the which    server the client selects.  The configuration parameters MUST be    selected by applying the following rules in the order given below.    The network administrator is responsible for configuring multiple    DHCP servers to ensure uniform responses from those servers.  The    server MUST return to the client: 
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  Droms                                                          [Page 26] 
  601.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  602.  
  603.     o The client's network address, as determined by the rules given      earlier in this section, and the subnet mask for the network to      which the client is connected, 
  604.  
  605.    o The expiration time for the client's lease, as determined by the      rules given earlier in this section, 
  606.  
  607.    o Parameters requested by the client, according to the following      rules: 
  608.  
  609.         -- IF the server has been explicitly configured with a default            value for the parameter, the server MUST include that value            in an appropriate option in the 'option' field, ELSE 
  610.  
  611.         -- IF the server recognizes the parameter as a parameter            defined in the Host Requirements Document, the server MUST            include the default value for that parameter as given in the            Host Requirements Document in an appropriate option in the            'option' field, ELSE 
  612.  
  613.         -- The server MUST NOT return a value for that parameter, 
  614.  
  615.    o Any parameters from the existing binding that differ from the Host      Requirements documents defaults, 
  616.  
  617.    o Any parameters specific to this client (as identified by      the contents of 'chaddr' in the DHCPDISCOVER or DHCPREQUEST      message), e.g., as configured by the network administrator, 
  618.  
  619.    o Any parameters specific to this client's class (as identified      by the contents of the 'class identifier' option in the      DHCPDISCOVER or DHCPREQUEST message), e.g., as configured by      the network administrator; the parameters MUST be identified      by an exact match between the client's 'client class' and the      client class identified in the server, 
  620.  
  621.    o Parameters with non-default values on the client's subnet. 
  622.  
  623.    The server inserts the 'xid' field from the DHCPDISCOVER message into    the 'xid' field of the DHCPOFFER message and sends the DHCPOFFER    message to the requesting client. 
  624.  
  625. 4.3.2 DHCPREQUEST message 
  626.  
  627.    A DHCPREQUEST message may come from a client responding to a    DHCPOFFER message from a server, or from a client verifying a    previously allocated IP address.  If the DHCPREQUEST message contains    a 'server identifier' option, the message is in response to a 
  628.  
  629.  
  630.  
  631. Droms                                                          [Page 27] 
  632.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  633.  
  634.     DHCPOFFER message.  Otherwise, the message is a request to renew or    extend an existing lease. 
  635.  
  636.    Consider first the case of a DHCPREQUEST message in response to a    DHCPOFFER message.  If the server is identified in the 'server    identifier' option in the DHCPREQUEST message, the server checks to    confirm that the requested parameters are acceptable.  Usually, the    requested parameters will match those returned to the client in the    DHCPOFFER message; however, the client may choose to request a    different lease duration.  Also, there is no requirement that the    server cache the parameters from the DHCPOFFER message.  The server    must simply check that the parameters requested in the DHCPREQUEST    are acceptable.  If the parameters are acceptable, the server records    the new client binding and returns a DHCPACK message to the client. 
  637.  
  638.    If the requested parameters are unacceptable, e.g., the requested    lease time is unacceptable to local policy, the server sends a    DHCPNAK message to the client.  The server may choose to return an    error message in the 'message' option. 
  639.  
  640.    If a different server is identified in the 'server identifier' field,    the client has selected a different server from which to obtain    configuration parameters.  The server may discard any information it    may have cached about the client's request, and may free the network    address that it had offered to the client. 
  641.  
  642.    Note that the client may choose to collect several DHCPOFFER messages    and select the "best" offer.  The client indicates its selection by    identifying the offering server in the DHCPREQUEST message.  If the    client receives no acceptable offers, the client may choose to try    another DHCPDISCOVER message.  Therefore, the servers may not receive    a specific DHCPREQUEST from which they can decide whether or not the    client has accepted the offer.  Because the servers have not    committed any network address assignments on the basis of a    DHCPOFFER, servers are free to reuse offered network addresses in    response to subsequent requests.  As an implementation detail,    servers should not reuse offered addresses and may use an    implementation-specific timeout mechanism to decide when to reuse an    offered address. 
  643.  
  644.    In the second case, when there is no 'server identifier' option, the    client is renewing or extending a previously allocated IP address.    The server checks to confirm that the requested parameters are    acceptable.  If the parameters specified in the DHCPREQUEST message    match the previous parameters, or if the request for an extension of    the lease (indicated by an extended 'IP address lease time' option)    is acceptable, the server returns a DHCPACK message to the requesting    client.  Otherwise, the server returns a DHCPNAK message to the 
  645.  
  646.  
  647.  
  648. Droms                                                          [Page 28] 
  649.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  650.  
  651.     client.  In particular, if the previously allocated network address    in the 'ciaddr' field from the client does not match the network    address recorded by the server for that client, the server sends a    DHCPNAK to the client. 
  652.  
  653.    A DHCP server chooses the parameters to return in a DHCPACK message    according to the same rules as used in constructing a DHCPOFFER    message, as given in section 4.3.1. 
  654.  
  655. 4.3.3 DHCPDECLINE message 
  656.  
  657.    If the server receives a DHCPDECLINE message, the client has    discovered through some other means that the suggested network    address is already in use.  The server MUST mark the network address    as not allocated and SHOULD notify the local system administrator of    a possible configuration problem. 
  658.  
  659. 4.3.4 DHCPRELEASE message 
  660.  
  661.    Upon receipt of a DHCPRELEASE message, the server marks the network    address as not allocated.  The server should retain a record of the    client's initialization parameters for possible reuse in response to    subsequent requests from the client. 
  662.  
  663. 4.4 DHCP client behavior 
  664.  
  665.    Figure 5 gives a state-transition diagram for a DHCP client.  A    client can receive the following messages from a server: 
  666.  
  667.       o DHCPOFFER 
  668.  
  669.       o DHCPACK 
  670.  
  671.       o DHCPNAK 
  672.  
  673.    Table 4 gives the use of the fields and options in a DHCP message by    a client.  The remainder of this section describes the action of the    DHCP client for each possible incoming message.  The description in    the following section corresponds to the full configuration procedure    previously described in section 3.1, and the text in the subsequent    section corresponds to the abbreviated configuration procedure    described in section 3.2. 
  674.  
  675. 4.4.1 Initialization and allocation of network address 
  676.  
  677.    The client begins in INIT state and forms a DHCPDISCOVER message.    The client should wait a random time between one and ten seconds to    desynchronize the use of DHCP at startup.  The client sets 'ciaddr' 
  678.  
  679.  
  680.  
  681. Droms                                                          [Page 29] 
  682.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  683.  
  684.     to 0x00000000.  The client MAY request specific parameters by    including the 'parameter request list' option.  The client MAY    suggest a network address and/or lease time by including the    'requested IP address' and 'IP address lease time' options.  The    client MUST include its hardware address in the 'chaddr' field for    use in delivery of DHCP reply messages.  The client MAY include a    different unique identifier in the 'client identifier' option.  If    the client does not include the 'client identifier' option, the    server will use the contents of the 'chaddr' field to identify the    client's lease. 
  685.  
  686.    The client generates and records a random transaction identifier and    inserts that identifier into the 'xid' field.  The client records its    own local time for later use in computing the lease expiration.  The    client then broadcasts the DHCPDISCOVER on the local hardware    broadcast address to 0xffffffff IP broadcast address and 'DHCP    server' UDP port. 
  687.  
  688.    If the 'xid' of an arriving DHCPOFFER message does not match the    'xid' of the most recent DHCPDISCOVER message, the DHCPOFFER message    must be silently discarded.  Any arriving DHCPACK messages must be    silently discarded. 
  689.  
  690.    The client collects DHCPOFFER messages over a period of time, selects    one DHCPOFFER message from the (possibly many) incoming DHCPOFFER    messages (e.g., the first DHCPOFFER message or the DHCPOFFER message    from the previously used server) and extracts the server address from    the 'server identifier' option in the DHCPOFFER message.  The time    over which the client collects messages and the mechanism used to    select one DHCPOFFER are implementation dependent.  The client may    perform a check on the suggested address to ensure that the address    is not already in use.  For example, if the client is on a network    that supports ARP, the client may issue an ARP request for the    suggested request.  When broadcasting an ARP request for the    suggested address, the client must fill in its own hardware address    as the sender's hardware address, and 0 as the sender's IP address,    to avoid confusing ARP caches in other hosts on the same subnet.  If    the network address appears to be in use, the client sends a    DHCPDECLINE message to the server and waits for another DHCPOFFER. As    the client does not have a valid network address, the client must    broadcast the DHCPDECLINE message. 
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  Droms                                                          [Page 30] 
  701.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  702.  
  703.   --------                               ------- |        | +-------------------------->|       |<-------------------+ | INIT/  | |     +-------------------->| INIT  |                    | | REBOOT |DHCPNAK/         +---------->|       |<---+               | |        |Restart|         |            -------     |               |  --------  |  DHCPNAK/     |               |                        |     |      Discard offer   |      -/Send DHCPDISCOVER               | -/Send DHCPREQUEST         |               |                        |     |      |     |      DHCPACK            v        |               |  -----------     |   (not accept.)/   -----------   |               | |           |    |  Send DHCPDECLINE |           |  |               | | REBOOTING |    |         |         | SELECTING |  |               | |           |    |        /          |           |  |               |  -----------     |       /            -----------   |               |     |            |      /                  |        |               | DHCPACK/         |     /  +----------------+        |               | Record lease,    |    |   v                         |               | set timers      ------------                        |               |     |   +----->|            |             DHCPNAK, Lease expired/   |     |   |      | REQUESTING |                  Halt network         |     DHCPOFFER/ |            |                       |               |     Discard     ------------                        |               |     |   |        |        |                   -----------           |     |   +--------+     DHCPACK/              |           |          |     |              Record lease, set    -----| REBINDING |          |     |                timers T1, T2     /     |           |          |     |                     |        DHCPACK/   -----------           |     |                     v     Record lease, set   ^               |     +----------------> -------      /Timers T1,T2   |               |                +----->|       |<---+                |               |                |      | BOUND |<---+                |               |   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 |                |               |                          |   ----------             |               |                          |  |          |------------+               |                          +->| RENEWING |                            |                             |          |----------------------------+                              ---------- 
  704.  
  705.           Figure 5:  State-transition diagram for DHCP clients 
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  Droms                                                          [Page 31] 
  712.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  713.  
  714.    Field      DHCPDISCOVER          DHCPREQUEST           DHCPDECLINE,                                                          DHCPRELEASE   -----      ------------          -----------           ----------- 
  715.  
  716.   '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) 
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  Droms                                                          [Page 32] 
  731.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  732.  
  733.    Option                     DHCPDISCOVER  DHCPREQUEST      DHCPDECLINE,                                                             DHCPRELEASE   ------                     ------------  -----------      ----------- 
  734.  
  735.   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 
  736.  
  737.            Table 4:  Fields and options used by DHCP clients 
  738.  
  739.    If the parameters are acceptable, the client records the address of    the server that supplied the parameters from the 'server identifier'    field and sends that address in the 'server identifier' field of a    DHCPREQUEST broadcast message.  Once the DHCPACK message from the    server arrives, the client is initialized and moves to BOUND state.    The DHCPREQUEST message contains the same 'xid' as the DHCPOFFER    message.  The client records the lease expiration time as the sum of    the time at which the original request was sent and the duration of    the lease from the DHCPOFFER message.  The client SHOULD broadcast an    ARP reply to announce the client's new IP address and clear any    outdated ARP cache entries in hosts on the client's subnet. 
  740.  
  741. 4.4.2 Initialization with known network address 
  742.  
  743.    The client begins in INIT-REBOOT state and sends a DHCPREQUEST message    with the 'ciaddr' field set to the client's network address.  The    client may request specific configuration parameters by including    the 'parameter request list' option.  The client generates and records a    random transaction identifier and inserts that identifier into the 'xid'    field.  The client records its own local time for later use in    computing the lease expiration.  The client MUST NOT incldue a 'server    identifier' in the DHCPREQUEST message.  The client then broadcasts    the DHCPREQUEST on the local hardware broadcast address to the 'DHCP    server' UDP port. 
  744.  
  745.  
  746.  
  747.  Droms                                                          [Page 33] 
  748.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  749.  
  750.     Once a DHCPACK message with an 'xid' field matching that in the    client's DHCPREQUEST message arrives from any server, the client is    initialized and moves to BOUND state.  The client records the lease    expiration time as the sum of the time at which the DHCPREQUEST    message was sent and the duration of the lease from the DHCPACK    message. 
  751.  
  752. 4.4.3 Initialization with a known DHCP server address 
  753.  
  754.    When the DHCP client knows the address of a DHCP server, in either    INIT or REBOOTING state, the client may use that address in the    DHCPDISCOVER or DHCPREQUEST rather than the IP broadcast address.  If    the client receives no response to DHCP messages sent to the IP    address of a known DHCP server, the DHCP client reverts to using the    IP broadcast address. 
  755.  
  756. 4.4.4 Reacquisition and expiration 
  757.  
  758.    The client maintains two times, T1 and T2, that specify the times at    which the client tries to extend its lease on its network address.  T1    is the time at which the client enters the RENEWING state and attempts    to contact the server that originally issued the client's network    address.  T2 is the time at which the client enters the REBINDING    state and attempts to contact any server. 
  759.  
  760.    At time T1 after the client accepts the lease on its network address,    the client moves to RENEWING state and sends (via unicast) a    DHCPREQUEST message to the server to extend its lease.  The client    generates a random transaction identifier and inserts that identifier    into the 'xid' field in the DHCPREQUEST. The client records the local    time at which the DHCPREQUEST message is sent for computation of the    lease expiration time.  The client MUST NOT include a 'server    identifier' in the DHCPREQUEST message. 
  761.  
  762.    Any DHCPACK messages that arrive with an 'xid' that does not match    the 'xid' of the client's DHCPREQUEST message are silently discarded.    When the client receives a DHCPACK from the server, the client    computes the lease expiration time as the sum of the time at which the    client sent the DHCPREQUEST message and the duration of the lease in    the DHCPACK message.  The client has successfully reacquired its    network address, returns to BOUND state and may continue network    processing. 
  763.  
  764.    If no DHCPACK arrives before time T2 (T2 > T1) before the expiration    of the client's lease on its network address, the client moves to    REBINDING state and sends (via broadcast) a DHCPREQUEST message to    extend its lease.  The client sets the 'ciaddr' field in the    DHCPREQUEST to its current network address.  The client MUST NOT 
  765.  
  766.  
  767.  
  768. Droms                                                          [Page 34] 
  769.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  770.  
  771.     include a 'server identifier' in the DHCPREQUEST message. 
  772.  
  773.    Times T1 and T2 are configurable by the server through options.  T1    defaults to (0.5 * duration_of_lease).  T2 defaults to (0.875 *    duration_of_lease).  Times T1 and T2 should be chosen with some random    "fuzz" around a fixed value, to avoid synchronization of client    reacquisition. 
  774.  
  775.    In both RENEWING and REBINDING state, if the client receives no    response to its DHCPREQUEST message, the client should wait one-half    the remaining time until the expiration of T1 (in RENEWING state) and    T2 (in REBINDING state) down to a minimum of 60 seconds, before    retransmitting the DHCPREQUEST message. 
  776.  
  777.    If the lease expires before the client receives a DHCPACK, the client    moves to INIT state, MUST immediately stop any other network    processing and requests network initialization parameters as if the    client were uninitialized.  If the client then receives a DHCPACK    allocating that client its previous network address, the client SHOULD    continue network processing.  If the client is given a new network    address, it MUST NOT continue using the previous network address and    SHOULD notify the local users of the problem. 
  778.  
  779. 4.4.5 DHCPRELEASE 
  780.  
  781.    If the client no longer requires use of its assigned network address    (e.g., the client is gracefully shut down), the client sends a    DHCPRELEASE message to the server.  Note that the correct operation of    DHCP does not depend on the transmission of DHCPRELEASE messages. 
  782.  
  783. 5. Acknowledgments 
  784.  
  785.    Greg Minshall, Leo McLaughlin and John Veizades have patiently    contributed to the the design of DHCP through innumerable discussions,    meetings and mail conversations.  Jeff Mogul first proposed the    client-server based model for DHCP.  Steve Deering searched the    various IP RFCs to put together the list of network parameters    supplied by DHCP.  Walt Wimer contributed a wealth of practical    experience with BOOTP and wrote a document clarifying the behavior of    BOOTP/DHCP relay agents.  Jesse Walker analyzed DHCP in detail,    pointing out several inconsistencies in earlier specifications of the    protocol.  Steve Alexander reviewed Walker's analysis and the fixes to    the protocol based on Walker's work.  And, of course, all the members    of the Dynamic Host Configuration Working Group of the IETF have    contributed to the design of the protocol through discussion and    review of the protocol design. 
  786.  
  787.  
  788.  
  789.  
  790.  
  791. Droms                                                          [Page 35] 
  792.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  793.  
  794.  6. References 
  795.  
  796.    [1] Acetta, M., "Resource Location Protocol", RFC 887, CMU, December        1983. 
  797.  
  798.    [2] Alexander, S., and R. Droms, "DHCP Options and BOOTP Vendor        Extensions", RFC 1533, Lachman Technology, Inc., Bucknell        University, October 1993. 
  799.  
  800.    [3] Braden, R., Editor, "Requirements for Internet Hosts --        Communication Layers", STD 3, RFC 1122, USC/Information Sciences        Institute, October 1989. 
  801.  
  802.    [4] Braden, R., Editor, "Requirements for Internet Hosts --        Application and Support, STD 3, RFC 1123, USC/Information        Sciences Institute, October 1989. 
  803.  
  804.    [5] Brownell, D, "Dynamic Reverse Address Resolution Protocol        (DRARP)", Work in Progress. 
  805.  
  806.    [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. 
  807.  
  808.    [7] Croft, B., and J. Gilmore, "Bootstrap Protocol (BOOTP)", RFC 951,        Stanford and SUN Microsystems, September 1985. 
  809.  
  810.    [8] Deering, S., "ICMP Router Discovery Messages", RFC 1256, Xerox        PARC, September 1991. 
  811.  
  812.    [9] Droms, D., "Interoperation between DHCP an BOOTP" RFC 1534,        Bucknell University, October 1993. 
  813.  
  814.   [10] Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A Reverse        Address Resolution Protocol", RFC 903, Stanford, June 1984. 
  815.  
  816.   [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. 
  817.  
  818.   [12] Mockapetris, P., "Domain Names -- Concepts and Facilities", STD        13, RFC 1034, USC/Information Sciences Institute, November 1987. 
  819.  
  820.   [13] Mockapetris, P., "Domain Names -- Implementation and        Specification", STD 13, RFC 1035, USC/Information Sciences        Institute, November 1987. 
  821.  
  822.  
  823.  
  824.  
  825.  
  826. Droms                                                          [Page 36] 
  827.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  828.  
  829.    [14] Mogul J., and S. Deering, "Path MTU Discovery", RFC 1191,        November 1990. 
  830.  
  831.   [15] Morgan, R., "Dynamic IP Address Assignment for Ethernet Attached        Hosts", Work in Progress. 
  832.  
  833.   [16] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792,        USC/Information Sciences Institute, September 1981. 
  834.  
  835.   [17] Reynolds, J., "BOOTP Vendor Information Extensions", RFC 1497,        USC/Information Sciences Institute, August 1993. 
  836.  
  837.   [18] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340,        USC/Information Sciences Institute, July 1992. 
  838.  
  839.   [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. 
  840.  
  841.   [20] Sollins, K., "The TFTP Protocol (Revision 2)",  RFC 783, NIC,        June 1981. 
  842.  
  843.   [21] Wimer, W., "Clarifications and Extensions for the Bootstrap        Protocol", RFC 1542, Carnegie Mellon University, October 1993. 
  844.  
  845. 7. Security Considerations 
  846.  
  847.    DHCP is built directly on UDP and IP which are as yet inherently    insecure.  Furthermore, DHCP is generally intended to make    maintenance of remote and/or diskless hosts easier.  While perhaps    not impossible, configuring such hosts with passwords or keys may be    difficult and inconvenient.  Therefore, DHCP in its current form is    quite insecure. 
  848.  
  849.    Unauthorized DHCP servers may be easily set up.  Such servers can    then send false and potentially disruptive information to clients    such as incorrect or duplicate IP addresses, incorrect routing    information (including spoof routers, etc.), incorrect domain    nameserver addresses (such as spoof nameservers), and so on.    Clearly, once this seed information is in place, an attacker can    further compromise affected systems. 
  850.  
  851.    Malicious DHCP clients could masquerade as legitimate clients and    retrieve information intended for those legitimate clients.  Where    dynamic allocation of resources is used, a malicious client could    claim all resources for itself, thereby denying resources to    legitimate clients. 
  852.  
  853.  
  854.  
  855.  Droms                                                          [Page 37] 
  856.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  857.  
  858.  8. Author's Address 
  859.  
  860.    Ralph Droms    Computer Science Department    323 Dana Engineering    Bucknell University    Lewisburg, PA 17837 
  861.  
  862.    Phone: (717) 524-1145    EMail: droms@bucknell.edu 
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904. Droms                                                          [Page 38] 
  905.  RFC 1541          Dynamic Host Configuration Protocol       October 1993 
  906.  
  907.  A. Host Configuration Parameters 
  908.  
  909.    IP-layer_parameters,_per_host:_ 
  910.  
  911.    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 
  912.  
  913.    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 
  914.  
  915.    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 
  916.  
  917. Key: 
  918.  
  919.    MTU = Path MTU Discovery (RFC 1191, Proposed Standard)    RD = Router Discovery (RFC 1256, Proposed Standard) 
  920.  
  921.  
  922.  
  923. Droms                                                          [Page 39] 
  924.  
  925.