BOOTP 引导协议( 三 )


就可以使用"chaddr"和"yiaddr"字段填入一个条目 。当然,这个条目象正常ARP建立的
其它条目一样有一个生命时间,
引导应答的发送程序就能够简单地发送引导应答到客户端的IP地址了 。UNIX(4.2
BSD)有这种功能 。
b.假如发送程序缺少这些核心钩子程序,就只能简单发送引导应答到相应接口的广播
地址 。
这只是在前面情况外的额外的广播 。
4 ARP在客户端使用
客户端PROM必须包含一个ARP的简单实现,例如,地址缓冲能够容纳一个条目 。
这将答应客户端在知道IP地址和引导文件名后执行第二阶段引导(TFTP) 。
任何时候客户端应该预备回应一个自己IP到硬件地址映射的ARP请求(假如知道)以接收
TFTP或BOOTP应答 。
因为引导应答将包含服务器/网关的硬件源地址(在硬件中封装),客户端可以
避免发送一条ARP请求来申请后续的TFTP阶段使用的服务器/网关IP地址 。
但这应该只是一种非凡情况,因为上面描述的只有第二阶段的引导仍然答应 。
5 与RARP对照
提议客户端使用一个早先的协议,反向地址解析协议(RARP)[1]来通过它的硬件地址确定自
己的IP地址 。
但RARP的劣势是它是一个硬件链路层的协议(不是基于IP/UDP) 。
这意味着RARP只能在包含非凡的为访问原始报文修改的核心和驱动的主机上实现 。
因为现在存在不同组织维护的许多网络核心,一个不要求修改核心的引导协议是一个确定
的优势 。
BOOTP除了上述章节描述的有用的特性外,还提供硬件到IP地址的查询功能 。
6 包处理
6.1客户端传送
在第一次建立包前,最好把整个包的缓冲区清零;
这将所有的字段设置成默认状态 。任何客户端建立包中的下列字段 。
IP目的地址被设置成255.255.255.255(广播地址)或服务器的IP地址(假如知道) 。
IP源地址和"ciaddr"设置成客户端IP地址(假如知道),或者0 。UDP头使用适当的长度设
置;
源端口="BOOTP客户端"端口,目标端口="BOOTP服务器"端口 。
"op"设置成"1",BOOTREQUEST(引导请求) 。"htype"设置成在"Assigned
Numbers"RFCARP章节中分配的硬件地址类型 。
"hlen"设置成硬件地址长度,例如,10M以太网是"6" 。
"xid"设置成一个"随机"事务ID 。"secs"设置成客户端引导开始后过去的秒数 。
这个让服务器知道客户端已经试了多长时间了 。
当数字变大,某些服务器可能更多注重这个客户端提供不同的服务 。
假如客户端缺少一个适当的时钟,它可以使用循环定时器建立一个粗略的估计值 。
或者它可以选择简单发送使用一个固定值如100秒的字段 。
假如客户端知道IP地址,"ciaddr"(和IP源地址)设置成这个值 。
"chaddr"使用客户端硬件地址填写 。
假如客户端希望限制从一个特定服务器名引导,就可以在"sname"中放一个空结束的字符
串 。
使用的名字应该是对应的主机的正当的名字或别名 。
客户端在填写"file"文件名字段是有许多选择 。
假如设置成空,意味着"我向使用默认的文件来引导我的机器" 。一个空文件名也意味着
"我只对找到客户端/服务器/网关的IP地址感爱好,我不在乎文件名" 。
这个字段也可以是一个"通用"名字入"unix"或"gateway";这意味着
"使用命名的程序配置来引导我的机器" 。最后这个字段可以是确切的目录路径名字 。
"vend"字段可以由客户端填写卖主的字符串或结构 。例如可以填写机器硬件类型或序列
号 。
但BOOTP服务器的操作应该不依靠与这些存在的信息 。

推荐阅读