DHCP:Dynamic Host Configure Protocol,动态主机配置协议

  1. 在BOOTP(BOOTstrap Protocol)基础上发展而来。
  2. 实现地址的自动分配和集中管理。 分配出去的信息是有租期的。
  3. 采用C/S构架,客户端接入网络后即插即用
  4. 从属于应用层使用UDP工作,2个常用端口为:68(DHCP Server)、67(DHCP Client)。

DHCP报文

类型 备注
DHCP Discover 客户端寻找服务器。
DHCP Offer 服务器对Discover的响应,提供各种网络配置信息。
DHCP Request 1,客户端初始化后,广播发送报文来回应Offer报文。 2,客户端重启后,广播发送确认先前被分配的IP地址等配置信息。 3,当客户端已经和某个IP地址绑定后,单播或广播发送来更新租约。
DHCP ACK 服务器对Request的确认,此时客户端才真正获得了IP地址等配置信息。
DHCP Nak 服务器对Request的拒绝,如:服务器没有找到相应的租约记录。
DHCP Decline 客户端IP地址发生冲突时,通知服务器,并会重新申请地址。
DHCP Release 客户端主动释放IP地址,服务器可将该IP地址分配给其它客户端。
DHCP Inform 客户端想获取更为详细的配置信息(如:网关、DNS服务器)。

DHCP租期更新

定时器 取值
租期更新 总租期的50%
重绑定 总租期的87.5%
到达租期 总租期,缺省为1天,可配置

T1:50%,客户端会自动以单播的方式向服务器发送Request,请求更新租期。
T2:87.5%,客户端会自动以广播的方式向服务器发送Request,请求更新租期。
T3:100%,客户端停止使用此IP地址,重新发送Discover请求新的IP地址。

DHCP Server工作原理

地址分配方式:

  1. 手动配置(由管理员对每台具体的计算机指定一个地址)。
  2. 自动配置(服务器为第一次连接网络的计算机分配一个永久地址)。
  3. 动态配置(在一定的期限内将地址租给计算机,租期结束后客户必须续租或者停用该地址,较为常用)。

需维护两张地址表

  1. 静态租约表:对应一个静态租约存储文件,server运行时从文件中读取静态租约表,由管理员手动维护。
  2. 动态租约表:对应一个周期存储文件,server周期性将租约表存进该文件,在程序开始时将会读取上次存放的租约表。(租约表记录了当前所有分配的租约,包括静态链接的)。

DHCP地址池(Pool):所分配地址的集合

类型 备注
接口地址池 为连接到服务器接口同一网段的客户端分配IP地址。 配置简单,适用于不存在中继的场景。
全局地址池 为连接到服务器所有接口相同或不同网段的客户端分配IP地址。 通常用于服务器与客户端在不同网段,即存在中继的场景。
PS 优先级:接口地址池 > 全局地址池。

DHCP配置

命令 备注
dhcp enable 开启DHCP功能
interface 三层接口
dhcp select interface / global
dhcp server dns-list 地址
dhcp server lease 数字
dhcp server excluded-ip-address 地址
dhcp server static-bind ip-address x.x.x.x mac-address xxxx-xxxx-xxxx
关联接口池/全局地址池
配置接口地址池的DNS服务器地址
配置接口地址池的租期,默认1天
配置接口地址池的排除地址范围
配置静态绑定
ip pool 名称
network 地址
gateway-list 地址
dns-list 地址 lease 数字
excluded-ip-address 地址
创建全局地址池
配置全局地址池的可分配的网段地址
配置全局地址池的网关地址
配置全局地址池的DNS服务器地址
配置全局地址池下的租期,默认1天
配置全局地址池下的排除地址范围
display ip pool [地址池名称 all] 查看地址池的属性
ipconfig /release 释放租期,Windows命令
ipconfig /renew 重新获取,Windows命令

DHCP客户机初始化

1.寻找DHCP Server。

Client触发DHCP后,会先通过UDP 67端口向网络上发出一个DHCP Discover广播(MAC地址和计算机名等信息)。该封包的源地址为0.0.0.0,目的地址为255.255.255.255(源MAC为自己,目的MAC为全F)。

若第一个DHCP Discover未得到回应,则Client会等待时间t后继续最多发出四个DHCP Discover(windows下四次的等待时间t分别为1秒、3秒、9秒、16秒),如果直到第四次广播仍未得到回应(从发出第一个DHCP Discover起29秒后),Client会从B类私有保留地址169.254.0.0/16中随机选用一个,并且每5分钟重新尝试广播一次。

2.提供IP地址租用

当DHCP Server监听到Client发出的DHCP Discover广播后,它会从那些还没有租出去的地址中,选择最前面的空置IP,连同其它TCP/IP设定,通过UDP 68端口响应给客户机一个DHCP OFFER数据包(包中包含IP地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。

由于客户机在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP Server响应的DHCP
OFFER封包则会根据这些资料传递给要求租约的客户。

3.接受IP租约

如果客户机收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCP OFFER(一般是最先到达的那个),并且会向网络发送一个DHCP REQUEST广播数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP Server它将接受哪一台服务器提供的IP地址,所有其他的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。

事实上,并不是所有DHCP客户机都会无条件接受DHCP Server的OFFER,特别是如果这些主机上安装有其它TCP/IP相关的客户机软件。客户机也可以用DHCP REQUEST向服务器提出DHCP选择,这些选择会以不同的号码填写在DHCP Option Field里面。客户机可以保留自己的一些TCP/IP设定。

4.租约确认

当DHCP Server接收到客户机的DHCP REQUEST之后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。

客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。

如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。

文章作者: Administrator
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 曹少卿的Blog
Routing&Switch Routing&Switch
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝