第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终端引导过程:

  1. BOOTP请求(0.0.0.0 → 255.255.255.255)
  2. BOOTP应答(返回IP地址)
  3. ARP请求(检测地址冲突)
  4. TFTP请求(获取引导文件)
  5. TFTP传输(操作系统映像)

16.4 BOOTP服务器的设计

鸡和蛋问题

  • 服务器需要向客户发送UDP数据报
  • 客户还不知道自己的IP地址

解决方案

  1. 在ARP高速缓存中设置条目(Unix服务器)
  2. 广播BOOTP应答

16.5 BOOTP穿越路由器

  • 中继代理转发BOOTP请求
  • 填入网关IP地址字段
  • 跳数字段加1(最大3跳)
  • 应答发回中继代理

16.6 特定厂商信息

  • 前4字节:99.130.83.99
  • 表示包含可选信息

常见条目

标志说明
0填充字节
255结束
子网掩码4字节
时间偏移4字节
网关变长
DNS服务器变长

16.7 小结

BOOTP通过UDP提供IP地址和其他引导信息。支持穿越路由器,比RARP更灵活。