前述无盘工作站通过运行RARP来获得IP地址,但RARP有如下缺陷:

  • RARP实际上是一个物理层协议,直接访问网络硬件,这使得应用程序难以使用它
  • RARP只能获得32位IP地址,而不能获得其它有用信息,如子网掩码、默认路由地址等等
  • RARP使用硬件地址标识主机,因此不能用于网络硬件地址是动态分配的网络

为克服这些缺陷而发展了BOOTstrap Protocol(BOOTP),之后又扩展到动态主机配置协议(Dynamic Host Configuration Protocol)

  • BOOTP使用UDP封装在IP中,因而易被应用程序使用
  • BOOTP消息中包含了多种信息:如IP地址、路由器地址、服务器地址。
  • BOOTP还包含了一个供生产商使用的字段,可以允许硬件厂商只对它们生产的计算机发送其它消息。

BOOTP请求和响应过程:客户-服务器模式

  • 客户端BOOTP使用IP封装的UDP来发送消息,其目的地址用全1广播地址。IP软件可以在没有本地网络地址和本机IP地址信息时接收和广播全1地址的数据报。
  • 服务器收到广播请求后,响应一个广播,包含客户所需信息。由于此时客户尚不知其IP地址,因而不能使用点到点的发送。
  • 最后客户端获得所需信息

几点说明:

  • BOOTP使用两个知名端口:服务器端口为67, 客户端口为68
  • 由于UDP是不可靠的,因而需要计算UDP的检校和,另外也需要设置“不分片”位。
  • UDP是可能丢失的,为处理数据报丢失,BOOTP使用通常的超时重传技术,为避免多个客户同时重传而导致冲突,BOOTP的延时均采用0到4秒中的随机时间。而且每多重传一次则随机时间加一倍,以降低网络负载,直到60秒后重新回到一个随机时间。

BOOTP消息格式

BOOTP消息由固定长度字段组成,响应消息和请求消息格式相同

打开网易新闻 查看精彩图片

字段说明:

OP:

  • 1=该消息为请求消息
  • 2=该消息为响应消息

HTYPE:网络硬件类型(以太网=1)

HLEN:硬件地址长度(以太网=6)

HOPS:请求消息中此字段为0,而在响应消息中服务器要计算此项

TRANSACTION ID:是一个标识号,用以匹配请求消息和响应消息。

SECOND:客户机在开始引导时,将此字段设置为一个时间值,当主服务器没有响应时,备用服务器会在此时间过后响应客户请求。

CLIENT IP ADDRESS 及以下字段包含大多数重要信息,内容比较灵活。客户端可以填充所有已知的信息,未知的字段填为0。

CLIENT IP ADDRESS:客户如果已知其IP地址,则填在字段,如果不知,则该字段填0,服务器在响应时就会把客户IP地址填在YOUR IP ADDRESS字段。

客户在已知其IP地址时,可以利用BOOTP来获得其自举文件信息。如果要获得自举配置文件,则需要进一步用简单文件传输协议来获得。把配置文件名和配置信息分开利于系统管理员进行管理,方便多个客户启动不同的操作系统。

SERVER IP ADDRESS 和SERVER HOST NAME 如果不为零,则只有名字或IP地址与此匹配的服务器才会响应该请求,若均为0,则任何一个收到该请求的服务器都会响应该请求。

BOOTP是可路由的,当路由器收到一个BOOTP时,会将它的IP地址填入ROUTE IP ADDRESS,并将跳数加1,进一步转发,直到到达最后的BOOTP服务器。跳数达到一定值后,可抛弃。(RFC951 规定为3)

特定厂商信息包含从服务器发往客户的可选信息,前四个8位组称为魔术甜饼,设置为一个IP地址:99.130.83.99。表明该区有内容。

BOOTP自举配置信息与配置文件名是分开的,利于系统管理员进行管理,但一般不会频繁变化,客户在网络中在一个较长的时期会有一个稳定的连接及配置。因此,一般RARP、 BOOTP被认为是静态IP地址分配。静态IP配置对于计算机位置固定以及IP地址充足时能很好地工作。但相反情况下,计算机位置经常移动,计算机数查过可用的IP地址数目时,就需要根据网络目前状态动态地为需要工作的计算机指定IP地址。为此,在BOOTP的基础上扩展发展了动态主机配置协议(Dynamic Host Configuration Protocol)。