BOOTP是引导程序协议,也称为自举协议,用于系统引导过程,是DHCP的前身,BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。通过BOOTP协议可以为局域网中的无盘工作站分配动态IP,这样就不需要管理员去为每个用户去设置静态IP地址。一个无盘系统需要下列协议才能在只读存储器中完成:BOOTP、TFTP、UDP、IP和一个局域网的驱动程序。BOOTP使用UDP,通常与TFTP协同工作。
由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请求时,中继代理将它的IP地址填入收到BOOTP请求中的“网关IP地址字段”,然后将该请求发送到真正的BOOTP服务器(由中继代理填入网关字段的地址是收到的BOOTP请求接口的IP地址)。该代理中继还将跳数字段值加1(这是为防止请求被无限地在网络内转发)。既然发出的请求是一个单播的数据报(与发起的客户的请求是广播的相反),它能按照一定的路由通过其他的路由器到达真正的BOOTP服务器。真正的BOOTP服务器收到这个请求后,产生BOOTP应答,并将它发回中继代理,而不是请求的客户。既然请求网关字段不为零,真正的BOOTP服务器知道这个请求是经过转发的。中继代理收到应答后将它发给请求的客户。
如果有信息要提供,这个区域的前4个字节被设置为I P地址99.130.83.99。这可称作魔术甜饼,表示该区域内包含信息。
无盘系统用RARP获取IP存在的问题:
https://baike.baidu.com/item/BOOTP/610878?fr=aladdin
https://zhidao.baidu.com/question/6070483.html
TCP/IP详解卷1
原文:https://www.cnblogs.com/chen-cs/p/12898864.html