说起BOOTP协议,我们大家似乎都不明所以。但是一说到DHCP协议,不少人就觉得比较熟悉了。其实两者有着很多相似的地方,也有的文章中说BOOTP协议时DHCP协议的前身。那么对于BOOTP我们就来详细介绍一下。
引导协议(BOOTP)是一种基于UDP/IP的协议。这种协议允许正在启动的主机动态配置而无需用户监督。BOOTP主要用于客户机从服务器获得自己的IP地址,服务器的IP地址以及启动映象文件名。其它一些配置信息,如本地子网掩码、本地时间偏移量、默认路由器地址和各种Internet服务器地址,都能与使用BOOTP协议的客户机交流。
BOOTP协议使用两个不同的知名通讯端口UDP67/68。UDP67用于服务器,UDP68用于BOOTP客户机。客户机启动时,本身还没有IP地址,这时BOOTP客户机就以广播的形式发出一个名为BOOTREQUEST的IP地址查询请求包,这个请求包中包含了客户机物理地址,还可能有一个IP地址,如果已有的话。客户使用地址255.255.255.255发送广播,这种特殊地址称为有限广播地址。然后客户机等待服务器的响应,如果在特定时间段内没有收到响应,客户机就重新发出请求。
通过引导答复(bootreply)包,服务器响应客户机请求。请求可以包含“通用”引导文件名,例如,unix或ethertip。但服务器发送引导应答包时,它使用对应的引导文件的确切的路径名称来取代这个字段。为了确定路径名,服务器会查询本身的的数据库。这个数据库关联了客户机地址、请求文件名和为用户定制的特殊引导文件。如果请求(bootrequest)文件名是空,服务器就返回一个文件名字段用于表示客户机需加载的默认文件。
在客户机IP地址不知道的情况下,服务器必须要有一个硬件地址和IP地址相对应的数据库。客户机IP地址也被放到“bootreply”的某一字段中。
BOOTP和RARP类似,但RARP只运行于LAN网络的数据链路层;而基于UDP/IP的配置协议BOOTP协议则提供了更多配置方面的信息,它允许整个IP网络动态配置。总之,BOOTP及其扩展成为动态主机配置协议(DHCP)的基础。
协议结构
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 – 消息操作代码,可以是引导请求( BOOTREQUEST )也可以是引导答复( BOOTREPLY )
Htype – 硬件地址类型
Hlen – 硬件地址长度
Xid – 事务 ID.
Secs – 客户机开始地址请求或续约后消耗的时间(秒数)
Flags – 标记
Ciaddr – 客户机 IP 地址
Yiaddr – “你的”(客户机) IP 地址
Siaddr – 在 bootstrap 中下一台服务器可用服务器的 IP 地址
Giaddr – 通过代理启动时代理的 IP 地址
Chaddr – 客户机硬件地址
Sname – 其他可用服务器主机名称,空终止符
File – 引导文件名、空终止符; DHCPDISCOVER 包中的属名或者空值, DHCPOFFER 包中的完全合格目录路径名
Options – 可选参数字段