BOOTP and DHCP

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

BOOTP and DHCP

The bootstrap protocol (BOOTP) is a host configuration protocol developed before DHCP. DHCP improves on BOOTP and resolves specific limitations BOOTP had as a host configuration service. RFC 951 defines BOOTP.

BOOTP/DHCP similarities

Because of the relationship between BOOTP and DHCP, both protocols share some defining characteristics. The common elements include:

  • The format structure each uses to exchange messages between the server and clients

    BOOTP and DHCP use nearly identical request messages (sent by clients) and reply messages (sent by servers). Messages in either of these protocols use a single User Datagram Protocol (UDP) datagram of 576 bytes to enclose each protocol message. Message headers are the same for both BOOTP and DHCP with one exception: the final message header field used to carry optional data. For BOOTP, this optional field is called the vendor-specific area and is limited to 64 octets. For DHCP, this area is called the options field and can carry up to 312 octets of DHCP options information.

  • Use of well-known UDP ports for client/server communication

    Both BOOTP and DHCP use the same reserved protocol ports for sending and receiving messages between servers and clients. Both BOOTP and DHCP servers use UDP port 67 to listen for and receive client request messages. BOOTP and DHCP clients typically reserve UDP port 68 for accepting message replies from either a BOOTP server or DHCP server.

    Because DHCP and BOOTP messages use nearly identical format types and packet structures, and typically use the same well-known service ports, BOOTP or DHCP relay agent programs usually treat BOOTP and DHCP messages as essentially the same message type, without differentiating between them.

  • IP address distribution as an integral part of configuration service

    Although both BOOTP and DHCP allocate IP addresses to clients during startup, they use different methods of allocation. BOOTP typically provides fixed allocation of a single IP address for each client, permanently reserving this address in the BOOTP server database. DHCP typically provides dynamic, leased allocation of available IP addresses, reserving each DHCP client address temporarily in the DHCP server database.

BOOTP/DHCP differences

There are significant differences in the way in which BOOTP and DHCP perform host configuration. The following table compares and contrasts the features of the two protocols that vary.

BOOTP DHCP

Designed prior to DHCP.

Designed after BOOTP.

Intended to configure diskless workstations with limited boot capabilities.

Intended to configure frequently relocated networked computers (such as portables) that have local hard drives and full boot capabilities.

Dynamic BOOTP has a default 30-day expiration on IP address leases.

DHCP has a default eight-day expiration on IP address leases.

Supports a limited number of client configuration parameters called vendor extensions.

Supports a larger and extensible set of client configuration parameters called options.

Describes a two-phase bootstrap configuration process, as follows:

  • Clients contact BOOTP servers to perform address determination and boot file name selection.

  • Clients contact Trivial File Transfer Protocol (TFTP) servers to perform file transfer of their boot image.

Describes a single-phase boot configuration process whereby a DHCP client negotiates with a DHCP server to determine its IP address and obtain any other initial configuration details it needs for network operation.

BOOTP clients do not rebind or renew configuration with the BOOTP server except when the system restarts.

DHCP clients do not require a system restart to rebind or renew configuration with the DHCP server. Instead, clients automatically enter a rebinding state at set timed intervals to renew their leased address allocation with the DHCP server. This process occurs in the background and is transparent to the user.