1、第10章 引导协议与动态主机配置协议,引导协议BOOTP(BOOTstrap Protocol)是TCP/IP协议族的应用层协议,它的主要作用是使无盘站点从服务器上获得引导信息。动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是在BOOTP协议基础上发展起来的协议,它使客户机能够在TCP/IP网络上获得相关的配置信息。,第10章 引导协议与动态主机配置协议,10.1 BOOTP原理 10.2 BOOTP 报文 10.3 启动配置文件 10.4 DHCP基本概念 10.5 DHCP运行方式 10.6 DHCP/BOOTP中继代理,10.1 BOO
2、TP原理,引导协议BOOTP是针对网络上无盘节点而设计的启动协议,无盘节点启动时它需要从网上获得三种信息: 自己的IP地址 文件服务器的IP地址 可运行的初始内存印象(启动映象文件名)利用RARP只能获得自己的IP地址。,BOOTP协议工作过程:1)由ROM芯片中的BOOTP启动代码启动客户机,此时客户机还没有IP地址,它便用有限广播形式以0.0.0.0的源IP地址向网络中发出BOOTP请求,这个请求中包含了客户机网卡的MAC地址。2)网络中运行BOOTP服务的服务器接收到这个请求,根据请求中的MAC地址在BOOTP数据库中查找这个MAC的记录,如果没有此MAC的记录则不响应这个请求,如果有就
3、将有关信息发送回客户机。返回的响应中包含的主要信息有客户机的IP地址、服务器的IP地址和启动映象文件名等信息。3)客户机根据返回信息通过TFTP服务器下载启动映象文件,并启动该文件。,客户,68,客户,68,服务器,67,服务器,67,请求,应答,UDP,UDP,UDP,UDP,服务器,67,UDP,被动打开,BOOTP协议的实现要点如下:1)使用一个单独的包交换信息,使用超时重发机制,直到发送方收到应答信息为止。请求和应答使用相同的包字段结构格式;使用(最大可能长度的)固定长度的字段,以简化结构定义和分析的需要。2)客户端广播引导请求(boot request)包,其包含客户端的硬件地址,如
4、果知道的话,还包含它的IP地址。服务器单播引导应答(boot reply)包。也可以通过广播方式传回应答。,3)请求可以包含客户端指定的响应服务器的名称。这样客户端可以强制从一个指定的主机引导。4) 请求可以包含通用(generic)引导文件名。例如unix 。但服务器发送引导应答时,它使用对应的引导文件的确切路径名称来取代这个字段。 5) 服务器必须有一个硬件地址和IP地址对应的数据库。此类客户端IP地址被放在引导应答的对应字段中。6) 某些网络拓扑可能在一个物理网上没有一个直接可以访问的TFTP服务器,BOOTP允许客户端通过使用相邻的网关从几跳外的服务器上引导。,引导协议BOOTP的特点
5、:1)BOOTP协议基于UDP,不和硬件直接打交道,易于实现且移植性好;2)协议交换的信息量较大,可以充分利用硬件的能力。 BOOTP与RARP的比较: 两者工作模式相同,均采用请求/应答的客户-服务器方式,从而具有很大的灵活性。 两者不同之处:BOOTP服务器是作为一个应用程序而存在的,请求/应答报文在同一个IP网络内实现,易于修改和移植。而RARP服务器存在于内核中,请求/应答报文在同一个物理网络内实现,修改和移植都很困难。,返回,10.2 BOOTP 报文,10.2.1 BOOTP 报文格式BOOTP协议有请求和应答两种报文,被封装在UDP数据报中,如图10-1所示。,图10-2显示了长
6、度为300字节的BOOTP请求和应答的格式。,300字节,0 8 16 24 31,特定厂商区域字段由两部分组成: 第一部分叫做魔饼(magic cookie),长度为4个字节,用于定义其后面部分内容的格式(99.130.83.99): 第二部分是一个项目表,每个项目包含: 一个长度为1字节的类型域(type) 一个可选的1个字节的长度域(length) 一个由长度域定义的多字节的值域(value),例如: 类型代码(tag) 长度 值0 (填充) - -1(子网掩码) 4 本地网子网掩码2(时间) 4 全球标准时间 255(结束) - -,10.2.2 BOOTP 报文传输,BOOTP报文通
7、过无连接UDP传输,其可靠性由应用程序完成。 主要处理步骤: 客户端传送请求 客户端重传请求 服务器接收引导请求 客户端接收应答 通过网关引导,1客户端传送引导请求 客户在第一次建立数据包前,最好把整个包的缓冲区清零;这将所有的字段设置成默认状态。 UDP头使用适当的长度设置,源端口设置为BOOTP客户端端口68,目标端口设置为BOOTP服务器端口67。 IP目的地址被设置成255.255.255.255(广播地址)或服务器的IP地址。 IP源地址设置成客户端IP地址,如果此时客户端IP地址未知,则置为0。,操作码字段设置成1,表示引导请求。 硬件类型字段设置成所在物理网络硬件地址类型,以太网
8、是1。 硬件地址长度设置成硬件地址长度,以太网是6。 事务标识字段设置成一个随机事务ID。 秒数字段设置成客户端引导开始后过去的秒数。设置这个数值是为了让服务器知道客户端已经尝试的时间多少。 客户IP地址字段和IP源地址值相同。 客户硬件地址字段根据客户端硬件地址填写。 如果客户端希望限制从一个特定服务器引导,就可以在服务器IP地址字段和服务器主机名字段中填写相应内容。,客户端在填写引导文件名字段时有以下几种选择:1)设置成空,即使用默认的文件来引导。2)这个字段也可以是一般常用的名字,例如unix。3)这个字段还可以是具体的目录路径名字。 特定厂商区域字段可以由客户端填写商家的字符串或结构。
9、如果使用了特定厂商区域字段,该字段中第一个条目为一个4字节的魔饼,以便让服务器确定在这个字段中是什么类型的信息。,2客户端重传BOOTP报文通过重传策略实现可靠性,主要包括时间片与重传技术。 在一长段时间内没有收到应答,客户端应该重传请求。 时间间隔必须仔细选择不要引起网络拥塞。BOOTP推荐延迟一个随机时间(0-4秒),延迟算法采用二进制指数后退方法。 每次重传前,客户端应该修改秒数字段。,3服务器接收引导请求 如果UDP目的端口不匹配BOOTP服务器端口,则丢弃数据包。 如果服务器名字字段是空(没有指定特定的服务器),或者该字段是指定的并且匹配服务器名字或别名,继续包的处理。 如果服务器名
10、字字段是指定的,但不匹配本服务器,则有多种选择:1)可以选择简单丢弃这个包。2)如果通过查询服务器名字字段名称,显示其在某网络中,可以丢弃这个包,你也可以选择转发这个包到那个地址。 转发:检查网关地址字段。如果其值为0,填入本服务器地址或可以用来到达那个网络的网关的地址。然后转发这个包。,如果客户端IP地址是0,那么客户端不知道自己的IP地址,此时,在本服务器的数据库中查找客户端的硬件地址。如果找到该客户端IP地址,便填入你的IP地址字段。如果没有匹配,则丢弃数据包。 接着检查引导文件名字段。1)如果客户端不关注文件名或想要默认引导文件,则这个字段是空。2)当这个字段非空,可以将它和客户端的I
11、P地址做为数据库的查询关键字。如果有默认的文件或通用文件或一个匹配的指定的路径名称,就在引导文件名字段中填入选择的引导文件的指定的路径名称。如果引导文件名字段是非空并且没有匹配,那么客户端要一个本服务器没有的文件,丢弃这个包。,然后检查特定厂商区域字段。如果提供一种可识别类型的数据,应该进行客户端指定的动作,并且回应要填入应答包中的特定厂商区域字段数据字段。服务器IP地址字段填入服务器对应值。 设置操作码字段值为2,表示引导应答。 UDP目的端口设置成BOOTP客户端端口。如果客户端地址非0,把包发送到那里;否则,查看网关地址,如果网关地址非0,则把包发送到网关地址。,4.客户端接收应答 客户
12、端丢弃以下的包: UDP相关的端口不是引导定位端口 不是BOOTP引导应答 不匹配客户端自己IP地址或硬件地址 不匹配客户端自己发出的事务标识ID 除这些以外,客户端便收到一个成功的应答。 如果客户端以前不知道自己IP地址,查询相关IP地址字段便知道自己的IP地址。,5通过网关引导 侦听BOOTP引导请求广播的网关可能确定转发这些请求。 转发立即开始 等客户端确定的秒数字段超过某个阈值。 当一个网关确定转发请求时,网关IP地址字段如果是0,它就在这个字段中加入自己的IP地址。也可以使用跳数字段来可控制包可以转发多远,每次转发应该增加跳数,以便决定何时终止转发。,返回,10.3 启动配置文件,I
13、P地址是IP网络上唯一标识一个接入终端最原始和最有效的标识符。分配IP地址的方法: 自协商方式 用户自己静态配置 管理员统一分配配置等方式 更重要的是:很多终端启动时不仅需要IP地址,而且还需要获取更多的启动配置信息。,以协议机制工作的配置方式 BOOTP是最早的主机配置协议。BOOTP服务器上有一个关于本网络上各无盘结点的启动配置文件。 BOOTP请求的引导文件名字段中填入“UNIX”等通用名称,服务器收到请求后,从启动配置文件中查找,当找出适合于该客户硬件体系结构的启动文件名,便填入BOOTP响应中同一域,返回客户机。 采用启动配置文件有两大优点:1)管理员可以对客户机的引导文件进行配置。
14、2)方便客户机用户,使他们不必记住确切的引导文件名,也不必记住客户机的硬件结构。,问题:BOOTP用于相对静态环境,每个主机都有一个永久的网络连接,管理人员创建一个BOOTP配置文件来定义每个主机的BOOTP参数。在计算机经常移动和实际计算机数目超过了可获得的IP地址时,这种静态映射就不适用了。 解决:使用DHCP协议,DHCP协议兼容BOOTP协议。DHCP从两个方式上扩充了BOOTP:1)DHCP可使计算机用消息获取它所需要的所有配置信息。2)DHCP允许计算机快速动态地获取IP地址。,DHCP支持三种类型的地址分配:1)手工分配:网络管理员按照DHCP规则,将指定IP地址分配给主机;2)
15、自动分配:DHCP给主机指定一个永久的IP地址;3)动态分配:主机IP地址的动态性表现在,被分配的IP地址有时间限制或自己可以明确表示放弃本地址。 动态分配是自动重用地址的机制。这种方法适合于临时上网用户,而且在网络的IP地址资源不是很多的时候特别有用。,返回,10.4 DHCP基本概念,动态主机配置协议DHCP是在TCP/IP网络上使客户机获得配置信息的协议。 图10-3 表示典型DHCP网络。,DHCP信息包的格式是基于BOOTP包格式的。 不同:标志位(1强迫服务器以广播应答)选项变长,额外的DHCP选项(选项类型值=53):,使用DHCP的好处:1安全而可靠的设置DHCP避免了因手工设
16、置IP地址及子网掩码所产生的错误,同时也避免了把一个IP地址分配给多台工作站所造成的地址冲突。2降低了管理IP地址设置的负担使用DHCP服务器大大缩短了配置或重新配置网络中工作站所花费的时间,通过对DHCP服务器的设置可灵活的设置地址的租期。3. 节省IP地址,返回,10.5 DHCP运行方式,1DHCP客户机运行机制 所有支持DHCP协议并能够发起DHCP过程的终端都称之为DHCP客户机。DHCP客户机自己必须能够发出DHCPDISCOVER、DHCPREQUEST、DHCPDECLINE等报文。 DHCP客户机运行状态图如图所示。 当DHCP客户机处于初始化状态即还没有获取IP地址的状态时
17、,DHCP客户机将会发出一个广播的DHCPDISCOVER报文,从而开始DHCP过程。,本店经营各类毛绒玩具礼品、公仔、靠垫、挂件等等,支持批发零售,欢迎来样看样定做生产。为了赚人气,本店所有商品批发价销售,超低秒杀!虽然我们的信誉不高,但我们会以诚信为本,为您提供质高价廉的商品和优质的服务!祝您购物愉快! 欢迎大家来逛逛【扬州五亭龙玩具总动员】 ,个人小广告:,当客户机第一次启动时它进入初始化状态INIT。为了开始获取一个IP地址,客户机先广播一个DHCPDISCOVER报文并转移到SELECTING选择状态。由于协议是对BOOTP的扩充,客户机在一个UDP数据报中发送DHCPDISCOVE
18、R报文,UDP数据报中目的端口设为BOOTP端口即端口67。本地网上所有DHCP服务器接收报文,那些被设计成能响应特定客户机的服务器发送DHCPOFFER报文。因此客户机可能收到零个或多个响应(DHCPOFFER)。,处于SELECTING状态时,客户机从DHCP服务器收集DHCPOFFER响应。每个响应提供了用于客户机的配置信息,还有服务器可提供租用给客户机的一个IP地址。客户机必须选择其中一个响应如第一个到达的响应,并与服务器协商租用。为此客户机发送给服务器一个DHCPREQUEST报文,并进入请求状态。服务器为确认已接受请求并开始租用,服务器响应发出一个DHCPACK报文。客户机收到确认
19、后转移到BOUND已绑定状态,此时客户机可开始使用此地址。,DHCP 客户机更新租约的过程: 在客户机租期达到T1(50%)时,客户机需要更新租约。 1. 客户机直接向提供租约的服务器发送请求,要求更新及延长现有地址的租约。 2. 如果DHCP服务器收到请求,它发送 DHCPACK给客户机,更新客户机的租约。 3. 如果客户机无法与提供租约的服务器取得联系,则客户机一直等到租期达到T2(87.5%)时,客户机进入到一种重新申请的状态,它向网络上所有的DHCP服务器广播DHCPREQUEST以更新现有的地址租约。,4. 如有服务器响应客户机的请求,那么客户机使用该服务器提供的地址信息更新现有的租
20、约。 5. 如果租约过期或无法与其它服务器通信,客户机将无法使用现有的地址租约。客户机返回到初始启动状态,利用前面所述的步骤重新获取IP地址租约。,2DHCP服务器运行机制 DHCP 服务器行为由DHCP客户端来驱动,根据DHCP 客户机请求报文发出响应报文:1)如果收到DHCPDISCOVER报文,则从地址池中分配一个空闲IP,结合客户机请求参数,构造DHCPOFFER响应报文。2)如果收到DHCPREQUEST报文,就会根据客户机的硬件地址,查找其地址分配表,如若找到则响应DHCPACK报文,否则响应DHCPNAK报文,DHCP客户机会自动重新开始DHCP过程。3)如果收到DHCPRELE
21、ASE报文,则会解除这个IP地址与某个DHCP客户机的绑定,等待重新分配。4)如果收到DHCPDECLINE报文,会禁用报文中客户机IP地址字段的IP地址,不再分配这个IP地址。,3. DHCP交互过程,1) 首先,客户机发出DHCPDISCOVER广播报文,以便DHCP服务器能够知道客户机想要获得的各种参数。2) 所有的DHCP服务器都会为DHCPDISCOVER广播报文响应一个DHCPOFFER报文,同时,DHCP服务器会保存已分配IP地址的记录。3) 客户机能够收到每个DHCPOFFER报文,但一次只能处理一个,一般处理最先收到的DHCPOFFER报文。接着,客户机会再发出DHCPREQ
22、UEST广播报文。 4) DHCP服务器收到DHCPREQUEST报文,判断报文中服务器地址是否与自己的地址相同:如果相同,DHCP服务器响应DHCPACK报文,并在选项字段中增加了IP地址使用租期选项。,5) 客户机收到DHCPACK报文后,判断DHCP服务器分配给自己的IP地址是否一致,如果是,则表明客户机成功获得IP地址;如果否,则通知DHCP服务器禁用这个IP地址以免引起IP地址冲突,然后客户机从第1步重新开始。 6) 客户机根据IP地址使用租期自动启动续延过程,在使用租期过去的一定时刻处(T1,T2),向DHCP服务器发送DHCPREQUEST报文续延租期,如果成功,则租期相应向前延
23、长;如果没有,则客户机继续使用这个IP地址。使用租期一到,客户机应自动放弃使用这个IP地址,并重新从第1步开始。 7) 客户机在成功获取IP地址后,随时可以释放自己的IP地址,DHCP服务器收到DHCPRELEASE后,会回收相应的IP地址进行重新分配。,返回,10.6 DHCP/BOOTP 中继代理,如果DHCP服务器与客户机分别位于不同的子网上,则用户的路由器必须具备DHCP/BOOTP中继代理(Relay Agent)的功能(RFC1542) 。DHCP中继代理是一个程序,它能够把 DHCP/BOOTP广播信息从一个子网转播到另一个子网上。,如前图 在子网 2 中的客户机 C 从子网 1
24、 中的DHCP服务器上获得 IP 地址租约。 DHCP客户机C在子网2上广播DHCPdiscover消息 。 当中继代理(在本例中是一个具有DHCP/BOOTP中继代理功能的路由器)接收到这个消息后,它检查包含在这个消息报头中的网关IP地址,如果IP地址为 0.0.0.0,则用中继代理或路由器的IP地址替换它,然后将其转发到DHCP服务器所在的子网 1上。 当在子网 1 中的 DHCP服务器收到这个消息后,它开始检查消息中的网关IP地址是否包含在DHCP范围内,从而决定它是否可以提供IP地址租约。 如果DHCP服务器含有多个DHCP范围,消息中的网关IP地址是用来确定从那个DHCP范围中挑选I
25、P地址并提供给客户。,DHCP服务器1将它所提供的IP地址租约 (DHCPOFFER)直接发送到中继代理 。 路由器将这个租约利用广播的形式转发给 DHCP 客户机。注意:如果要配置多台DHCP服务器,最好将它们分别放在不同的子网中,且每个 DHCP 服务器上都应建立独立的地址池,在地址池中应包含各个子网的IP地址。,BOOTP协议是针对网络上无盘结点而设计的引导协议,网络启动时它需要从服务器获得自己的IP地址、文件服务器的IP地址、可运行的引导文件名等信息。一般与文件传输协议配合使用来获取引导文件。 BOOTP/DHCP协议有请求和应答两种报文,被封装在UDP数据报中传输。 动态主机配置协议
26、DHCP是在TCP/IP网络上使客户机获得配置信息的协议,它基于BOOTP协议,并在BOOTP协议的基础上添加了自动(动态)分配可用网络地址等功能。 BOOTP/DHCP客户端的UDP端口号为68,BOOTP/DHCP服务器的UDP端口号为67。 BOOTP是一个静态配置协议,而DHCP是一个动态配置协议。,本章要点,习题: 10-1. 简述BOOTP协议与RARP协议的异同。 10-2. BOOTP协议和DHCP协议报文格式上存在哪些主要区别,为什么? 10-3. DHCP支持哪3种类型的地址分配? 10-4. 简述DHCP服务器的运行机制。 10-5. DHCP/BOOTP中继代理的作用是什么?,