DHCP协议发展历史简述
BOOTP(Bootstrap Protocol)协议简介
- BOOTP (Bootstrap Protocol)称为引导程序协议
- 它是一个基于IP/UDP协议的远程引导协议
- 它可以让无盘站从一个中心服务器上获得IP地址,网关地址等
- 需要由管理员配置和维护一个BOOTP配置文件,该文件定义了主机AMC地址与IP地址等对应关系
- 引导操作的两阶段:
分配地址和选择引导文件
文件传送启动镜像文件
BOOTP(Bootstrap Protocol)协议要点
- 使用了一个单独的包交换信息,使用超时机制直到收到应答。
- 一个‘opcode’字段包含两个值:‘引导请求’和‘引导应答’
- 请求可以包含客户端指定的相应服务器的名称。
- 请求可以包含‘通用’引导文件名,但是服务器发送引导应答时,它使用对应的引导文件的确切的路径名称来取代这个字段。
- 客户端不知道IP地址的情况下,服务器必须有一个硬件地址和IP地址对应的数据库。
- 如果一个物理网络中没有直接可用的TFTP服务器,BOOTP运行客户端通过使用相邻的网关的服务器上引导
BOOTP(Bootstrap Protocol)工作流程
启动BOOTP客户端
客户端使用广播IP请求
服务器会根据请求中提供的MAC地址回应BOOTP客户端,携带IP地址、服务器IP地址、网关等信息
客户端根据回应获得自己的IP地址等信息
通过专用服务器(如TFTP)下载镜像启动文件,模拟成磁盘来完成启动
BOOTP的优缺点
优点:
能够集中配置若干客户;
能过跨越路由器连接的子网或网络;
提供了一种安全措施,只有具有有效地
MAC地址的客户才能分配到一个IP地址。
缺点:
每台主机从服务器获取配置信息,建立一个永久的网络连接。一旦主机位置变化,需要重新配置
存在一定的资源浪费
可供主机使用的地址数量有限
对移动性主机不能满足需求
DHCP协议产生的背景
- 网络中的主机数量不断增加,手动管理困难
- 主机具有移动性,人工配置麻烦
- IP资源紧张,固定IP造成资源浪费
DHCP协议的发展
DHCP常用的名称解释
DHCP实现原理
DHCP结构和地址分配机制
Server/Client结构
——Server: 分配网络地址和信息
——Client: 请求IP和初始化参数
3种地址分配机制:
——自动分配:分配永久的IP地址
(运用于大型服务器)
——动态分配:分配的IP地址带有租约时间
(临时接入网络或者空闲地址数小于主机总数)
——手工分配:地址绑定到MAC上
(运用于公网服务器)
DHCP的报文结构
DHCP的报文格式
各字段含义
Server端对ciaddr和giaddr字段的处理
-
Ciaddr, Client IP Address
只有Client是BOUND、RENEW、REBINDING状态,并且能响应ARP
Requests时,才能被填充 -
Giaddr, Relay Agent IP Address 第一个DHCP中继的IP地址
Giaddr!=0,单播回复,目的地址为giaddr
Giaddr0,ciaddr!=0,单播回复,目的地址为ciaddr
Giaddr&&ciaddr0,广播标志位为1,广播回复
Giaddr&&ciaddr==0,广播标志位为0,那么它将以单播的方式进行回复
第一个中继在将DHCP请求报文转发给DHCP服务器时,会把自己的IP地址填入此字段,DHCP服务器会根据此字段来判断出客户端所在网段地址,从而选择合适的地址池,为客户端分配该网段的IP地址
若Client经过了多个DHCP中继,则该字段作为客户端所在网段的标记,填充了第一个DHCP中继的IP地址后不再变更,只是hops的值会加1
DHCP的交互过程
DHCP的交互过程——DISCOVER
DHCP的Discover重传时间
- 不同的操作系统所规定的Discover重传时间不同,按照随机指数补偿算法,选择是基于服务器有足够的时间回复
- 在Windows预设情况下,Discover的等待时间预设为1秒,也是说当客户端将第一个DHCP Discover报文发送出去后,在1秒内没有得到回应的话,就会进行第二次discover广播。若一直得不到回应的情况下,客户端一共会有四次discover广播(包括第一次在内),除了第一次会等待1秒之外,其余三次的等待时间分别是9﹑13﹑16秒。如果都没有得到DHCP服器服务器的回应,客户端则会显示错误信息,宣告discover的失败。之后,基于使用者的选择,系统会继续在5分钟之后再重复一次discover的过程
DHCP的交互过程——OFFER
Server 地址池创建规则
- 一个Server可能创建一个或者多个地址池
- 创建地址池后还需要配置其他必要的参数才是可用的地址池
- Server可以配置网络地址和主机地址
网络地址用于为用户提供动态分配的IP地址
主机地址用于为用户提供管理员静态绑定的IP地址 - 网络地址池又分为全局地址池和接口地址池
全局地址池可以为所有用户提供IP地址分配
接口地址只为本虚接口下直连用户提供IP地址的分配
Server 分配地址和租期选择机制
DHCP的交互过程——REQUEST
Client对参数的选择规则
IF Server已经明确配置了一个默认参数的值
Server在’Option’选项必须包括那个值
IF Server识别的参数定义在主机文档中
Server必须在主机文档的‘Option’选项中给出该参数的值
Else
Server必须提供它所提供的尽可能多的参数,必须忽略它不能提供任意参数。
除非在文档中明确规定外,服务器必须包括每个请求的参数一次
DHCP的交互过程——ACK
DHCP的交互过程——INFORM
DHCP的交互过程——NAK
DHCP的交互过程—DECLINE
DHCP的交互过程——RELEASE
DHCP的交互过程——续约
DHCP的交互过程——REBOOT
DHCP REQUEST产生机制
- “ SELECTING state”–广播报文
‘server identifier’=选中服务器的IP地址,’ciaddr’=0,
‘requested IP address’= 选中的OFFER报文中提供的‘yiaddr’字段值 - “INIT-REBOOT state”(重启)
‘server identifier’=null, ’ciaddr’=0
‘ requested IP address’=客户端先前分配的地址 - “RENEWING state”(1/2T续约)–单播报文
‘server identifier’=null,‘ requested IP address’=null ,
’ciaddr’=客户端的IP地址 - ” REBINDING state”(7/8T续约)—广播报文
‘server identifier’=null,‘ requested IP address’=null ,
’ciaddr’=客户端的IP地址
DHCP状态迁移图
DHCP八种状态介绍
- INIT状态:当用户第一次启动时,广播 discover报文来联系本网络所有的DHCP服务器,并转换到SELECTING状态
- SELECTING状态:用户从收到的多个Offer报文中选择一个(一般为最先到达的响应)并给服务器发送request报文告之,转换到REQUESTING状态
- REQUESTING状态:服务器对request报文发送了ACK进行响应。用户收到确认后转换到BOUND状态
- BOUND状态:用户收到SERVER的确认报文后,将分配的IP地址与网卡绑定,开始使用该IP地址
- RENEWING状态:当租约定时器到期时,用户发送request报文进行续约,然后用户转换到RENEWING状态等待
- REBINDING状态:用户在进行续约时,如果租约到期时还没有收到ACK回应报文,则在本地网络内广播DHCPQUEST报文,并转换到REBINDING状态等待回应
- REBOOT状态:为用户的重启动状态,此时用户直接发送DHCPREQUEST报文,申请上一次使用的IP地址,并等待DHCP
SERVER的回应报文 - HALT状态:停止状态,用户不再需要使用分配的IP地址时,会主动向DHCP SERVER发送DHCP
RELEASE报文,通知SERVER释放被绑定的租约,并转换到停止状态
DHCP Option介绍
今天就写到这儿,下一章接着介绍