1. 引言
无盘系统进行系统引导时使用RARP获取IP地址的缺点:1)IP地址是返回的唯一结果;2)RARP使用链路层广播,请求不会被路由器转发,故每个网络都要设置一个RARP服务器。
因此提出了另一种用于无盘系统进行系统引导的方法——引导程序协议BOOTP,使用UDP,且常与TFTP协同工作。
2. BOOTP的分组格式
2.1 BOOTP请求和应答的格式:
系统引导时,引导请求一般采用链路层广播,IP首部目的IP地址为255.255.255.255(受限的广播),源IP地址为0.0.0.0,因为此时客户不知道自身的IP地址。
2.2 端口号
BOOTP服务器为67,客户为68
3. BOOTP服务器的设计
服务器从端口67读取UDP数据报,必须读取类型字段为 “RARP请求” 的以太网帧。BOOTP协议将客户的硬件地址存入BOOTP分组,使得服务器很容易获取客户的硬件地址。
服务器将响应送回BOOTP客户问题的解决办法:
- 服务器发送ioctl(2)请求给内核为客户在ARP高速缓存中设置一个条目
- 服务器广播这个BOOTP应答
4. BOOTP穿越路由器
若路由器支持BOOTP协议,那么BOOTP就能由路由器转发,该功能主要用于无盘路由器。
路由器收到BOOTP请求,中继代理将它的IP地址填入收到BOOTP请求中的 “网关IP地址字段”,然后将该请求发到真正的BOOTP服务器并将跳数字段加1(跳数加到3就可以丢弃了)。真正的BOOTP服务器收到请求后产生BOOTP应答,并将其发回中继代理而不是请求的客户。
5. 特定厂商信息
6. 小结
无盘系统在只读存储器中系统引导需要的协议:BOOTP、TFTP、UDP、IP和一个局域网的驱动程序
BOOTP相较于RARP用于引导无盘系统获取IP地址的优点:
- RARP只返回IP地址,而BOOTP返回路由器的IP地址、客户的子网掩码以及名字服务器的IP地址。
- RARP请求不会被路由器转发,但路由器可以作为真正BOOTP服务器的代理,向不同网络中的BOOTP服务器转发客户的BOOTP请求。