TCP/IP详解 卷一 BOOTP:引导程序协议
发表于:2025-10-16 | 分类: 学习
BOOTP:引导程序协议

概述

BOOTP使用UDP,且通常需与TFTP协同工作。

BOOTP 的分组格式

BOOTP 请求和应答均被封装在UDP数据报中,如图所示:

下图展示了BOOTP请求和应答的格式:

“操作码”字段为 1表示请求,为2表示应答。硬件类型字段为1表示10Mb/s的以太网,这和ARP请求或应答中同名字段表示的含义相同。类似地,对于以太网,硬件地址长度字段为6字节。

“跳数”字段由客户设置为 0,但也能被一个代理服务器设置

“事务标识”字段是一个由客户设置并由服务器返回的 32bit整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。

客户开始进行引导时,将“秒数”字段设置为一个时间值。服务器能够看到这个时间值,备用服务器在等待时间超过这个时间值后才会响应客户的请求,这意味着主服务器没有启动。

如果该客户已经知道自身的IP地址,它将写入“客户IP地址”字段。否则,它将该字段设置为 0。

客户必须设置它的“客户硬件地址”字段。尽管这个值与以太网数据帧头中的值相同,UDP数据报中也设置这个字段,但任何接收这个数据报的用户进程能很容易地获得它。一个进程通过查看UDP数据报来确定以太网帧首部中的该字段通常是很困难的(或者说是不可能的)。

“服务器主机名”字段是一个空值终止串,由服务器填写。服务器还将在“引导文件名字段”填入包括用于系统引导的文件名及其所在位置的路径全名。

“特定厂商区域”字段用于对BOOTP进行不同的扩展。

当一个客户使用BOOTP(操作码为1)进行系统引导时,引导请求通常是采用链路层广播,IP首部中的目的IP地址为255.255.255.255)。源IP地址通常是0.0.0.0,因为此时客户还不知道它本身的IP地址。

BOOTP有两个熟知端口: BOOTP 服务器为67,BOOTP 客户为68。这意味着BOOTP 客户不会选择未用的临时端口,而只用端口68。

BOOTP服务器的设计

BOOTP 服务器将从它的熟知端口(67)读取UDP数据报。这没有特别的地方。它不同于RARP 服务器 ,它必须读取类型字段为“ RARP请求”的以太网帧。BOOTP协议通过将客户的硬件地址放入BOOTP分组中,使得服务器很容易获取客户的硬件地址

特定厂商信息

“特定厂商区域”这个区域含有服务器返回客户的可选信息。

如果有信息要提供,这个区域的前 4个字节被设置为IP地址99.130.83.99。这可称作魔术甜饼(magic cookie),表示该区域内包含信息。

这个区域的其余部分是一个条目表。每个条目的开始是 1字节标志字段。其中的两个条目仅有标志字段:标志为 0的条目作为填充字节(为使后面的条目有更好的字节边界),标志为255的条目表示结尾条目。第一个结尾条目后剩余的字节都应设置为这个数值( 255)。

下图显示了厂商说明区域中一些条目的格式:

子网掩码条目和时间值条目都是定长条目,因为它们的值总是占 4个字节。时间偏移值是从1900年1月1日0时以来的秒数(UTC)。

网关条目是变长条目。长度通常是4 的倍数,这个值是一个或多个供客户使用的网关(路由器)的IP地址。返回的第一个必须是首选的网关。

上一篇:
TCP/IP详解 卷一 TCP:传输控制协议
下一篇:
TCP/IP详解 卷一 TFTP:简单文件传送协议