BOOTP是引导程序协议,也称为自举协议,用于系统引导过程,是DHCP的前身,BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。通过BOOTP协议可以为局域网中的无盘工作站分配动态IP,这样就不需要管理员去为每个用户去设置静态IP地址。一个无盘系统需要下列协议才能在只读存储器中完成:BOOTP、TFTP、UDP、IP和一个局域网的驱动程序。BOOTP使用UDP,通常与TFTP协同工作。
报文格式
操作码:1(请求)、2(应答)。
硬件类型:1(以太网)。
硬件地址长度:6(以太网)。
跳数:由客户设置为0,代理服务器也可以改变。
事务标识:是一个由客户设置并由服务器返回的32 bit整数。客户用它对请求和应答进行匹配。对每个请求,客户应该将该字段设置为一个随机数。
秒数:客户设置一个时间值,超过时间值,备用服务器才会响应。
客户IP地址:如果客户知道自己IP地址,填入实际IP,否则填0。
你的IP地址:由服务器填入客户的IP地址。
服务器IP地址:服务器填写。
网关IP地址:代理服务器填写自己的IP。
客户主机硬件地址:客户填写,与以太网帧中的相同。
服务器主机名:是一个空值终止串,由服务器填写。
引导文件名:用于引导的文件名和所在路径。
特定厂商信息:用于扩展BOOTP。
协议流程
由BOOTP启动代码来启动BOOTP客户端,这个时候BOOTP客户端还没有IP地址。
BOOTP客户端使用广播,源IP地址为0.0.0.0,目的IP地址为255.255.255.255,向网络中发出IP地址查询要求。
运行BOOTP协议的服务器接收到这个请求,会根据请求中提供的MAC地址找到BOOTP客户端,并发送一个含有IP地址、服务器IP地址、网关等信息的回应帧。
BOOTP客户端会根据该回应帧来获得自己的IP地址并通过专用文件服务器(如TFTP服务器)下载启动镜像文件,模拟成磁盘来完成启动。
端口号
BOOTP服务器67号端口,BOOTP客户端68号端口。
选择两个端口而不是仅选择一个端口为BOOTP服务器用的原因是:服务器的应答可以进行广播。
当服务器广播,客户端使用临时端口时。广播也能被其他的主机中碰巧使用相同临时端口的应用进程接收到。因此,采用随机端口(即临时端口)对广播来说是一个不好的选择。
客户端和服务器使用同一个端口时。可以,此时网络内的所有服务器会被唤醒来查看这个广播,若是应答服务器就不做处理。
多个客户端同时引导时,且服务器广播所有应答。这样每个客户都会收到其他客户的应答。客户可以通过BOOTP首部中的事务标识字段来确认应答是否与请求匹配,或者可以通过检查返回的客户硬件地址加以区分。
BOOTP中继
路由器(也称作“ BOOTP 中继代理”),当收到一个BOOTP请求时,中继代理将它的IP地址填入收到BOOTP请求中的“网关IP地址字段”,然后将该请求发送到真正的BOOTP服务器(由中继代理填入网关字段的地址是收到的BOOTP请求接口的IP地址)。该代理中继还将跳数字段值加1(这是为防止请求被无限地在网络内转发)。既然发出的请求是一个单播的数据报(与发起的客户的请求是广播的相反),它能按照一定的路由通过其他的路由器到达真正的BOOTP服务器。真正的BOOTP服务器收到这个请求后,产生BOOTP应答,并将它发回中继代理,而不是请求的客户。既然请求网关字段不为零,真正的BOOTP服务器知道这个请求是经过转发的。中继代理收到应答后将它发给请求的客户。
特定厂商信息
如果有信息要提供,这个区域的前4个字节被设置为I P地址99.130.83.99。这可称作魔术甜饼,表示该区域内包含信息。
BOOTP vs. RARP
无盘系统用RARP获取IP存在的问题:
IP地址是返回的唯一结果,没有其他信息返回。
RARP使用链路层广播,路由器不会转发该请求,使得在每个实际网络中得设置一个RARP服务器。
BOOTP vs. DHCP
DHCP可以说是BOOTP的增强版本,比较起BOOTP,DHCP透过”租约”的概念,有效且动态的分配客户端的IP设定,而且,作为兼容考虑,DHCP也完全照顾了BOOTP Client的需求。
必须至少有一台DHCP工作在网络上面,它会监听网络的DHCP请求。它提供两种IP定位方式:自动分配,一旦DHCP客户端第一次成功的从DHCP服务器租用到IP地址之后,就永远使用这个地址;动态分配,当DHCP第一次从HDCP服务器端租用到IP地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放。
DHCP除了可以动态的进行设定IP地址之外,还能够直接将一些IP保留下来给一些特殊用途的机器进行使用。另外一个方面,它能够直接按照硬件地址来固定的分配IP地址。
DHCP与BOOTP的不同点在于,BOOTP也可以完成给主机分配IP地址的任务,但它要求主机的硬件地址必须被手工输入到BOOTP表中。可以讲DHCP看成一个动态的BOOTP。但是,BOOTP还可以将用来引导主机的操作系统发送给主机。而DHCP不可以。
参考
https://baike.baidu.com/item/BOOTP/610878?fr=aladdin
https://zhidao.baidu.com/question/6070483.html
TCP/IP详解卷1
最新评论