Installing and Administering Internet Services

166 Chapter 5
Configuring TFTP and BOOTP Servers
How BOOTP Works
How BOOTP Works
The Bootstrap Protocol (BOOTP) allows a client system to discover its
own IP address, the address of a BOOTP server, and the name of a file to
be loaded into memory and executed.
The bootstrap operation happens in two phases. In the first phase,
address determination and bootfile selection occur. This phase uses the
BOOTP server, bootpd. After the address and file name information is
obtained, control passes to the second phase of the bootstrap where a file
transfer occurs. This phase uses the TFTP server, tftpd.
Address Determination and Bootfile Selection
The first phase involves a bootrequest packet that is broadcast by the
BOOTP client. A BOOTP server that receives the bootrequest can send a
bootreply to the client if it finds the client’s boot information in its
database. Or, it can relay the bootrequest to other BOOTP servers if it
finds relay information for the client in its database.
1. The BOOTP client formulates a bootrequest that it will broadcast.
Before sending the bootrequest, the client does the following:
It sets the hops field of the bootrequest packet to 0. Each time a
BOOTP server relays the client’s bootrequest, the hops field is
incremented by 1. If the hops value exceeds the maximum hop
value configured for this client on a BOOTP server, the
bootrequest is dropped. The hops value limits the number of times
a bootrequest can be relayed.
It sets the secs field of the bootrequest packet to 0 for a first-time
request. If the client does not receive a reply to this request, it sets
the value of this field to the number of seconds since the first
request was sent. If the value of the secs field is less than the
threshold value configured for this client on a BOOTP server, the
bootrequest is dropped. The threshold value ensures that enough
time is allowed for a bootreply to be received by the client before a
subsequent bootrequest for the same client is relayed.
It sets the giaddr (gateway IP address) field to 0. If a BOOTP
server finds that this field is 0, it fills it with its own IP address.