The TCP/IP Guide - Version 3.0 (Contents) ` 1119 _ © 2001-2005 Charles M. Kozierok. All Rights Reserved.
BOOTP Vendor-Specific Area and Vendor Information Extensions
The creators of the Boot Protocol realized that certain types of hardware might require
additional information to be passed from the server to the client in order for the client to boot
up. For this reason, they put into the BOOTP field format the 64-byte Vend field, also called
the Vendor-Specific Area. Including this field makes BOOTP flexible, since it allows vendors
to decide for themselves how they want to use the protocol, and to tailor it to their needs.
Traditional Use of the Vendor-Specific Area
A client can use the Vend field by asking for certain types of information in the field when
composing its request. The server can then respond to these requests, and may also
include parameters it wants the client to have even if they were not requested. The original
BOOTP protocol does not define any structure for the Vendor-Specific Area, leaving this up
to each manufacturer to decide.
Obviously, there is nothing preventing a client made by one manufacturer from trying to
send a request to a server made by another one. If each one is expecting the Vend field to
contain something different, the results will be less than satisfactory. Thus, for the Vend field
to be used properly, both devices must be speaking the same “language” when it comes to
the meaning of this field. This is done by setting the first four bytes of the field to a special
value. Each manufacturer chooses its own “magic number” for this four-byte subfield, which
is also sometimes called a “magic cookie”.
Note: Why is it called a magic “cookie”? I’m not sure, to be honest. I have heard
tale that its origin may be the cookie that Alice ate to grow or shrink in the story
Alice in Wonderland. Who knows. ☺
BOOTP Vendor Information Extensions
Including the Vend field in BOOTP gives the protocol extensibility for vendor-specific infor-
mation. Unfortunately, the original field format didn't include any way of extending the
information sent from a server to a client for generic, non-vendor-specific TCP/IP
information.
This was a significant oversight in the creation of the protocol, because there are many
types of information that a TCP/IP host needs when it starts up that really have nothing to
do with its vendor. For example, when a host boots, we probably want it to be told the
address of a default router; the subnet mask for its local subnet; the address of a local DNS
server; the MTU of the local network; and much more. None of these things are vendor-
specific, but there is no place to put them in the BOOTP reply message.
Since there was no “non-vendor-specific area” field in BOOTP, the decision was made to
define a way of using the Vendor-Specific Area for communicating this additional generic
information. This was first standardized in RFC 1048, and then refined in later RFCs as I
explained in the BOOTP overview. This scheme basically represents one particular way of