RFC951——RFC951-BOOTSTRAPPROTOCOL(BOOTP)引导协议(BOOTP)RFC文档中文翻译计划1组织:中国互动出版网()RFC文档中文翻译计划()E-mail:ouyang@china-pub.com译者:金涛(piexalbertxu@bigfoot.com)译文发布时间:2001-07-05版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。NetworkWorkingGroupBillCroft(StanfordUniversity)RequestforComments:951JohnGilmore(SunMicrosystems)September1985引导协议(BOOTP)(RFC951-BOOTSTRAPPROTOCOL(BOOTP))本备忘录的状态本RFC文档向ARPA-Internet社区提供一个被提议的协议,需要进一步进行讨论和建议以得到改进。本文档无发布限制。目录1概述......................................................................................................................................22包格式..................................................................................................................................33鸡和蛋的问题.....................................................................................................................64ARP在客户端使用.............................................................................................................75与RARP对照......................................................................................................................76包处理..................................................................................................................................76.1客户端传送.....................................................................................................................76.2客户端重传策略.............................................................................................................96.3服务器接收BOOTREQUEST(引导请求)..................................................................96.4服务器/网关接收BOOTREPLY(引导应答)............................................................116.5客户端接收...................................................................................................................117通过网关引导...................................................................................................................118样例BOOTP服务器数据库.............................................................................................129致谢....................................................................................................................................1410参考文献......................................................................................................................14RFC951——RFC951-BOOTSTRAPPROTOCOL(BOOTP)引导协议(BOOTP)RFC文档中文翻译计划21概述本RFC描述一种IP/UDP引导协议(BOOTP),允许一个无盘客户端发现自己的IP地址,服务器主机的地址,和装入一个指定名称的文件到内存并且运行。引导操作有两阶段组成。本RFC描述第一个阶段:'分配地址和选择引导文件'。在获得地址和文件名信息后,就进入引导的第二个阶段:文件传送。文件传送一般使用TFTP协议[9],因为两个阶段均驻留在客户端的PROM中。但BOOTP也能够与其它协议如SFTP或FTP一起工作。我们建议客户端的PROM软件提供一种无须用户交互的完整的引导方式。这是一种无人值守的上电启动方式。必须提供一种机制来让用户手工提供地址和文件名信息旁路BOOTP协议直接进入文件传送阶段。如果提供非可变存储,我们建议在那里保存设置以旁路BOOTP协议直到这些设置导致文件传送阶段失败。如果缓存的信息失败,引导后退到第一阶段并使用BOOTP。协议的要点:1.使用了一个单独的包交换(信息)。使用超时机制直到收到应答。双向使用相同的包字段结构。使用(最大可能长度的)固定长度的字段来简化结构定义和分析。2.一个'opcode'字段包含两个值。客户端广播一个'引导请求(bootrequest)'包。服务器应答一个'引导应答(bootreply)'包。'bootrequest'包含客户端的硬件地址,如果知道,还包含它的IP地址。3.请求可以包含客户端指定的响应服务器的名称。这样客户端可以强制从一个指定的主机引导。(如果一个相同的引导文件存在多种版本或服务器在一个远距离的网络/域。)客户端不必处理名称/域服务,这个功能推到了BOOTP服务器。4.请求可以包含'通用(generic)'引导文件名。例如'unix'或'ethertip'。但服务器发送引导应答时,它使用对应的引导文件的确切的路径名称来取代这个字段。RFC951——RFC951-BOOTSTRAPPROTOCOL(BOOTP)引导协议(BOOTP)RFC文档中文翻译计划3服务器查询客户端的地址和请求文件名相关的数据库,以使用客户端自定义的特定引导文件确定这个文件名称。如果引导请求文件名是空字符串,服务器返回一个带有客户端加载的默认文件的文件名字段。5.客户端不知道它们的IP地址的情况下,服务器必须有一个硬件地址和IP地址对应的数据库。这个客户端IP地址被放在引导应答的(对应)字段中。6.某些网络拓朴(如斯坦福的网络)可能在一个物理网上没有一个直接可以访问的TFTP服务器(例如在某些网上的所有的网关和主机都可能是无盘的)。BOOTP允许客户端通过使用相邻的网关从几跳外的服务器上引导。请看下面'通过网关引导'的章节。这部分协议不需求客户端部分做特定的动作。实现是可选的,网关和服务器需要一些额外的代码。2包格式除非另外指出,所有显示的数字都是十进制的。简化起见,假设BOOTP包不会被分片。所有数字的字段使用标准网络字节顺序。即,先传送高位比特。在引导请求的IP头中,客户端如果知道就填自己的IP源地址,否则填0。当服务器地址不知道时,IP目的地址将是广播地址255.255.255.255。这个地址意味着'在本地网上广播,我不知道我的网络号'[4]。UDP头包含源和目的端口号。BOOTP协议使用两个保留的端口号,'BOOTP客户端'(68)和'BOOTP服务器'(67)。客户使用'BOOTP服务器'做为目的端口发送请求;这通常是广播。RFC951——RFC951-BOOTSTRAPPROTOCOL(BOOTP)引导协议(BOOTP)RFC文档中文翻译计划4服务器使用'BOOTP客户端'做为目的端口发送应答;取决于服务器的核心或驱动设备,这可能是也可能不是广播(在下面'鸡和蛋的问题'标题的章节中深入解释)。使用两个保留的端口的原因是当引导应答必须广播到客户端避免'叫醒'并且调度BOOTP服务器进程。因为服务器和其它主机都不会侦听'BOOTP客户端'端口,所有进入的广播报文将在核心级别过滤掉。我们不能简单地允许客户端找一个随机端口号做为UDP源端口字段;因为服务器应答可能是广播,一个随机选择的端口号可能搞乱其它恰巧在侦听那个端口的主机。UDP长度字段设置成UDP长度加BOOTP部分的包。UDP校验和可以由客户端(或服务器)按照需要设置成0,以避免PROM实现中额外的费用。在下面的'包处理'章节中'[UDP校验和]'短语用来表示校验和可能被验证/计算。字段字节数描述---------------------op1packetopcode/messagetype.包操作码/消息类型1=BOOTREQUEST(引导请求),2=BOOTREPLY(引导应答)htype1hardwareaddresstype,硬件地址类型seeARPsectioninAssignedNumbersRFC.请看AssignedNumbersRFC中的ARP章节'1'=10mbethernet10M以太网hlen1hardwareaddresslength硬件地址长度(eg'6'for10mbethernet).例如'6'是10M以太网hops1clientsetstozero,客户端设置成0optionallyusedbygateways在跨越网关引导时网关可选择使用incross-gatewaybooting.xid4transactionID,arandomnumber,RFC951——RFC951-BOOTSTRAPPROTOCOL(BOOTP)引导协议(BOOTP)RFC文档中文翻译计划5usedtomatchthisbootrequestwiththeresponsesitgenerates.事务ID,一个随机数,用来匹配引用请求和应答secs2filledinbyclient,secondselapsedsinceclientstartedtryingtoboot.由客户端填写,客户端引导开始后的过去的秒数--2unused未使用ciaddr4clientIPaddress;客户端IP地址,filledinbyclientinbootrequestifknown.如果客户端知道就在引导请求中填入yiaddr4'your'(client)IPaddress;'你的'