1 引言
在进行系统引导时能够通过R A R P来获取它的 I P地址。然而使用 R A R P有两个问题: ( 1) I P地址是返回的唯一结果;( 2)既然 R A R P使用链路层广播, R A R P请求就不会被路由器转发(迫使每个实际网络设置一个RARP 服务器)。
2 BOOTP 的分组格式
BOOTP 请求和应答均被封装在 U D P数据报中,如图1 6 - 1所示。
“操作码”字段为 1表示请求,为2表示应答。硬件类型字段为 1表示10 Mb/s的以太网,这和A R P请求或应答(图 4 - 3)中同名字段表示的含义相同。类似地,对于以太网,硬件地址长度字段为6字节。
“跳数”字段由客户设置为 0,但也能被一个代理服务器设置
“事务标识”字段是一个由客户设置并由服务器返回的 32 bit整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。
客户开始进行引导时,将“秒数”字段设置为一个时间值。服务器能够看到这个时间值,备用服务器在等待时间超过这个时间值后才会响应客户的请求,这意味着主服务器没有启动。
如果该客户已经知道自身的 I P地址,它将写入“客户 I P地址”字段。否则,它将该字段设置为 0。对于后面这种情况,服务器用该客户的 I P地址写入“你的 I P地址”字段。“服务器I P地址”字段则由服务器填写。
当一个客户使用 B O O T P(操作码为 1)进行系统引导时,引导请求通常是采用链路层广播, I P首部中的目的 I P地址为 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5(受限的广播, 1 2 . 2节)。源 I P地址通常是0 . 0 . 0 . 0,因为此时客户还不知道它本身的 I P地址。
B O O T P有两个熟知端口: BOOTP 服务器为6 7, BOOTP 客户为6 8。这意味着BOOTP 客户不会选择未用的临时端口,而只用端口 6 8。选择两个端口而不是仅选择一个端口为 B O O T P服务器用的原因是:服务器的应答可以进行广播(但通常是不用广播的)。
如果服务器的应答是通过广播传送的,同时客户又选择未用的临时端口,那么这些广播也能被其他的主机中碰巧使用相同临时端口的应用进程接收到。因此,采用随机端口(即临时端口)对广播来说是一个不好的选择。
如果客户也使用服务器的知名端口(6 7)作为它的端口,那么网络内的所有服务器会被唤醒来查看每个广播应答(如果所有的服务器都被唤醒,它们将检查操作码,如果是一个应答而不是请求,就不作处理)。
如果多个客户同时进行系统引导,并且服务器广播所有应答,这样每个客户都会收到其他客户的应答。客户可以通过 B O O T P首部中的事务标识字段来确认应答是否与请求匹配,或者可以通过检查返回的客户硬件地址加以区分.
7 小结
B O O T P使用U D P,它为引导无盘系统获得它的 I P地址提供了除 R A R P外的另外一种选择。B O O T P还能返回其他的信息,如路由器的 I P地址、客户的子网掩码和名字服务器的 I P地址。
既然B O O T P用于系统引导过程,一个无盘系统需要下列协议才能在只读存储器中完成:
B O O T P、 T F T P、 U D P、 I P和一个局域网的驱动程序。
B O O T P服务器比 R A R P服务器更易于实现,因为 B O O T P请求和应答是在 U D P数据报中,而不是特殊的数据链路层帧。一个路由器还能作为真正 B O O T P服务器的代理,向位于不同网络的真正B O O T P服务器转发客户的B O O T P请求。