2524 lines
111 KiB
Plaintext
2524 lines
111 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Network Working Group R. Droms
|
|||
|
Request for Comments: 2131 Bucknell University
|
|||
|
Obsoletes: 1541 March 1997
|
|||
|
Category: Standards Track
|
|||
|
|
|||
|
Dynamic Host Configuration Protocol
|
|||
|
|
|||
|
Status of this memo
|
|||
|
|
|||
|
This document 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" (STD 1) for the standardization state
|
|||
|
and status of this protocol. Distribution of this memo is unlimited.
|
|||
|
|
|||
|
Abstract
|
|||
|
|
|||
|
The Dynamic Host Configuration Protocol (DHCP) provides a framework
|
|||
|
for passing configuration information to hosts on a TCPIP 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, 21], and DHCP participants can interoperate
|
|||
|
with BOOTP participants [9].
|
|||
|
|
|||
|
Table of Contents
|
|||
|
|
|||
|
1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 2
|
|||
|
1.1 Changes to RFC1541. . . . . . . . . . . . . . . . . . . . . . 3
|
|||
|
1.2 Related Work. . . . . . . . . . . . . . . . . . . . . . . . . 4
|
|||
|
1.3 Problem definition and issues . . . . . . . . . . . . . . . . 4
|
|||
|
1.4 Requirements. . . . . . . . . . . . . . . . . . . . . . . . . 5
|
|||
|
1.5 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6
|
|||
|
1.6 Design goals. . . . . . . . . . . . . . . . . . . . . . . . . 6
|
|||
|
2. Protocol Summary. . . . . . . . . . . . . . . . . . . . . . . 8
|
|||
|
2.1 Configuration parameters repository . . . . . . . . . . . . . 11
|
|||
|
2.2 Dynamic allocation of network addresses . . . . . . . . . . . 12
|
|||
|
3. The Client-Server Protocol. . . . . . . . . . . . . . . . . . 13
|
|||
|
3.1 Client-server interaction - allocating a network address. . . 13
|
|||
|
3.2 Client-server interaction - reusing a previously allocated
|
|||
|
network address . . . . . . . . . . . . . . . . . . . . . . . 17
|
|||
|
3.3 Interpretation and representation of time values. . . . . . . 20
|
|||
|
3.4 Obtaining parameters with externally configured network
|
|||
|
address . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
|
|||
|
3.5 Client parameters in DHCP . . . . . . . . . . . . . . . . . . 21
|
|||
|
3.6 Use of DHCP in clients with multiple interfaces . . . . . . . 22
|
|||
|
3.7 When clients should use DHCP. . . . . . . . . . . . . . . . . 22
|
|||
|
4. Specification of the DHCP client-server protocol. . . . . . . 22
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 1]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
4.1 Constructing and sending DHCP messages. . . . . . . . . . . . 22
|
|||
|
4.2 DHCP server administrative controls . . . . . . . . . . . . . 25
|
|||
|
4.3 DHCP server behavior. . . . . . . . . . . . . . . . . . . . . 26
|
|||
|
4.4 DHCP client behavior. . . . . . . . . . . . . . . . . . . . . 34
|
|||
|
5. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . .42
|
|||
|
6. References . . . . . . . . . . . . . . . . . . . . . . . . . .42
|
|||
|
7. Security Considerations. . . . . . . . . . . . . . . . . . . .43
|
|||
|
8. Author's Address . . . . . . . . . . . . . . . . . . . . . . .44
|
|||
|
A. Host Configuration Parameters . . . . . . . . . . . . . . . .45
|
|||
|
List of Figures
|
|||
|
1. Format of a DHCP message . . . . . . . . . . . . . . . . . . . 9
|
|||
|
2. Format of the 'flags' field. . . . . . . . . . . . . . . . . . 11
|
|||
|
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. . . . . . . . . . . 34
|
|||
|
List of Tables
|
|||
|
1. Description of fields in a DHCP message. . . . . . . . . . . . 10
|
|||
|
2. DHCP messages. . . . . . . . . . . . . . . . . . . . . . . . . 14
|
|||
|
3. Fields and options used by DHCP servers. . . . . . . . . . . . 28
|
|||
|
4. Client messages from various states. . . . . . . . . . . . . . 33
|
|||
|
5. Fields and options used by DHCP clients. . . . . . . . . . . . 37
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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
|
|||
|
parameters through DHCP, and the term "client" refers to a host
|
|||
|
requesting initialization parameters from a DHCP server.
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 2]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
DHCP supports three mechanisms for IP address allocation. In
|
|||
|
"automatic allocation", DHCP assigns a permanent IP address to a
|
|||
|
client. In "dynamic allocation", DHCP assigns an IP address to a
|
|||
|
client for a limited period of time (or until the client explicitly
|
|||
|
relinquishes the address). In "manual allocation", a client's IP
|
|||
|
address is assigned by the network administrator, and DHCP is used
|
|||
|
simply to convey the assigned address to the client. A particular
|
|||
|
network will use one or more of these mechanisms, depending on the
|
|||
|
policies of the network administrator.
|
|||
|
|
|||
|
Dynamic allocation is the only one of the three mechanisms that
|
|||
|
allows automatic reuse of an address that is no longer needed by the
|
|||
|
client to which it was assigned. Thus, dynamic allocation is
|
|||
|
particularly useful for assigning an address to a client that will be
|
|||
|
connected to the network only temporarily or for sharing a limited
|
|||
|
pool of IP addresses among a group of clients that do not need
|
|||
|
permanent IP addresses. Dynamic allocation may also be a good choice
|
|||
|
for assigning an IP address to a new client being permanently
|
|||
|
connected to a network where IP addresses are sufficiently scarce
|
|||
|
that it is important to reclaim them when old clients 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.
|
|||
|
|
|||
|
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, 21] and to allow interoperability of existing
|
|||
|
BOOTP clients with DHCP servers. Using BOOTP relay agents eliminates
|
|||
|
the necessity of having a DHCP server on each physical network
|
|||
|
segment.
|
|||
|
|
|||
|
1.1 Changes to RFC 1541
|
|||
|
|
|||
|
This document updates the DHCP protocol specification that appears in
|
|||
|
RFC1541. A new DHCP message type, DHCPINFORM, has been added; see
|
|||
|
section 3.4, 4.3 and 4.4 for details. The classing mechanism for
|
|||
|
identifying DHCP clients to DHCP servers has been extended to include
|
|||
|
"vendor" classes as defined in sections 4.2 and 4.3. The minimum
|
|||
|
lease time restriction has been removed. Finally, many editorial
|
|||
|
changes have been made to clarify the text as a result of experience
|
|||
|
gained in DHCP interoperability tests.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 3]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
1.2 Related Work
|
|||
|
|
|||
|
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].
|
|||
|
|
|||
|
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]. The Address Resolution Protocol (ARP) has been proposed
|
|||
|
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.
|
|||
|
|
|||
|
1.3 Problem definition and issues
|
|||
|
|
|||
|
DHCP is designed to supply DHCP clients with the configuration
|
|||
|
parameters defined in the Host Requirements RFCs. After obtaining
|
|||
|
parameters via DHCP, a DHCP client should be able to exchange packets
|
|||
|
with any other host in the Internet. The TCP/IP stack parameters
|
|||
|
supplied by DHCP are listed in Appendix A.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 4]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
Not all of these parameters are required for a newly initialized
|
|||
|
client. A client and server may negotiate for the transmission of
|
|||
|
only those parameters required by the client or specific to a
|
|||
|
particular subnet.
|
|||
|
|
|||
|
DHCP allows but does not require the configuration of client
|
|||
|
parameters not directly related to the IP protocol. DHCP also does
|
|||
|
not address registration of newly configured clients with the Domain
|
|||
|
Name System (DNS) [12, 13].
|
|||
|
|
|||
|
DHCP is not intended for use in configuring routers.
|
|||
|
|
|||
|
1.4 Requirements
|
|||
|
|
|||
|
Throughout this document, the words that are used to define the
|
|||
|
significance of particular requirements are capitalized. These words
|
|||
|
are:
|
|||
|
|
|||
|
o "MUST"
|
|||
|
|
|||
|
This word or the adjective "REQUIRED" means that the
|
|||
|
item is an absolute requirement of this specification.
|
|||
|
|
|||
|
o "MUST NOT"
|
|||
|
|
|||
|
This phrase means that the item is an absolute prohibition
|
|||
|
of this specification.
|
|||
|
|
|||
|
o "SHOULD"
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
o "SHOULD NOT"
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 5]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
o "MAY"
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
1.5 Terminology
|
|||
|
|
|||
|
This document uses the following terms:
|
|||
|
|
|||
|
o "DHCP client"
|
|||
|
|
|||
|
A DHCP client is an Internet host using DHCP to obtain
|
|||
|
configuration parameters such as a network address.
|
|||
|
|
|||
|
o "DHCP server"
|
|||
|
|
|||
|
A DHCP server is an Internet host that returns configuration
|
|||
|
parameters to DHCP clients.
|
|||
|
|
|||
|
o "BOOTP relay agent"
|
|||
|
|
|||
|
A BOOTP relay agent or 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.
|
|||
|
|
|||
|
o "binding"
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
1.6 Design goals
|
|||
|
|
|||
|
The following list gives general design goals for DHCP.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 6]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
o Clients should require no manual configuration. Each client
|
|||
|
should be able to discover appropriate local configuration
|
|||
|
parameters without user intervention and incorporate those
|
|||
|
parameters into its own configuration.
|
|||
|
|
|||
|
o Networks should require no manual configuration for individual
|
|||
|
clients. Under normal circumstances, the network manager
|
|||
|
should not have to enter any per-client configuration
|
|||
|
parameters.
|
|||
|
|
|||
|
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 relay agents.
|
|||
|
|
|||
|
o A DHCP client 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.
|
|||
|
|
|||
|
o DHCP must coexist with statically configured, non-participating
|
|||
|
hosts and with existing network protocol implementations.
|
|||
|
|
|||
|
o DHCP must interoperate with the BOOTP relay agent behavior as
|
|||
|
described by RFC 951 and by RFC 1542 [21].
|
|||
|
|
|||
|
o DHCP must provide service to existing BOOTP clients.
|
|||
|
|
|||
|
The following list gives design goals specific to the transmission of
|
|||
|
the network layer parameters. DHCP must:
|
|||
|
|
|||
|
o Guarantee that any specific network address will not be in
|
|||
|
use by more than one DHCP client at a time,
|
|||
|
|
|||
|
o Retain DHCP client configuration across DHCP client reboot. A
|
|||
|
DHCP client should, whenever possible, be assigned the same
|
|||
|
configuration parameters (e.g., network address) in response
|
|||
|
to each request,
|
|||
|
|
|||
|
o Retain DHCP client configuration across server reboots, and,
|
|||
|
whenever possible, a DHCP client should be assigned the same
|
|||
|
configuration parameters despite restarts of the DHCP mechanism,
|
|||
|
|
|||
|
o Allow automated assignment of configuration parameters to new
|
|||
|
clients to avoid hand configuration for new clients,
|
|||
|
|
|||
|
o Support fixed or permanent allocation of configuration
|
|||
|
parameters to specific clients.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 7]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
2. Protocol Summary
|
|||
|
|
|||
|
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. RFC 1542 [2] 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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
There are two primary differences between DHCP and BOOTP. First,
|
|||
|
DHCP defines mechanisms through which clients can be assigned a
|
|||
|
network address for a finite 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.
|
|||
|
|
|||
|
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."
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 8]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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 (variable) |
|
|||
|
+---------------------------------------------------------------+
|
|||
|
|
|||
|
Figure 1: Format of a DHCP message
|
|||
|
|
|||
|
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'
|
|||
|
is an opaque key, not to be interpreted by the server; for example,
|
|||
|
the 'client identifier' 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. The 'client identifier' chosen by a
|
|||
|
DHCP client MUST be unique to that client within the subnet to which
|
|||
|
the client is attached. If the client uses a 'client identifier' in
|
|||
|
one message, it MUST use that same identifier in all subsequent
|
|||
|
messages, to ensure that all servers correctly identify the client.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 9]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
FIELD OCTETS DESCRIPTION
|
|||
|
----- ------ -----------
|
|||
|
|
|||
|
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
|
|||
|
began address acquisition or renewal process.
|
|||
|
flags 2 Flags (see figure 2).
|
|||
|
ciaddr 4 Client IP address; only filled in if client is in
|
|||
|
BOUND, RENEW or REBINDING state and can respond
|
|||
|
to ARP requests.
|
|||
|
yiaddr 4 'your' (client) IP address.
|
|||
|
siaddr 4 IP address of next server to use in bootstrap;
|
|||
|
returned in DHCPOFFER, DHCPACK 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 var Optional parameters field. See the options
|
|||
|
documents for a list of defined options.
|
|||
|
|
|||
|
Table 1: Description of fields in a DHCP message
|
|||
|
|
|||
|
The 'options' field is now variable length. A DHCP client must be
|
|||
|
prepared to receive DHCP messages with an 'options' field of at least
|
|||
|
length 312 octets. This requirement implies that a DHCP client must
|
|||
|
be prepared to receive a message of up to 576 octets, the minimum IP
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 10]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
datagram size an IP 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.
|
|||
|
|
|||
|
In the case of a client using DHCP for initial configuration (before
|
|||
|
the client's TCP/IP software has been completely configured), DHCP
|
|||
|
requires creative use of the client's TCP/IP software and liberal
|
|||
|
interpretation of RFC 1122. The TCP/IP software SHOULD accept and
|
|||
|
forward to the IP layer any IP packets delivered to the client's
|
|||
|
hardware address before the IP address is configured; DHCP servers
|
|||
|
and BOOTP relay agents may not be able to deliver DHCP messages to
|
|||
|
clients that cannot accept hardware unicast datagrams before the
|
|||
|
TCP/IP software is configured.
|
|||
|
|
|||
|
To work around some clients that cannot accept IP unicast datagrams
|
|||
|
before the TCP/IP software is configured as discussed in the previous
|
|||
|
paragraph, 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.
|
|||
|
|
|||
|
1 1 1 1 1 1
|
|||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
|B| MBZ |
|
|||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|||
|
|
|||
|
B: BROADCAST flag
|
|||
|
|
|||
|
MBZ: MUST BE ZERO (reserved for future use)
|
|||
|
|
|||
|
Figure 2: Format of the 'flags' field
|
|||
|
|
|||
|
2.1 Configuration parameters repository
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
For example, the key might be the pair (IP-subnet-number, hardware-
|
|||
|
address) (note that the "hardware-address" should be typed by the
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 11]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
type of hardware to accommodate possible duplication of hardware
|
|||
|
addresses resulting from bit-ordering problems in a mixed-media,
|
|||
|
bridged network) 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 DHCP client that has been moved to a
|
|||
|
different subnet or has changed hardware addresses (perhaps because
|
|||
|
the network interface failed and was replaced). The protocol defines
|
|||
|
that the key will be (IP-subnet-number, hardware-address) unless the
|
|||
|
client explicitly supplies an identifier using the 'client
|
|||
|
identifier' option. 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.
|
|||
|
|
|||
|
2.2 Dynamic allocation of network addresses
|
|||
|
|
|||
|
The second service provided by DHCP is the allocation of temporary or
|
|||
|
permanent network (IP) addresses to clients. 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 client has been retired.
|
|||
|
|
|||
|
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 allocating
|
|||
|
server SHOULD probe the reused address before allocating the address,
|
|||
|
e.g., with an ICMP echo request, and the client SHOULD probe the
|
|||
|
newly received address, e.g., with ARP.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 12]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
3. The Client-Server Protocol
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
The first four octets of the 'options' field of the DHCP message
|
|||
|
contain the (decimal) values 99, 130, 83 and 99, respectively (this
|
|||
|
is the same magic cookie as is defined in RFC 1497 [17]). The
|
|||
|
remainder of the 'options' field consists of a list of tagged
|
|||
|
parameters that are called "options". All of the "vendor extensions"
|
|||
|
listed in RFC 1497 are also DHCP options. RFC 1533 gives the
|
|||
|
complete set of options defined for use with DHCP.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
3.1 Client-server interaction - allocating a network address
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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. When allocating a new address,
|
|||
|
servers SHOULD check that the offered network address is not
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 13]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
already in use; e.g., the server may probe the offered address
|
|||
|
with an ICMP Echo Request. Servers SHOULD be implemented so that
|
|||
|
network administrators MAY choose to disable probes of newly
|
|||
|
allocated addresses. The server transmits the DHCPOFFER message
|
|||
|
to the client, using the BOOTP relay agent if necessary.
|
|||
|
|
|||
|
Message Use
|
|||
|
------- ---
|
|||
|
|
|||
|
DHCPDISCOVER - Client broadcast to locate available servers.
|
|||
|
|
|||
|
DHCPOFFER - Server to client in response to DHCPDISCOVER with
|
|||
|
offer of configuration parameters.
|
|||
|
|
|||
|
DHCPREQUEST - Client message to servers either (a) requesting
|
|||
|
offered parameters from one server and implicitly
|
|||
|
declining offers from all others, (b) confirming
|
|||
|
correctness of previously allocated address after,
|
|||
|
e.g., system reboot, or (c) extending the lease on a
|
|||
|
particular network address.
|
|||
|
|
|||
|
DHCPACK - Server to client with configuration parameters,
|
|||
|
including committed network address.
|
|||
|
|
|||
|
DHCPNAK - Server to client indicating client's notion of network
|
|||
|
address is incorrect (e.g., client has moved to new
|
|||
|
subnet) or client's lease as expired
|
|||
|
|
|||
|
DHCPDECLINE - Client to server indicating network address is already
|
|||
|
in use.
|
|||
|
|
|||
|
DHCPRELEASE - Client to server relinquishing network address and
|
|||
|
cancelling remaining lease.
|
|||
|
|
|||
|
DHCPINFORM - Client to server, asking only for local configuration
|
|||
|
parameters; client already has externally configured
|
|||
|
network address.
|
|||
|
|
|||
|
Table 2: DHCP messages
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 14]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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
|
|||
|
Figure 3: Timeline diagram of messages exchanged between DHCP
|
|||
|
client and servers when allocating a new network address
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 15]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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 DHCPREQUEST message
|
|||
|
that MUST include the 'server identifier' option to indicate which
|
|||
|
server it has selected, and that MAY include other options
|
|||
|
specifying desired configuration values. The 'requested IP
|
|||
|
address' option MUST be set to the value of 'yiaddr' in the
|
|||
|
DHCPOFFER message from the server. This DHCPREQUEST message is
|
|||
|
broadcast and relayed through DHCP/BOOTP relay agents. To help
|
|||
|
ensure that any 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.
|
|||
|
|
|||
|
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 'client identifier' or
|
|||
|
'chaddr' and assigned network address constitute a 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.
|
|||
|
Any configuration parameters in the DHCPACK message SHOULD NOT
|
|||
|
conflict with those in the earlier DHCPOFFER message to which the
|
|||
|
client is responding. The server SHOULD NOT check the offered
|
|||
|
network address at this point. The 'yiaddr' field in the DHCPACK
|
|||
|
messages is filled in with the selected network address.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
5. The client receives the DHCPACK message with configuration
|
|||
|
parameters. The client SHOULD perform a final check on the
|
|||
|
parameters (e.g., ARP for allocated network address), and notes the
|
|||
|
duration of the lease specified in the DHCPACK message. At this
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 16]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
point, the client is configured. If the client detects that the
|
|||
|
address is already in use (e.g., through the use of ARP), the
|
|||
|
client MUST send 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.
|
|||
|
|
|||
|
If the client receives a DHCPNAK message, the client restarts the
|
|||
|
configuration process.
|
|||
|
|
|||
|
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. The client should choose to retransmit
|
|||
|
the DHCPREQUEST enough times to give adequate probability of
|
|||
|
contacting the server without causing the client (and the user of
|
|||
|
that client) to wait overly long before giving up; e.g., a client
|
|||
|
retransmitting as described in section 4.1 might retransmit the
|
|||
|
DHCPREQUEST message four times, for a total delay of 60 seconds,
|
|||
|
before restarting the initialization procedure. If the client
|
|||
|
receives neither a DHCPACK or a DHCPNAK message after employing the
|
|||
|
retransmission algorithm, the client reverts to INIT state and
|
|||
|
restarts the initialization process. The client SHOULD notify the
|
|||
|
user that the initialization process has failed and is restarting.
|
|||
|
|
|||
|
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 with its 'client identifier',
|
|||
|
or 'chaddr' and network address in the DHCPRELEASE message. If the
|
|||
|
client used a 'client identifier' when it obtained the lease, it
|
|||
|
MUST use the same 'client identifier' in the DHCPRELEASE message.
|
|||
|
|
|||
|
3.2 Client-server interaction - reusing a previously allocated network
|
|||
|
address
|
|||
|
|
|||
|
If a client remembers and wishes to reuse a previously allocated
|
|||
|
network address, 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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 17]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
1. The client broadcasts a DHCPREQUEST message on its local subnet.
|
|||
|
The message includes the client's network address in the
|
|||
|
'requested IP address' option. As the client has not received its
|
|||
|
network address, it MUST NOT fill in the 'ciaddr' field. BOOTP
|
|||
|
relay agents pass the message on to DHCP servers not on the same
|
|||
|
subnet. If the client used a 'client identifier' to obtain its
|
|||
|
address, the client MUST use the same 'client identifier' in the
|
|||
|
DHCPREQUEST message.
|
|||
|
|
|||
|
2. Servers with knowledge of the client's configuration parameters
|
|||
|
respond with a DHCPACK message to the client. Servers SHOULD NOT
|
|||
|
check that the client's network address is already in use; the
|
|||
|
client may respond to ICMP Echo Request messages at this point.
|
|||
|
|
|||
|
Server Client Server
|
|||
|
|
|||
|
v v v
|
|||
|
| | |
|
|||
|
| Begins |
|
|||
|
| initialization |
|
|||
|
| | |
|
|||
|
| /|\ |
|
|||
|
| _________ __/ | \__________ |
|
|||
|
| /DHCPREQU EST | DHCPREQUEST\ |
|
|||
|
|/ | \|
|
|||
|
| | |
|
|||
|
Locates | Locates
|
|||
|
configuration | configuration
|
|||
|
| | |
|
|||
|
|\ | /|
|
|||
|
| \ | ___________/ |
|
|||
|
| \ | / DHCPACK |
|
|||
|
| \ _______ |/ |
|
|||
|
| DHCPACK\ | |
|
|||
|
| Initialization |
|
|||
|
| complete |
|
|||
|
| \| |
|
|||
|
| | |
|
|||
|
| (Subsequent |
|
|||
|
| DHCPACKS |
|
|||
|
| ignored) |
|
|||
|
| | |
|
|||
|
| | |
|
|||
|
v v v
|
|||
|
|
|||
|
Figure 4: Timeline diagram of messages exchanged between DHCP
|
|||
|
client and servers when reusing a previously allocated
|
|||
|
network address
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 18]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
If the client's request is invalid (e.g., the client has moved
|
|||
|
to a new subnet), servers SHOULD respond with a DHCPNAK message to
|
|||
|
the client. Servers SHOULD NOT respond if their information is not
|
|||
|
guaranteed to be accurate. For example, a server that identifies a
|
|||
|
request for an expired binding that is owned by another server SHOULD
|
|||
|
NOT respond with a DHCPNAK unless the servers are using an explicit
|
|||
|
mechanism to maintain coherency among the servers.
|
|||
|
|
|||
|
If 'giaddr' is 0x0 in the DHCPREQUEST message, the client is on
|
|||
|
the same subnet as the server. The server MUST
|
|||
|
broadcast the DHCPNAK message to the 0xffffffff broadcast address
|
|||
|
because the client may not have a correct network address or subnet
|
|||
|
mask, and the client may not be answering ARP requests.
|
|||
|
Otherwise, the server MUST send the DHCPNAK message to the IP
|
|||
|
address of the BOOTP relay agent, as recorded in 'giaddr'. The
|
|||
|
relay agent will, in turn, forward the message directly to the
|
|||
|
client's hardware address, so that the DHCPNAK can be delivered even
|
|||
|
if the client has moved to a new network.
|
|||
|
|
|||
|
3. The client receives the DHCPACK message with configuration
|
|||
|
parameters. The client performs a final check on the parameters
|
|||
|
(as in section 3.1), and notes the duration of the lease specified
|
|||
|
in the DHCPACK message. The specific lease is implicitly identified
|
|||
|
by the 'client identifier' or 'chaddr' and the network address. At
|
|||
|
this point, the client is configured.
|
|||
|
|
|||
|
If the client detects that the IP address in the DHCPACK message
|
|||
|
is already in use, the client MUST send 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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
The client times out and retransmits the DHCPREQUEST message if
|
|||
|
the client receives neither a DHCPACK nor a DHCPNAK message. The
|
|||
|
client retransmits the DHCPREQUEST according to the retransmission
|
|||
|
algorithm in section 4.1. The client should choose to retransmit
|
|||
|
the DHCPREQUEST enough times to give adequate probability of
|
|||
|
contacting the server without causing the client (and the user of
|
|||
|
that client) to wait overly long before giving up; e.g., a client
|
|||
|
retransmitting as described in section 4.1 might retransmit the
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 19]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
DHCPREQUEST message four times, for a total delay of 60 seconds,
|
|||
|
before restarting the initialization procedure. If the client
|
|||
|
receives neither a DHCPACK or a DHCPNAK message after employing
|
|||
|
the retransmission algorithm, the client MAY choose to use the
|
|||
|
previously allocated network address and 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.
|
|||
|
|
|||
|
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 its
|
|||
|
'client identifier', or 'chaddr' and network address in the
|
|||
|
DHCPRELEASE message.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
3.3 Interpretation and representation of time values
|
|||
|
|
|||
|
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".
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
3.4 Obtaining parameters with externally configured network address
|
|||
|
|
|||
|
If a client has obtained a network address through some other means
|
|||
|
(e.g., manual configuration), it may use a DHCPINFORM request message
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 20]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
to obtain other local configuration parameters. Servers receiving a
|
|||
|
DHCPINFORM message construct a DHCPACK message with any local
|
|||
|
configuration parameters appropriate for the client without:
|
|||
|
allocating a new address, checking for an existing binding, filling
|
|||
|
in 'yiaddr' or including lease time parameters. The servers SHOULD
|
|||
|
unicast the DHCPACK reply to the address given in the 'ciaddr' field
|
|||
|
of the DHCPINFORM message.
|
|||
|
|
|||
|
The server SHOULD check the network address in a DHCPINFORM message
|
|||
|
for consistency, but MUST NOT check for an existing lease. The
|
|||
|
server forms a DHCPACK message containing the configuration
|
|||
|
parameters for the requesting client and sends the DHCPACK message
|
|||
|
directly to the client.
|
|||
|
|
|||
|
3.5 Client parameters in DHCP
|
|||
|
|
|||
|
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
|
|||
|
server with a list of specific parameters the client is interested
|
|||
|
in. If the client includes a list of parameters in a DHCPDISCOVER
|
|||
|
message, it MUST include that list in any subsequent DHCPREQUEST
|
|||
|
messages.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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. Other options
|
|||
|
representing "hints" at configuration parameters are allowed in a
|
|||
|
DHCPDISCOVER or DHCPREQUEST message. However, additional options may
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 21]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
be ignored by servers, and multiple servers may, therefore, not
|
|||
|
return identical values for some options. The 'requested IP address'
|
|||
|
option is to be filled in only in a DHCPREQUEST message when the
|
|||
|
client is verifying network parameters obtained previously. The
|
|||
|
client fills in the 'ciaddr' field only when correctly configured
|
|||
|
with an IP address in BOUND, RENEWING or REBINDING state.
|
|||
|
|
|||
|
If a server receives a DHCPREQUEST message with an invalid 'requested
|
|||
|
IP address', 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.
|
|||
|
|
|||
|
3.6 Use of DHCP in clients with multiple interfaces
|
|||
|
|
|||
|
A client with multiple network interfaces must use DHCP through each
|
|||
|
interface independently to obtain configuration information
|
|||
|
parameters for those separate interfaces.
|
|||
|
|
|||
|
3.7 When clients should use DHCP
|
|||
|
|
|||
|
A client 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 client's or user's knowledge.
|
|||
|
|
|||
|
If a client has knowledge of a previous network address and is unable
|
|||
|
to contact a local DHCP server, the client may continue to use the
|
|||
|
previous network address until the lease for that address expires.
|
|||
|
If the lease expires before the client can contact a DHCP server, the
|
|||
|
client must immediately discontinue use of the previous network
|
|||
|
address and may inform local users of the problem.
|
|||
|
|
|||
|
4. Specification of the DHCP client-server protocol
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
4.1 Constructing and sending DHCP messages
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 22]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
be the 'end' option.
|
|||
|
|
|||
|
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). A server with multiple network address (e.g., a multi-homed
|
|||
|
host) MAY use any of its network addresses in outgoing DHCP messages.
|
|||
|
|
|||
|
The 'server identifier' field is used both to identify a DHCP server
|
|||
|
in a DHCP message and as a destination address from clients to
|
|||
|
servers. A server with multiple network addresses MUST be prepared
|
|||
|
to to accept any of its network addresses as identifying that server
|
|||
|
in a DHCP message. To accommodate potentially incomplete network
|
|||
|
connectivity, a server MUST choose an address as a 'server
|
|||
|
identifier' that, to the best of the server's knowledge, is reachable
|
|||
|
from the client. For example, if the DHCP server and the DHCP client
|
|||
|
are connected to the same subnet (i.e., the 'giaddr' field in the
|
|||
|
message from the client is zero), the server SHOULD select the IP
|
|||
|
address the server is using for communication on that subnet as the
|
|||
|
'server identifier'. If the server is using multiple IP addresses on
|
|||
|
that subnet, any such address may be used. If the server has
|
|||
|
received a message through a DHCP relay agent, the server SHOULD
|
|||
|
choose an address from the interface on which the message was
|
|||
|
recieved as the 'server identifier' (unless the server has other,
|
|||
|
better information on which to make its choice). DHCP clients MUST
|
|||
|
use the IP address provided in the 'server identifier' option for any
|
|||
|
unicast requests to the DHCP server.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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
|
|||
|
BOOTP relay agent whose address appears in 'giaddr'. If the 'giaddr'
|
|||
|
field is zero and the 'ciaddr' field is nonzero, then the server
|
|||
|
unicasts DHCPOFFER and DHCPACK messages to the address in 'ciaddr'.
|
|||
|
If 'giaddr' is zero and 'ciaddr' is zero, and the broadcast bit is
|
|||
|
set, then the server broadcasts DHCPOFFER and DHCPACK messages to
|
|||
|
0xffffffff. If the broadcast bit is not set and 'giaddr' is zero and
|
|||
|
'ciaddr' is zero, then the server unicasts DHCPOFFER and DHCPACK
|
|||
|
messages to the client's hardware address and 'yiaddr' address. In
|
|||
|
all cases, when 'giaddr' is zero, the server broadcasts any DHCPNAK
|
|||
|
messages to 0xffffffff.
|
|||
|
|
|||
|
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 RFC 1533. If the
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 23]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
'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 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.
|
|||
|
|
|||
|
The values to be passed in an 'option' tag may be too long to fit in
|
|||
|
the 255 octets available to a single option (e.g., a list of routers
|
|||
|
in a 'router' option [21]). Options may appear only once, unless
|
|||
|
otherwise specified in the options document. The client concatenates
|
|||
|
the values of multiple instances of the same option into a single
|
|||
|
parameter list for configuration.
|
|||
|
|
|||
|
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 between retransmissions SHOULD be
|
|||
|
chosen to allow sufficient time for replies from the server to be
|
|||
|
delivered based on the characteristics of the internetwork between
|
|||
|
the client and the server. For example, in a 10Mb/sec Ethernet
|
|||
|
internetwork, the delay before the first retransmission SHOULD 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 SHOULD
|
|||
|
be 8 seconds randomized by the value of a uniform number chosen from
|
|||
|
the range -1 to +1. The retransmission delay SHOULD 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 'xid' field is used by the client to match incoming DHCP messages
|
|||
|
with pending requests. A DHCP client MUST choose 'xid's in such a
|
|||
|
way as to minimize the chance of using an 'xid' identical to one used
|
|||
|
by another client. For example, a client may choose a different,
|
|||
|
random initial 'xid' each time the client is rebooted, and
|
|||
|
subsequently use sequential 'xid's until the next reboot. Selecting
|
|||
|
a new 'xid' for each retransmission is an implementation decision. A
|
|||
|
client may choose to reuse the same 'xid' or select a new 'xid' for
|
|||
|
each retransmitted message.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 24]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
Normally, DHCP servers and BOOTP relay agents attempt to deliver
|
|||
|
DHCPOFFER, DHCPACK and DHCPNAK messages directly to the client using
|
|||
|
uicast 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).
|
|||
|
|
|||
|
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].
|
|||
|
|
|||
|
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 0xffffffff)
|
|||
|
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 0xffffffff) as the IP destination address and the link-
|
|||
|
layer broadcast address as the link-layer destination address.
|
|||
|
|
|||
|
4.2 DHCP server administrative controls
|
|||
|
|
|||
|
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 clients attached
|
|||
|
to the network, may choose to configure DHCP servers to respond only
|
|||
|
to clients 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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 25]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
implementations may incorporate any controls or policies desired by a
|
|||
|
network administrator.
|
|||
|
|
|||
|
In some environments, a DHCP server will have to consider the values
|
|||
|
of the vendor class options included in DHCPDISCOVER or DHCPREQUEST
|
|||
|
messages when determining the correct parameters for a particular
|
|||
|
client.
|
|||
|
|
|||
|
A DHCP server needs to 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
|
|||
|
supplies a 'client identifier', the client MUST use the same 'client
|
|||
|
identifier' in all subsequent messages, and the server MUST use that
|
|||
|
identifier to identify the client. If the client does not provide a
|
|||
|
'client identifier' option, the server MUST use the contents of the
|
|||
|
'chaddr' field to identify the client. It is crucial for a DHCP
|
|||
|
client to use an identifier unique within the subnet to which the
|
|||
|
client is attached in the 'client identifier' option. Use of
|
|||
|
'chaddr' as the client's unique identifier may cause unexpected
|
|||
|
results, as that identifier may be associated with a hardware
|
|||
|
interface that could be moved to a new client. Some sites may choose
|
|||
|
to use a manufacturer's serial number as the 'client identifier', to
|
|||
|
avoid unexpected changes in a clients network address due to transfer
|
|||
|
of hardware interfaces among computers. Sites may also choose to use
|
|||
|
a DNS name as the 'client identifier', causing address leases to be
|
|||
|
associated with the DNS name rather than a specific hardware box.
|
|||
|
|
|||
|
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
|
|||
|
to select directly the 'vendor class identifier' values.
|
|||
|
|
|||
|
4.3 DHCP server behavior
|
|||
|
|
|||
|
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:
|
|||
|
|
|||
|
o DHCPDISCOVER
|
|||
|
|
|||
|
o DHCPREQUEST
|
|||
|
|
|||
|
o DHCPDECLINE
|
|||
|
|
|||
|
o DHCPRELEASE
|
|||
|
|
|||
|
o DHCPINFORM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 26]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
4.3.1 DHCPDISCOVER message
|
|||
|
|
|||
|
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. If an address is available, the new address
|
|||
|
SHOULD be chosen as follows:
|
|||
|
|
|||
|
o The client's current address as recorded in the client's current
|
|||
|
binding, ELSE
|
|||
|
|
|||
|
o The client's previous address as recorded in the client's (now
|
|||
|
expired or released) binding, if that address is in the server's
|
|||
|
pool of available addresses and not already allocated, ELSE
|
|||
|
|
|||
|
o The address requested in the 'Requested IP Address' option, if that
|
|||
|
address is valid and not already allocated, ELSE
|
|||
|
|
|||
|
o A new address allocated from the server's pool of available
|
|||
|
addresses; the address is selected based on the subnet from which
|
|||
|
the message was received (if 'giaddr' is 0) or on the address of
|
|||
|
the relay agent that forwarded the message ('giaddr' when not 0).
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
Note that, in some network architectures (e.g., internets with more
|
|||
|
than one IP subnet assigned to a physical network segment), it may be
|
|||
|
the case that the DHCP client should be assigned an address from a
|
|||
|
different subnet than the address recorded in 'giaddr'. Thus, DHCP
|
|||
|
does not require that the client be assigned as address from the
|
|||
|
subnet in 'giaddr'. A server is free to choose some other subnet,
|
|||
|
and it is beyond the scope of the DHCP specification to describe ways
|
|||
|
in which the assigned IP address might be chosen.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
The server must also choose an expiration time for the lease, as
|
|||
|
follows:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 27]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
Field DHCPOFFER DHCPACK DHCPNAK
|
|||
|
----- --------- ------- -------
|
|||
|
'op' BOOTREPLY BOOTREPLY BOOTREPLY
|
|||
|
'htype' (From "Assigned Numbers" RFC)
|
|||
|
'hlen' (Hardware address length in octets)
|
|||
|
'hops' 0 0 0
|
|||
|
'xid' 'xid' from client 'xid' from client 'xid' from client
|
|||
|
DHCPDISCOVER DHCPREQUEST DHCPREQUEST
|
|||
|
message message message
|
|||
|
'secs' 0 0 0
|
|||
|
'ciaddr' 0 'ciaddr' from 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' 'flags' from 'flags' from 'flags' from
|
|||
|
client DHCPDISCOVER client DHCPREQUEST client DHCPREQUEST
|
|||
|
message message message
|
|||
|
'giaddr' 'giaddr' from 'giaddr' from 'giaddr' from
|
|||
|
client DHCPDISCOVER client DHCPREQUEST client DHCPREQUEST
|
|||
|
message message message
|
|||
|
'chaddr' 'chaddr' from 'chaddr' from 'chaddr' from
|
|||
|
client DHCPDISCOVER client DHCPREQUEST client DHCPREQUEST
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 28]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
Option DHCPOFFER DHCPACK DHCPNAK
|
|||
|
------ --------- ------- -------
|
|||
|
Requested IP address MUST NOT MUST NOT MUST NOT
|
|||
|
IP address lease time MUST MUST (DHCPREQUEST) MUST NOT
|
|||
|
MUST NOT (DHCPINFORM)
|
|||
|
Use 'file'/'sname' fields MAY MAY MUST NOT
|
|||
|
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 MAY
|
|||
|
Vendor class identifier MAY MAY MAY
|
|||
|
Server identifier MUST MUST MUST
|
|||
|
Maximum message size MUST NOT MUST NOT MUST NOT
|
|||
|
All others MAY MAY MUST NOT
|
|||
|
|
|||
|
Table 3: Fields and options used by DHCP servers
|
|||
|
|
|||
|
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 client behavior regardless of 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:
|
|||
|
|
|||
|
o The client's network address, as determined by the rules given
|
|||
|
earlier in this section,
|
|||
|
|
|||
|
o The expiration time for the client's lease, as determined by the
|
|||
|
rules given earlier in this section,
|
|||
|
|
|||
|
o Parameters requested by the client, according to the following
|
|||
|
rules:
|
|||
|
|
|||
|
-- 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
|
|||
|
|
|||
|
-- 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
|
|||
|
|
|||
|
-- The server MUST NOT return a value for that parameter,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 29]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
The server MUST supply as many of the requested parameters as
|
|||
|
possible and MUST omit any parameters it cannot provide. The
|
|||
|
server MUST include each requested parameter only once unless
|
|||
|
explicitly allowed in the DHCP Options and BOOTP Vendor
|
|||
|
Extensions document.
|
|||
|
|
|||
|
o Any parameters from the existing binding that differ from the Host
|
|||
|
Requirements Document defaults,
|
|||
|
|
|||
|
o Any parameters specific to this client (as identified by
|
|||
|
the contents of 'chaddr' or 'client identifier' in the DHCPDISCOVER
|
|||
|
or DHCPREQUEST message), e.g., as configured by the network
|
|||
|
administrator,
|
|||
|
|
|||
|
o Any parameters specific to this client's class (as identified
|
|||
|
by the contents of the 'vendor 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 vendor
|
|||
|
class identifiers and the client's classes identified in the
|
|||
|
server,
|
|||
|
|
|||
|
o Parameters with non-default values on the client's subnet.
|
|||
|
|
|||
|
The server MAY choose to return the 'vendor class identifier' used to
|
|||
|
determine the parameters in the DHCPOFFER message to assist the
|
|||
|
client in selecting which DHCPOFFER to accept. 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.
|
|||
|
|
|||
|
4.3.2 DHCPREQUEST message
|
|||
|
|
|||
|
A DHCPREQUEST message may come from a client responding to a
|
|||
|
DHCPOFFER message from a server, from a client verifying a previously
|
|||
|
allocated IP address or from a client extending the lease on a
|
|||
|
network address. If the DHCPREQUEST message contains a 'server
|
|||
|
identifier' option, the message is in response to a DHCPOFFER
|
|||
|
message. Otherwise, the message is a request to verify or extend an
|
|||
|
existing lease. If the client uses a 'client identifier' in a
|
|||
|
DHCPREQUEST message, it MUST use that same 'client identifier' in all
|
|||
|
subsequent messages. If the client included a list of requested
|
|||
|
parameters in a DHCPDISCOVER message, it MUST include that list in
|
|||
|
all subsequent messages.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 30]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
Any configuration parameters in the DHCPACK message SHOULD NOT
|
|||
|
conflict with those in the earlier DHCPOFFER message to which the
|
|||
|
client is responding. The client SHOULD use the parameters in the
|
|||
|
DHCPACK message for configuration.
|
|||
|
|
|||
|
Clients send DHCPREQUEST messages as follows:
|
|||
|
|
|||
|
o DHCPREQUEST generated during SELECTING state:
|
|||
|
|
|||
|
Client inserts the address of the selected server in 'server
|
|||
|
identifier', 'ciaddr' MUST be zero, 'requested IP address' MUST be
|
|||
|
filled in with the yiaddr value from the chosen DHCPOFFER.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
o DHCPREQUEST generated during INIT-REBOOT state:
|
|||
|
|
|||
|
'server identifier' MUST NOT be filled in, 'requested IP address'
|
|||
|
option MUST be filled in with client's notion of its previously
|
|||
|
assigned address. 'ciaddr' MUST be zero. The client is seeking to
|
|||
|
verify a previously allocated, cached configuration. Server SHOULD
|
|||
|
send a DHCPNAK message to the client if the 'requested IP address'
|
|||
|
is incorrect, or is on the wrong network.
|
|||
|
|
|||
|
Determining whether a client in the INIT-REBOOT state is on the
|
|||
|
correct network is done by examining the contents of 'giaddr', the
|
|||
|
'requested IP address' option, and a database lookup. If the DHCP
|
|||
|
server detects that the client is on the wrong net (i.e., the
|
|||
|
result of applying the local subnet mask or remote subnet mask (if
|
|||
|
'giaddr' is not zero) to 'requested IP address' option value
|
|||
|
doesn't match reality), then the server SHOULD send a DHCPNAK
|
|||
|
message to the client.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 31]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
If the network is correct, then the DHCP server should check if
|
|||
|
the client's notion of its IP address is correct. If not, then the
|
|||
|
server SHOULD send a DHCPNAK message to the client. If the DHCP
|
|||
|
server has no record of this client, then it MUST remain silent,
|
|||
|
and MAY output a warning to the network administrator. This
|
|||
|
behavior is necessary for peaceful coexistence of non-
|
|||
|
communicating DHCP servers on the same wire.
|
|||
|
|
|||
|
If 'giaddr' is 0x0 in the DHCPREQUEST message, the client is on
|
|||
|
the same subnet as the server. The server MUST broadcast the
|
|||
|
DHCPNAK message to the 0xffffffff broadcast address because the
|
|||
|
client may not have a correct network address or subnet mask, and
|
|||
|
the client may not be answering ARP requests.
|
|||
|
|
|||
|
If 'giaddr' is set in the DHCPREQUEST message, the client is on a
|
|||
|
different subnet. The server MUST set the broadcast bit in the
|
|||
|
DHCPNAK, so that the relay agent will broadcast the DHCPNAK to the
|
|||
|
client, because the client may not have a correct network address
|
|||
|
or subnet mask, and the client may not be answering ARP requests.
|
|||
|
|
|||
|
o DHCPREQUEST generated during RENEWING state:
|
|||
|
|
|||
|
'server identifier' MUST NOT be filled in, 'requested IP address'
|
|||
|
option MUST NOT be filled in, 'ciaddr' MUST be filled in with
|
|||
|
client's IP address. In this situation, the client is completely
|
|||
|
configured, and is trying to extend its lease. This message will
|
|||
|
be unicast, so no relay agents will be involved in its
|
|||
|
transmission. Because 'giaddr' is therefore not filled in, the
|
|||
|
DHCP server will trust the value in 'ciaddr', and use it when
|
|||
|
replying to the client.
|
|||
|
|
|||
|
A client MAY choose to renew or extend its lease prior to T1. The
|
|||
|
server may choose not to extend the lease (as a policy decision by
|
|||
|
the network administrator), but should return a DHCPACK message
|
|||
|
regardless.
|
|||
|
|
|||
|
o DHCPREQUEST generated during REBINDING state:
|
|||
|
|
|||
|
'server identifier' MUST NOT be filled in, 'requested IP address'
|
|||
|
option MUST NOT be filled in, 'ciaddr' MUST be filled in with
|
|||
|
client's IP address. In this situation, the client is completely
|
|||
|
configured, and is trying to extend its lease. This message MUST
|
|||
|
be broadcast to the 0xffffffff IP broadcast address. The DHCP
|
|||
|
server SHOULD check 'ciaddr' for correctness before replying to
|
|||
|
the DHCPREQUEST.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 32]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
The DHCPREQUEST from a REBINDING client is intended to accommodate
|
|||
|
sites that have multiple DHCP servers and a mechanism for
|
|||
|
maintaining consistency among leases managed by multiple servers.
|
|||
|
A DHCP server MAY extend a client's lease only if it has local
|
|||
|
administrative authority to do so.
|
|||
|
|
|||
|
4.3.3 DHCPDECLINE message
|
|||
|
|
|||
|
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 available and SHOULD notify the local system administrator of
|
|||
|
a possible configuration problem.
|
|||
|
|
|||
|
4.3.4 DHCPRELEASE message
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
4.3.5 DHCPINFORM message
|
|||
|
|
|||
|
The server responds to a DHCPINFORM message by sending a DHCPACK
|
|||
|
message directly to the address given in the 'ciaddr' field of the
|
|||
|
DHCPINFORM message. The server MUST NOT send a lease expiration time
|
|||
|
to the client and SHOULD NOT fill in 'yiaddr'. The server includes
|
|||
|
other parameters in the DHCPACK message as defined in section 4.3.1.
|
|||
|
|
|||
|
4.3.6 Client messages
|
|||
|
|
|||
|
Table 4 details the differences between messages from clients in
|
|||
|
various states.
|
|||
|
|
|||
|
---------------------------------------------------------------------
|
|||
|
| |INIT-REBOOT |SELECTING |RENEWING |REBINDING |
|
|||
|
---------------------------------------------------------------------
|
|||
|
|broad/unicast |broadcast |broadcast |unicast |broadcast |
|
|||
|
|server-ip |MUST NOT |MUST |MUST NOT |MUST NOT |
|
|||
|
|requested-ip |MUST |MUST |MUST NOT |MUST NOT |
|
|||
|
|ciaddr |zero |zero |IP address |IP address|
|
|||
|
---------------------------------------------------------------------
|
|||
|
|
|||
|
Table 4: Client messages from different states
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 33]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
4.4 DHCP client behavior
|
|||
|
|
|||
|
Figure 5 gives a state-transition diagram for a DHCP client. A
|
|||
|
client can receive the following messages from a server:
|
|||
|
|
|||
|
o DHCPOFFER
|
|||
|
|
|||
|
o DHCPACK
|
|||
|
|
|||
|
o DHCPNAK
|
|||
|
|
|||
|
The DHCPINFORM message is not shown in figure 5. A client simply
|
|||
|
sends the DHCPINFORM and waits for DHCPACK messages. Once the client
|
|||
|
has selected its parameters, it has completed the configuration
|
|||
|
process.
|
|||
|
|
|||
|
Table 5 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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 34]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
-------- -------
|
|||
|
| | +-------------------------->| |<-------------------+
|
|||
|
| INIT- | | +-------------------->| INIT | |
|
|||
|
| REBOOT |DHCPNAK/ +---------->| |<---+ |
|
|||
|
| |Restart| | ------- | |
|
|||
|
-------- | DHCPNAK/ | | |
|
|||
|
| Discard offer | -/Send DHCPDISCOVER |
|
|||
|
-/Send DHCPREQUEST | | |
|
|||
|
| | | DHCPACK v | |
|
|||
|
----------- | (not accept.)/ ----------- | |
|
|||
|
| | | Send DHCPDECLINE | | |
|
|||
|
| REBOOTING | | | | SELECTING |<----+ |
|
|||
|
| | | / | | |DHCPOFFER/ |
|
|||
|
----------- | / ----------- | |Collect |
|
|||
|
| | / | | | replies |
|
|||
|
DHCPACK/ | / +----------------+ +-------+ |
|
|||
|
Record lease, set| | v Select offer/ |
|
|||
|
timers T1, T2 ------------ send DHCPREQUEST | |
|
|||
|
| +----->| | 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 | |
|
|||
|
| |----------------------------+
|
|||
|
----------
|
|||
|
Figure 5: State-transition diagram for DHCP clients
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 35]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
4.4.1 Initialization and allocation of network address
|
|||
|
|
|||
|
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'
|
|||
|
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, if
|
|||
|
necessary for delivery of DHCP reply messages. The client MAY
|
|||
|
include a different unique identifier in the 'client identifier'
|
|||
|
option, as discussed in section 4.2. If the client included a list
|
|||
|
of requested parameters in a DHCPDISCOVER message, it MUST include
|
|||
|
that list in all subsequent messages.
|
|||
|
|
|||
|
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 the 0xffffffff IP broadcast address and 'DHCP
|
|||
|
server' UDP port.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 36]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
Field DHCPDISCOVER DHCPREQUEST DHCPDECLINE,
|
|||
|
DHCPINFORM DHCPRELEASE
|
|||
|
----- ------------ ----------- -----------
|
|||
|
'op' BOOTREQUEST BOOTREQUEST BOOTREQUEST
|
|||
|
'htype' (From "Assigned Numbers" RFC)
|
|||
|
'hlen' (Hardware address length in octets)
|
|||
|
'hops' 0 0 0
|
|||
|
'xid' selected by client 'xid' from server selected by
|
|||
|
DHCPOFFER message client
|
|||
|
'secs' 0 or seconds since 0 or seconds since 0
|
|||
|
DHCP process started DHCP process started
|
|||
|
'flags' Set 'BROADCAST' Set 'BROADCAST' 0
|
|||
|
flag if client flag if client
|
|||
|
requires broadcast requires broadcast
|
|||
|
reply reply
|
|||
|
'ciaddr' 0 (DHCPDISCOVER) 0 or client's 0 (DHCPDECLINE)
|
|||
|
client's network address client's network
|
|||
|
network address (BOUND/RENEW/REBIND) address
|
|||
|
(DHCPINFORM) (DHCPRELEASE)
|
|||
|
'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
|
|||
|
unused unused
|
|||
|
'options' options options (unused)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 37]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
Option DHCPDISCOVER DHCPREQUEST DHCPDECLINE,
|
|||
|
DHCPINFORM DHCPRELEASE
|
|||
|
------ ------------ ----------- -----------
|
|||
|
Requested IP address MAY MUST (in MUST
|
|||
|
(DISCOVER) SELECTING or (DHCPDECLINE),
|
|||
|
MUST NOT INIT-REBOOT) MUST NOT
|
|||
|
(INFORM) MUST NOT (in (DHCPRELEASE)
|
|||
|
BOUND or
|
|||
|
RENEWING)
|
|||
|
IP address lease time MAY MAY MUST NOT
|
|||
|
(DISCOVER)
|
|||
|
MUST NOT
|
|||
|
(INFORM)
|
|||
|
Use 'file'/'sname' fields MAY MAY MAY
|
|||
|
DHCP message type DHCPDISCOVER/ DHCPREQUEST DHCPDECLINE/
|
|||
|
DHCPINFORM DHCPRELEASE
|
|||
|
Client identifier MAY MAY MAY
|
|||
|
Vendor class identifier MAY MAY MUST NOT
|
|||
|
Server identifier MUST NOT MUST (after MUST
|
|||
|
SELECTING)
|
|||
|
MUST NOT (after
|
|||
|
INIT-REBOOT,
|
|||
|
BOUND, RENEWING
|
|||
|
or REBINDING)
|
|||
|
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 MAY MAY MUST NOT
|
|||
|
|
|||
|
Table 5: Fields and options used by DHCP clients
|
|||
|
|
|||
|
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 DHCPACK message. The client SHOULD 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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 38]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
network address appears to be in use, the client MUST send a
|
|||
|
DHCPDECLINE message to the server. 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.
|
|||
|
|
|||
|
4.4.2 Initialization with known network address
|
|||
|
|
|||
|
The client begins in INIT-REBOOT state and sends a DHCPREQUEST
|
|||
|
message. The client MUST insert its known network address as a
|
|||
|
'requested IP address' option in the DHCPREQUEST message. 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 include 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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
4.4.3 Initialization with an externally assigned network address
|
|||
|
|
|||
|
The client sends a DHCPINFORM message. 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 places its own network address in the 'ciaddr' field. The
|
|||
|
client SHOULD NOT request lease time parameters.
|
|||
|
|
|||
|
The client then unicasts the DHCPINFORM to the DHCP server if it
|
|||
|
knows the server's address, otherwise it broadcasts the message to
|
|||
|
the limited (all 1s) broadcast address. DHCPINFORM messages MUST be
|
|||
|
directed to the 'DHCP server' UDP port.
|
|||
|
|
|||
|
Once a DHCPACK message with an 'xid' field matching that in the
|
|||
|
client's DHCPINFORM message arrives from any server, the client is
|
|||
|
initialized.
|
|||
|
|
|||
|
If the client does not receive a DHCPACK within a reasonable period
|
|||
|
of time (60 seconds or 4 tries if using timeout suggested in section
|
|||
|
4.1), then it SHOULD display a message informing the user of the
|
|||
|
problem, and then SHOULD begin network processing using suitable
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 39]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
defaults as per Appendix A.
|
|||
|
|
|||
|
4.4.4 Use of broadcast and unicast
|
|||
|
|
|||
|
The DHCP client broadcasts DHCPDISCOVER, DHCPREQUEST and DHCPINFORM
|
|||
|
messages, unless the client knows the address of a DHCP server. The
|
|||
|
client unicasts DHCPRELEASE messages to the server. Because the
|
|||
|
client is declining the use of the IP address supplied by the server,
|
|||
|
the client broadcasts DHCPDECLINE messages.
|
|||
|
|
|||
|
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.
|
|||
|
The client may also use unicast to send DHCPINFORM messages to a
|
|||
|
known DHCP server. 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.
|
|||
|
|
|||
|
4.4.5 Reacquisition and expiration
|
|||
|
|
|||
|
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. T1 MUST be
|
|||
|
earlier than T2, which, in turn, MUST be earlier than the time at
|
|||
|
which the client's lease will expire.
|
|||
|
|
|||
|
To avoid the need for synchronized clocks, T1 and T2 are expressed in
|
|||
|
options as relative times [2].
|
|||
|
|
|||
|
At time T1 the client moves to RENEWING state and sends (via unicast)
|
|||
|
a DHCPREQUEST message to the server to extend its lease. The client
|
|||
|
sets the 'ciaddr' field in the DHCPREQUEST to its current network
|
|||
|
address. 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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 40]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
If no DHCPACK arrives before time T2, 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 include a 'server
|
|||
|
identifier' in the DHCPREQUEST message.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
A client MAY choose to renew or extend its lease prior to T1. The
|
|||
|
server MAY choose to extend the client's lease according to policy
|
|||
|
set by the network administrator. The server SHOULD return T1 and
|
|||
|
T2, and their values SHOULD be adjusted from their original values to
|
|||
|
take account of the time remaining on the lease.
|
|||
|
|
|||
|
In both RENEWING and REBINDING states, if the client receives no
|
|||
|
response to its DHCPREQUEST message, the client SHOULD wait one-half
|
|||
|
of the remaining time until T2 (in RENEWING state) and one-half of
|
|||
|
the remaining lease time (in REBINDING state), down to a minimum of
|
|||
|
60 seconds, before retransmitting the DHCPREQUEST message.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
4.4.6 DHCPRELEASE
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 41]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
5. Acknowledgments
|
|||
|
|
|||
|
The author thanks the many (and too numerous to mention!) members of
|
|||
|
the DHC WG for their tireless and ongoing efforts in the development
|
|||
|
of DHCP and this document.
|
|||
|
|
|||
|
The efforts of J Allard, Mike Carney, Dave Lapp, Fred Lien and John
|
|||
|
Mendonca in organizing DHCP interoperability testing sessions are
|
|||
|
gratefully acknowledged.
|
|||
|
|
|||
|
The development of this document was supported in part by grants from
|
|||
|
the Corporation for National Research Initiatives (CNRI), Bucknell
|
|||
|
University and Sun Microsystems.
|
|||
|
|
|||
|
6. References
|
|||
|
|
|||
|
[1] Acetta, M., "Resource Location Protocol", RFC 887, CMU, December
|
|||
|
1983.
|
|||
|
|
|||
|
[2] Alexander, S., and R. Droms, "DHCP Options and BOOTP Vendor
|
|||
|
Extensions", RFC 1533, Lachman Technology, Inc., Bucknell
|
|||
|
University, October 1993.
|
|||
|
|
|||
|
[3] Braden, R., Editor, "Requirements for Internet Hosts --
|
|||
|
Communication Layers", STD 3, RFC 1122, USC/Information Sciences
|
|||
|
Institute, October 1989.
|
|||
|
|
|||
|
[4] Braden, R., Editor, "Requirements for Internet Hosts --
|
|||
|
Application and Support, STD 3, RFC 1123, USC/Information
|
|||
|
Sciences Institute, October 1989.
|
|||
|
|
|||
|
[5] Brownell, D, "Dynamic Reverse Address Resolution Protocol
|
|||
|
(DRARP)", Work in Progress.
|
|||
|
|
|||
|
[6] Comer, D., and R. Droms, "Uniform Access to Internet Directory
|
|||
|
Services", Proc. of ACM SIGCOMM '90 (Special issue of Computer
|
|||
|
Communications Review), 20(4):50--59, 1990.
|
|||
|
|
|||
|
[7] Croft, B., and J. Gilmore, "Bootstrap Protocol (BOOTP)", RFC 951,
|
|||
|
Stanford and SUN Microsystems, September 1985.
|
|||
|
|
|||
|
[8] Deering, S., "ICMP Router Discovery Messages", RFC 1256, Xerox
|
|||
|
PARC, September 1991.
|
|||
|
|
|||
|
[9] Droms, D., "Interoperation between DHCP and BOOTP", RFC 1534,
|
|||
|
Bucknell University, October 1993.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 42]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
[10] Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A Reverse
|
|||
|
Address Resolution Protocol", RFC 903, Stanford, June 1984.
|
|||
|
|
|||
|
[11] Gray C., and D. Cheriton, "Leases: An Efficient Fault-Tolerant
|
|||
|
Mechanism for Distributed File Cache Consistency", In Proc. of
|
|||
|
the Twelfth ACM Symposium on Operating Systems Design, 1989.
|
|||
|
|
|||
|
[12] Mockapetris, P., "Domain Names -- Concepts and Facilities", STD
|
|||
|
13, RFC 1034, USC/Information Sciences Institute, November 1987.
|
|||
|
|
|||
|
[13] Mockapetris, P., "Domain Names -- Implementation and
|
|||
|
Specification", STD 13, RFC 1035, USC/Information Sciences
|
|||
|
Institute, November 1987.
|
|||
|
|
|||
|
[14] Mogul J., and S. Deering, "Path MTU Discovery", RFC 1191,
|
|||
|
November 1990.
|
|||
|
|
|||
|
[15] Morgan, R., "Dynamic IP Address Assignment for Ethernet Attached
|
|||
|
Hosts", Work in Progress.
|
|||
|
|
|||
|
[16] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792,
|
|||
|
USC/Information Sciences Institute, September 1981.
|
|||
|
|
|||
|
[17] Reynolds, J., "BOOTP Vendor Information Extensions", RFC 1497,
|
|||
|
USC/Information Sciences Institute, August 1993.
|
|||
|
|
|||
|
[18] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
|
|||
|
USC/Information Sciences Institute, October 1994.
|
|||
|
|
|||
|
[19] Jeffrey Schiller and Mark Rosenstein. A Protocol for the Dynamic
|
|||
|
Assignment of IP Addresses for use on an Ethernet. (Available
|
|||
|
from the Athena Project, MIT), 1989.
|
|||
|
|
|||
|
[20] Sollins, K., "The TFTP Protocol (Revision 2)", RFC 783, NIC,
|
|||
|
June 1981.
|
|||
|
|
|||
|
[21] Wimer, W., "Clarifications and Extensions for the Bootstrap
|
|||
|
Protocol", RFC 1542, Carnegie Mellon University, October 1993.
|
|||
|
|
|||
|
7. Security Considerations
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 43]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
8. Author's Address
|
|||
|
|
|||
|
Ralph Droms
|
|||
|
Computer Science Department
|
|||
|
323 Dana Engineering
|
|||
|
Bucknell University
|
|||
|
Lewisburg, PA 17837
|
|||
|
|
|||
|
Phone: (717) 524-1145
|
|||
|
EMail: droms@bucknell.edu
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 44]
|
|||
|
|
|||
|
RFC 2131 Dynamic Host Configuration Protocol March 1997
|
|||
|
|
|||
|
|
|||
|
A. Host Configuration Parameters
|
|||
|
|
|||
|
IP-layer_parameters,_per_host:_
|
|||
|
|
|||
|
Be a router on/off HRC 3.1
|
|||
|
Non-local source routing on/off HRC 3.3.5
|
|||
|
Policy filters for
|
|||
|
non-local source routing (list) HRC 3.3.5
|
|||
|
Maximum reassembly size integer HRC 3.3.2
|
|||
|
Default TTL integer HRC 3.2.1.7
|
|||
|
PMTU aging timeout integer MTU 6.6
|
|||
|
MTU plateau table (list) MTU 7
|
|||
|
IP-layer_parameters,_per_interface:_
|
|||
|
IP address (address) HRC 3.3.1.6
|
|||
|
Subnet mask (address mask) HRC 3.3.1.6
|
|||
|
MTU integer HRC 3.3.3
|
|||
|
All-subnets-MTU on/off HRC 3.3.3
|
|||
|
Broadcast address flavor 0x00000000/0xffffffff HRC 3.3.6
|
|||
|
Perform mask discovery on/off HRC 3.2.2.9
|
|||
|
Be a mask supplier on/off HRC 3.2.2.9
|
|||
|
Perform router discovery on/off RD 5.1
|
|||
|
Router solicitation address (address) RD 5.1
|
|||
|
Default routers, list of:
|
|||
|
router address (address) HRC 3.3.1.6
|
|||
|
preference level integer HRC 3.3.1.6
|
|||
|
Static routes, list of:
|
|||
|
destination (host/subnet/net) HRC 3.3.1.2
|
|||
|
destination mask (address mask) HRC 3.3.1.2
|
|||
|
type-of-service integer HRC 3.3.1.2
|
|||
|
first-hop router (address) HRC 3.3.1.2
|
|||
|
ignore redirects on/off HRC 3.3.1.2
|
|||
|
PMTU integer MTU 6.6
|
|||
|
perform PMTU discovery on/off MTU 6.6
|
|||
|
|
|||
|
Link-layer_parameters,_per_interface:_
|
|||
|
Trailers on/off HRC 2.3.1
|
|||
|
ARP cache timeout integer HRC 2.3.2.1
|
|||
|
Ethernet encapsulation (RFC 894/RFC 1042) HRC 2.3.3
|
|||
|
|
|||
|
TCP_parameters,_per_host:_
|
|||
|
TTL integer HRC 4.2.2.19
|
|||
|
Keep-alive interval integer HRC 4.2.3.6
|
|||
|
Keep-alive data size 0/1 HRC 4.2.3.6
|
|||
|
|
|||
|
Key:
|
|||
|
|
|||
|
MTU = Path MTU Discovery (RFC 1191, Proposed Standard)
|
|||
|
RD = Router Discovery (RFC 1256, Proposed Standard)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Droms Standards Track [Page 45]
|
|||
|
|