第16章 BOOTP:引导程序协议
16.1 引言
BOOTP用于无盘系统获取IP地址,比RARP更强大。
- 使用UDP
- 与TFTP协同工作
16.2 BOOTP的分组格式
关键字段
| 字段 | 说明 |
|---|---|
| 操作码 | 1=请求,2=应答 |
| 硬件类型 | 1=以太网 |
| 硬件地址长度 | 6 |
| 事务标识 | 客户设置,服务器返回 |
| 客户IP地址 | 已知时填写 |
| 你的IP地址 | 服务器填写 |
| 服务器IP地址 | 服务器填写 |
| 网关IP地址 | 代理服务器填写 |
| 客户硬件地址 | 6字节 |
| 服务器主机名 | 空值终止串 |
| 引导文件名 | 路径全名 |
| 特定厂商区域 | 64字节扩展 |
端口号
- 服务器:67
- 客户:68
16.3 一个例子
X终端引导过程:
- BOOTP请求(0.0.0.0 → 255.255.255.255)
- BOOTP应答(返回IP地址)
- ARP请求(检测地址冲突)
- TFTP请求(获取引导文件)
- TFTP传输(操作系统映像)
16.4 BOOTP服务器的设计
鸡和蛋问题
- 服务器需要向客户发送UDP数据报
- 客户还不知道自己的IP地址
解决方案
- 在ARP高速缓存中设置条目(Unix服务器)
- 广播BOOTP应答
16.5 BOOTP穿越路由器
- 中继代理转发BOOTP请求
- 填入网关IP地址字段
- 跳数字段加1(最大3跳)
- 应答发回中继代理
16.6 特定厂商信息
魔术甜饼(Magic Cookie)
- 前4字节:99.130.83.99
- 表示包含可选信息
常见条目
| 标志 | 说明 |
|---|---|
| 0 | 填充字节 |
| 255 | 结束 |
| 子网掩码 | 4字节 |
| 时间偏移 | 4字节 |
| 网关 | 变长 |
| DNS服务器 | 变长 |
16.7 小结
BOOTP通过UDP提供IP地址和其他引导信息。支持穿越路由器,比RARP更灵活。