第10章引导协议与动态主机配置协议引导协议BOOTP(BOOTstrapProtocol)是TCP/IP协议族的应用层协议,它的主要作用是使无盘站点从服务器上获得引导信息。动态主机配置协议DHCP(DynamicHostConfigurationProtocol)是在BOOTP协议基础上发展起来的协议,它使客户机能够在TCP/IP网络上获得相关的配置信息。第10章引导协议与动态主机配置协议10.1BOOTP原理10.2BOOTP报文10.3启动配置文件10.4DHCP基本概念10.5DHCP运行方式10.6DHCP/BOOTP中继代理10.1BOOTP原理•引导协议BOOTP是针对网络上无盘节点而设计的启动协议,无盘节点启动时它需要从网上获得三种信息:–自己的IP地址–文件服务器的IP地址–可运行的初始内存印象(启动映象文件名)•利用RARP只能获得自己的IP地址。•BOOTP协议工作过程:1)由ROM芯片中的BOOTP启动代码启动客户机,此时客户机还没有IP地址,它便用有限广播形式以0.0.0.0的源IP地址向网络中发出BOOTP请求,这个请求中包含了客户机网卡的MAC地址。2)网络中运行BOOTP服务的服务器接收到这个请求,根据请求中的MAC地址在BOOTP数据库中查找这个MAC的记录,如果没有此MAC的记录则不响应这个请求,如果有就将有关信息发送回客户机。返回的响应中包含的主要信息有客户机的IP地址、服务器的IP地址和启动映象文件名等信息。3)客户机根据返回信息通过TFTP服务器下载启动映象文件,并启动该文件。客户68客户68服务器67服务器67请求应答UDPUDPUDPUDP服务器67UDP被动打开BOOTP协议的实现要点如下:1)使用一个单独的包交换信息;使用超时重发机制,直到发送方收到应答信息为止。请求和应答使用相同的包字段结构格式;使用(最大可能长度的)固定长度的字段,以简化结构定义和分析的需要。2)客户端广播引导请求(bootrequest)包,其包含客户端的硬件地址,如果知道的话,还包含它的IP地址。服务器单播引导应答(bootreply)包。3)请求可以包含客户端指定的响应服务器的名称。这样客户端可以强制从一个指定的主机引导。如果一个相同的引导文件存在多种版本或服务器属于一个远距离的网络/域,客户端不必处理名称/域服务,而是由BOOTP服务器实现这种情况下的相应功能。4)请求可以包含通用(generic)引导文件名。例如‘unix’。但服务器发送引导应答时,它使用对应的引导文件的确切路径名称来取代这个字段。5)服务器必须有一个硬件地址和IP地址对应的数据库。此类客户端IP地址被放在引导应答的对应字段中。6)某些网络拓扑可能在一个物理网上没有一个直接可以访问的TFTP服务器,BOOTP允许客户端通过使用相邻的网关从几跳外的服务器上引导。•引导协议BOOTP的特点:1)BOOTP协议基于UDP,不和硬件直接打交道,易于实现且移植性好;2)协议交换的信息量较大,可以充分利用硬件的能力。•BOOTP与RARP的比较:–两者工作模式相同,均采用请求/应答的客户--服务器方式,从而具有很大的灵活性。–两者不同之处:BOOTP服务器是作为一个应用程序而存在的,请求/应答报文在同一个IP网络内实现,易于修改和移植。而RARP服务器存在于内核中,请求/应答报文在同一个物理网络内实现,修改和移植都很困难。返回10.2BOOTP报文10.2.1BOOTP报文格式BOOTP协议有请求和应答两种报文,被封装在UDP数据报中,如图10-1所示。图10-2显示了长度为300字节的BOOTP请求和应答的格式。300字节08162431特定厂商区域字段由两部分组成:•第一部分叫做魔饼(magiccookie),长度为4个字节,用于定义其后面部分内容的格式(99.130.83.99):•第二部分是一个项目表,每个项目包含:–一个长度为1字节的类型域(type)–一个可选的1个字节的长度域(length)–一个由长度域定义的多字节的值域(value)10.2.2BOOTP报文传输•BOOTP报文通过无连接UDP传输,其可靠性由应用程序完成。•主要处理步骤:–客户端传送请求–客户端重传请求–服务器接收引导请求–客户端接收应答–通过网关引导1.客户端传送引导请求•客户在第一次建立数据包前,最好把整个包的缓冲区清零;这将所有的字段设置成默认状态。•IP目的地址被设置成255.255.255.255(广播地址)或服务器的IP地址。•IP源地址设置成客户端IP地址,如果此时客户端IP地址未知,则置为0。•UDP头使用适当的长度设置,源端口设置为BOOTP客户端端口68,目标端口设置为BOOTP服务器端口67。•操作码字段设置成1,表示引导请求。•硬件类型字段设置成所在物理网络硬件地址类型。•硬件地址长度设置成硬件地址长度,例如,以太网是'6'。•事务标识字段设置成一个'随机'事务ID。•秒数字段设置成客户端引导开始后过去的秒数。设置这个数值是为了让服务器知道客户端已经尝试的时间多少。•客户IP地址字段和IP源地址值相同。•客户硬件地址字段根据客户端硬件地址填写。•如果客户端希望限制从一个特定服务器引导,就可以在服务器IP地址字段和服务器主机名字段中填写相应内容。•客户端在填写引导文件名字段时有以下几种选择:1)设置成空,即使用默认的文件来引导。2)这个字段也可以是一般常用的名字,例如unix。3)这个字段还可以是具体的目录路径名字。•特定厂商区域字段可以由客户端填写卖主的字符串或结构。如果使用了特定厂商区域字段,该字段中第一个条目为一个4字节的魔饼,以便让服务器确定在这个字段中是什么类型的信息。2.客户端重传BOOTP报文通过重传策略实现可靠性,主要包括时间片与重传技术。•在一长段时间内没有收到应答,客户端应该重传请求。•时间间隔必须仔细选择不要引起网络拥塞。BOOTP推荐延迟一个随机时间(0-4秒),延迟算法采用二进制指数后退方法。•每次重传前,客户端应该修改秒数字段。3.服务器接收引导请求•如果UDP目的端口不匹配BOOTP服务器端口,则丢弃数据包。•如果服务器名字字段是空(没有指定特定的服务器),或者该字段是指定的并且匹配服务器名字或别名,继续包的处理。•如果服务器名字字段是指定的,但不匹配本服务器,则有多种选择:1)可以选择简单丢弃这个包。2)如果通过查询服务器名字字段名称,显示其在某网络中,可以丢弃这个包,你也可以选择转发这个包到那个地址。–转发:检查网关地址字段。如果其值为0,填入本服务器地址或可以用来到达那个网络的网关的地址。然后转发这个包。•如果客户端IP地址是0,那么客户端不知道自己的IP地址,此时,在本服务器的数据库中查找客户端的硬件地址。如果找到该客户端IP地址,便填入你的IP地址字段。如果没有匹配,则丢弃数据包。•接着检查引导文件名字段。1)如果客户端不关注文件名或想要默认引导文件,则这个字段是空。2)当这个字段非空,可以将它和客户端的IP地址做为数据库的查询关键字。如果有默认的文件或通用文件或一个匹配的指定的路径名称,就在引导文件名字段中填入选择的引导文件的指定的路径名称。如果引导文件名字段是非空并且没有匹配,那么客户端要一个本服务器没有的文件,丢弃这个包。•然后检查特定厂商区域字段。如果提供一种可识别类型的数据,应该进行客户端指定的动作,并且回应要填入应答包中的特定厂商区域字段数据字段。•服务器IP地址字段填入本服务器对应值。•设置操作码字段字段为2,表示引导应答。•UDP目的端口设置成BOOTP客户端端口。如果客户端地址非0,把包发送到那里;否则,查看网关地址,如果网关地址非0,则把包发送到网关地址。描述类型长度值填充0子网掩码14子网掩码时间偏移24时间偏移值默认路由器3变长IP地址时间服务器4变长IP地址……表结束2554.客户端接收应答客户端丢弃以下的包:–UDP相关的端口不是引导定位端口–不是BOOTP引导应答–不匹配客户端自己IP地址或硬件地址–不匹配客户端自己发出的事务标识ID•除这些以外,客户端便收到一个成功的应答。•如果客户端以前不知道自己IP地址,查询相关IP地址字段便知道自己的IP地址。5.通过网关引导•侦听BOOTP引导请求广播的网关可能确定转发这些请求。–转发立即开始–等客户端确定的秒数字段超过某个阀值。•当一个网关确定转发请求时,网关IP地址字段如果是0,它就在这个字段中加入自己的IP地址。也可以使用跳数字段来可控制包可以转发多远,每次转发应该增加跳数,以便决定何时终止转发。返回10.3启动配置文件IP地址是IP网络上唯一标识一个接入终端最原始和最有效的标识符。分配IP地址的方法:–自协商方式–用户自己静态配置–管理员统一分配配置等方式•更重要的是:很多终端启动时不仅需要IP地址,而且还需要动态地获取更多的启动配置信息。以协议机制工作的配置方式•BOOTP是最早的主机配置协议。BOOTP服务器上有一个关于本网络上各无盘结点的启动配置文件。•BOOTP请求的引导文件名字段中填入“UNIX”等通用名称,服务器收到请求后,从启动配置文件中查找,当找出适合于该客户硬件体系结构的启动文件名,便填入BOOTP响应中同一域,返回客户机。•采用启动配置文件有两大优点:1)管理员可以对客户机的引导文件进行配置。2)方便客户机用户,使他们不必记住确切的引导文件名,也不必记住客户机的硬件结构。BOOTP用于相对静态环境,每个主机都有一个永久的网络连接,管理人员创建一个BOOTP配置文件来定义每个主机的BOOTP参数。在计算机经常移动和实际计算机数目超过了可获得的IP地址时,这种静态映射就不适用了。•为此,发展了DHCP协议,DHCP协议兼容BOOTP协议。DHCP从两个方式上扩充了BOOTP:1)DHCP可使计算机用消息获取它所需要的所有配置信息。2)DHCP允许计算机快速动态的获取IP地址。DHCP支持三种类型的地址分配:1)自动分配:DHCP给主机指定一个永久的IP地址;2)动态分配:主机IP地址的动态性表现在,被分配的IP地址有时间限制或自己可以明确表示放弃本地址。3)手工分配:网络管理员按照DHCP规则,将指定IP地址分配给主机。•动态分配:自动重用地址的机制。这种方法适合于临时上网用户,而且在网络的IP地址资源不是很多的时候特别有用。返回10.4DHCP基本概念•动态主机配置协议DHCP是在TCP/IP网络上使客户机获得配置信息的协议。•图10-3表示典型DHCP网络。DHCP服务器本地网络DHCP客户机BDHCP客户机CDHCP客户机AIP地址数据库图10-3典型DHCP网络组成部分DHCP信息包的格式是基于BOOTP包格式的。不同:标志位(1强迫服务器以广播应答)选项变长操作码硬件类型硬件长度跳数交易ID秒数标志位未用客户IP地址你的IP地址服务器IP地址网关IP地址客户硬件地址(16字节)服务器名(64字节)启动文件名(128字节)选项(变长)额外的DHCP选项:1DHCPDISCOVER客户→服务器2DHCPOFFER服务器→客户3DHCPREQUEST客户→服务器4DHCPDECLINE客户→服务器5DHCPACK服务器→客户6DHCPNAK服务器→客户7DHCPRELEASE客户→服务器8DHCPINFORM客户→服务器•使用DHCP的好处:1.安全而可靠的设置DHCP避免了因手工设置IP地址及子网掩码所产生的错误,同时也避免了把一个IP地址分配给多台工作站所造成的地址冲突。2.降低了管理IP地址设置的负担使用DHCP服务器大大缩短了配置或重新配置网络中工作站所花费的时间,通过对DHCP服务器的设置可灵活的设置地址的租期。DHCP地址租约的更新过程将有助于确定哪个客户的设置需要经常更新,且这些变更由客户机与DHCP服务器自动完成,无需网络管理员人工干预。返回10.5DHCP运行方式1.DHCP客户机运行机制•所有支持DHCP协议并能够发起DHCP过程的终端都称之为DHCP客户机。D