The Bootstrap Protocol (BOOTP) is an UDP/IP-based protocol which allows a booting host to configure itself dynamically and without user supervision. BOOTP provides a means to notify a host of its assigned IP address, the IP address of a boot server host, and the name of a file to be loaded into memory and executed. Other configuration information such as the local subnet mask, the local time offset, the addresses of default routers, and the addresses of various Internet servers can also be communicated to a host using BOOTP.
BOOTP uses two different well-known port numbers. UDP port number 67 is used for the server and UDP port number 68 is used for the BOOTP client. The BOOTP client broadcasts a single packet called a BOOTREQUEST packet that contains the client"s physical network address and optionally, its IP address if known. The client could send the broadcast using the address 255.255.255.255, which is a special address called the limited broadcast address. The client waits for a response from the server. If a response is not received within a specified time interval, the client retransmits the request.
The server responds to the client"s request with a BOOTREPLY packet. The request can optionally contain the "generic" filename to be booted. For example "unix" or "ethertip". When the server sends the bootreply, it replaces this field with the fully qualified path name of the appropriate boot file. In determining this name, the server may consult his own database correlating the client"s address and filename request, with a particular boot file customized for that client. If the bootrequest filename is a null string, then the server returns a filename field indicating the "default" file to be loaded for that client.
In the case of clients who do not know their IP addresses, the server must also have a database relating hardware address to IP address. This client IP address is then placed into a field in the bootreply.
BOOTP is an alternative to RARP, which operates at the Data Link Layer for LAN only. BOOTP, an UDP/IP based configuration protocol, provides much more configuration information and allows dynamic configuration for entire IP network. BOOTP and its extensions became the basis for the Dynamic Host Configuration Protocol (DHCP).
Protocol Structure
| 8 | 16 | 24 | 32 |
| Op | Htype | Hlen | Hops |
| Xid | |||
| Secs | Flags | ||
| Ciaddr | |||
| Yiaddr | |||
| Siaddr | |||
| Giaddr | |||
| Chaddr (16 bytes) | |||
| sname (64 bytes) | |||
| File (128 bytes) | |||
| Option (variable) | |||
- Op -- DHCP message operation code: either BOOTREQUEST or BOOTREPLY.
- Htype -- The hardware address type.
- Hlen -- The hardware address length.
- Xid -- The transaction ID.
- Secs -- The seconds elapsed since the client began the address acquisition or renewal process.
- Flags -- The flags.
- Ciaddr -- The client IP address.
- Yiaddr -- The "Your" (client) IP address.
- Siaddr -- The IP address of the next server to use in bootstrap.
- Giaddr -- The relay agent IP address used in booting via a relay agent.
- Chaddr -- The client hardware address.
- sname -- Optional server host name, null terminated string
- File -- Boot file name, null terminated string; "generic name or null in DHCPDISCOVER, fully qualified directory-path name in DHCPOFFER.
- Options -- Optional parameters field. See the options documents for a list of defined options.
Related Terms: IP, IPv6, TCP, UDP, RARP, DHCP
Sponsor Source:BOOTP is defined by IETF (http://www.ietf.org) RFC 951 and 1542.
Reference:
http://www.javvin.com/protocol/rfc951.pdf: BOOTSTRAP PROTOCOL (BOOTP)
http://www.javvin.com/protocol/rfc1542.pdf: Clarifications and Extensions for the Bootstrap Protocol
http://www.javvin.com/protocol/rfc2132.pdf: DHCP Options and BOOTP Vendor Extensions
http://www.javvin.com/protocol/rfc3396.pdf: Encoding Long Options in the (DHCPv4)
