首页 > 编程知识 正文

TCPIP协议卷学习基础部分十六 BOOTP

时间:2023-05-03 21:10:53 阅读:222544 作者:3176

1 RARP与BOOTP
无盘系统,它在不知道自身IP地址的情况下,在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题: (1)IP地址是返回的唯一结果;(2)既然RARP使用链路层广播,RARP请求就不会被路由器转发(迫使每个实际网络设置一个RARP服务器)。一种用于无盘系统进行系统引导的替代方法,又称为引导程序协议,或BOOTP。
2 BOOTP分组格式


①“操作码”字段为 1表示请求,为 2表示应答。硬件类型字段为 1表示10 Mb/s 的以太网,这和A R P请求或应答中同名字段表示的含义相同。类似地,对于以太网,硬件地址长度字段为6字节。
②“跳数”字段由客户设置为 0,但也能被一个代理服务器设置。
③“事务标识”字段是一个由客户设置并由服务器返回的 32 bit 整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。
④客户开始进行引导时,将“秒数”字段设置为一个时间值。服务器能够看到这个时间值,备用服务器在等待时间超过这个时间值后才会响应客户的请求,这意味着主服务器没有启动。
⑤如果该客户已经知道自身的 I P 地址,它将写入“客户 I P 地址”字段。否则,它将该字段设置为 0。对于后面这种情况,服务器用该客户的 I P地址写入“你的 I P 地址”字段。“服务器I P 地址”字段则由服务器填写。如果使用了某个代理服务器,则该代理服务器就填写“网关 I P 地址”字段。
⑥客户必须设置它的“客户硬件地址”字段。尽管这个值与以太网数据帧头中的值相同,
UDP数据报中也设置这个字段,但任何接收这个数据报的用户进程能很容易地获得它
⑦“服务器主机名”字段是一个空值终止串,由服务器填写。服务器还将在“引导文件名字段”填入包括用于系统引导的文件名及其所在位置的路径全名。
⑧“特定厂商区域”字段用于对 B O O T P进行不同的扩展。
3 BOOTP服务器设计
首先,BOOTP服务器将从它的熟知端口(67)读取UDP数据报。这没有特别的地方。它不同于RARP服务器,必须读取类型字段为“RARP请求”的以太网帧。BOOTP协议通过将客户的硬件地址放入BOOTP分组中,使得服务器很容易获取客户的硬件地址。
TFTP服务器如何能将一个响应直接送回 BOOTP客户?这个响应是一个UDP数据报,而服务器知道该客户的IP地址(可能通过读取服务器上的配置文件)。但如果这个客户向那个IP地址发送一个UDP数据报(正常情况下会处理UDP的输出),BOOTP服务器的主机就可能向那个IP地址发送一个ARP请求。但这个客户不能响应这个ARP请求,因为它还不知道它自己的IP地址!
有两种解决办法:第一种,通常被 Unix服务器采用,是服务器发一个 i o c t l ( 2 )请求给内核,为该客户在 A R P高速缓存中设置一个条目(这就是命令 a r p - s所做的工作)。服务器能一直这么做直到它知道客户的硬件地址和 I P 地址。这意味着当服务器发送 U D P数据报(即BOOTP应答)时,服务器的ARP将在ARP高速缓存中找到该客户的 I P地址。另一种可选的解决办法是服务器广播这个BOOTP应答而不直接将应答发回该客户。既然通常期望网络广播越少越好,因此这种解决方案应该只在服务器无法在它的ARP高速缓存设置一个条目的情况下使用。通常只有拥有超级用户权限才能在ARP高速缓存设置一个条目,如果没有这种权限就只能广播BOOTP应答。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。