DHCP协议

功能概述

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中
主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动
当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置
在这里插入图片描述

DHCP具有以下功能

  1. 保证任何IP地址在同一时刻只能有一台DHCP客户机所使用
  2. DHCP应当可以给用户分配永久固定的IP地址
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
  4. DHCP服务器应当向现有的BOOTP客户端提供服务

DHCP有三种分配IP地址机制
在这里插入图片描述

  1. 自动分配方式(Automatic Allocation) DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址
  2. 动态分配方式(Dynamic Allocation) DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用
  3. 手工分配方式(Manual Allocation) 客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机

三种地址分配方式中,只有动态分配方式可以重复使用客户端不再需要的地址

DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述

封包格式

DHCP封包在传输层(Transport Layer)是采用UDP协议,而当 Client传送封包给 Server时,采用的是UDP 67 Port,从 Server传送给 Client则是使用UDP 68 Port
在这里插入图片描述

各字段定义如下:

字段含义
OP若是 client 送给 server 的封包,设为 1 ,反向则为 2
HTYPE硬件类别,Ethernet 为 1
HLEN硬件地址长度, Ethernet 为 6
HOPS若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0
TRANSACTION IDDHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据
SECONDSClient 端启动时间(秒)
FLAGS从 0 到 15 共 16 bits ,当 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用
ciaddr要是 client 端想继续使用之前取得的IP 地址,则列于这里
yiaddr从 server 送回 client 的 DHCP OFFER 与 DHCPACK封包中,此栏填写分配给 client 的 IP 地址
siaddr若 client 需要透过网络开机,从 server 送出的 DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在 server 的地址
giaddr若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0
chaddrClient 的硬件地址
snameServer 的名称字符串,以 0x00 结尾
file若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送

工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口
在这里插入图片描述

  • 1、DHCP Client以广播的方式发出DHCP Discover报文
  • 2、所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文
  • 3、DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文,DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址
  • 4、DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息
  • 5、DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
  • 6、DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配

在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址

在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程

需要说明的是:DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求

正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址

如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息

在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户 端,让客户端重新发起地址请求过程

DHCP设备

由于DHCP是C/S模式运行的,所以使用DHCP的设备为客户端,而提供DHCP服务的为服务端。DHCP客户端可以让设备自动地从DHCP服务器获得IP地址以及其他配置参数

使用DHCP客户端可以带来如下好处:

  • (1)降低了配置和部署设备时间
  • (2)降低了发生配置错误的可能性
  • (3)可以集中化管理设备的IP地址分配
    DHCP服务器指的是由
    服务器控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码

需要注意的是,DHCP也可以用在不同的子网上,这时候需要使用称为DHCP中继代理( DHCP Relay, DHCPR,也叫DHCP中继)的设备。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容

而DHCP中继代理接收到DHICP消息后,重新生成一个DHCP消息,然后转发出去

有了DHCP中继,可以实现DHCP的跨网运作。由于 DHCP DISCOVER是以广播方式进行的,其情形只能在同一网络之内进行,因为路由器是不会将广播传送出去的。但如果DHCP服务器架设在其他的网络上面,可以用DHCP中继来接管客户的DHCP请求,然后将此请求传递给真正的DHCP服务器,然后将服务器的回复传给客户。这里,DHCP中继主机必须自己具有路由能力,且能将双方的数据报互传对方。如果不使用中继,也可以在每一个网络中安装DHCP服务器,但这样的话,一来设备成本会增加,而且管理上面也比较分散。当然,如果在大型的网络中,这样的均衡式架构还是可取的

DHCP服务

安装DHCP服务

在Windows Server系统中默认没有安装DHCP服务,因此需要安装DHCP服务
在这里插入图片描述

  • 第1步:单击“开始”按钮,在“控制面板”中双击“添加或删除程序”图标,在打开的窗口左侧单击“添加/删除Windows组件”按钮,打开“Windows组件向导”对话框
  • 第2步:在“组件”列表中找到并勾选“网络服务”复选框,然后单击“详细信息”按钮,打开“网络服务”对话框。接着在“网络服务的子组件”列表中勾选“动态主机配置协议(DHCP)”复选框,依次单击“确定→下一步”按钮开始配置和安装DHCP服务。最后单击“完成”按钮完成安装

提示:如果是在Active Directory(活动目录)域中部署DHCP服务器,还需要进行授权才能使DHCP服务器生效。本例的网络基于工作组管理模式,因此无需进行授权操作即可进行创建IP作用域的操作

DHCP服务器

并不是安装了DHCP功能后就能直接使用,还必须进行授权操作,未经授权操作的服务器无法提供DHCP服务
在这里插入图片描述

对DHCP服务器授权操作的过程如下:

  1. 依次点击“开始→程序→管理工具→DHCP”,打开DHCP控制台窗口
  2. 在控制台窗口中,用鼠标左键点击选中服务器名,然后单击右键,在快捷菜单中选中“授权”,此时需要几分钟的等待时间。注意:如果系统长时间没有反应,可以按F5键或选择菜单工具中的“操作”下的“刷新”进行屏幕刷新,或先关闭DHCP控制台,在服务器名上用鼠标右键点击。如果快捷菜单中的“授权”已经变为“撤消授权”,则表示对DHCP服务器授权成功。此时,最明显的标记是服务器名前面红色向上的箭头变成了绿色向下的箭头。这样,这台被授权的DHCP服务器就有分配IP的权利了

IP作用域

要想为同一子网内的所有客户端电脑自动分配IP地址,首先要做就是创建一个IP作用域,这也是事先确定一段IP地址作为IP作用域的原因
在这里插入图片描述

  • 第1步:依次单击“开始→管理工具→DHCP”,打开“DHCP”控制台窗口。在左窗格中右击DHCP服务器名称,执行“新建作用域”命令
  • 第2步:在打开的“新建作用域向导”对话框中单击“下一步”按钮,打开“作用域名”向导页。在“名称”框中为该作用域键入一个名称(如“CCE”)和一段描述性信息,单击“下一步”按钮

小提示:这里的作用域名称只起到一个标识的作用,基本上没有实际应用

  • 第3步:打开“IP地址范围”向导页,分别在“起始IP地址”和“结束IP地址”编辑框中键入事先确定的IP地址范围(本例为“10.115.223.2~10.115.223.254”)。接着需要定义子网掩码,以确定IP地址中用于“网络/子网ID”的位数。由于本例网络环境为城域网内的一个子网,因此根据实际情况将“长度”微调框的值调整为“23”,单击“下一步”按钮
  • 第4步:在打开的“添加排除”向导页中可以指定排除的IP地址或IP地址范围。由于已经使用了几个IP地址作为其它服务器的静态IP地址,因此需要将它们排除。在“起始IP地址”编辑框中键入排除的IP地址并单击“添加”按钮。重复操作即可,接着单击“下一步”按钮
  • 第5步:在打开的“租约期限”向导页中,默认将客户端获取的IP地址使用期限限制为8天。如果没有特殊要求保持默认值不变,单击“下一步”按钮
  • 第6步:打开“配置DHCP选项”向导页,保持选中“是,我想现在配置这些选项”单选框并单击“下一步”按钮。在打开的“路由器(默认网关)”向导页中根据实际情况键入网关地址(本例为“10.115.223.254”)并依次单击“添加→下一步”按钮
  • 第7步:在打开的“域名称和DNS服务器”向导页中没有做任何设置,这是因为网络中没有安装DNS服务器且尚未升级成域管理模式.依次单击“下一步”按钮,跳过“WINS服务器”向导页打开“激活作用域”向导页。保持“是,我想现在激活此作用域”单选框选中状态,并依次单击“下一步”→“完成”按钮结束配置

设置DHCP客户端:安装了DHCP服务并创建了IP作用域后, 要想使用DHCP方式为客户端电脑分配IP地址,除了网络中有一台DHCP服务器外,还要求客户端电脑应该具备自动向DHCP服务器获取IP地址的能力,这些客户端电脑就被称作DHCP客户端。

因此我们对一台运行Windows XP的客户端电脑面前进行了如下设置:在桌面上右击“网上邻居”图标,执行“属性”命令。在打开的“网络连接”窗口中右击“本地连接”图标并执行“属性”,打开“本地连接 属性”对话框。然后双击“Internet协议(TCP/IP)”选项,点选“自动获得IP地址”单选框,并依次单击“确定”按钮

提示:默认情况下端电脑使用的都是自动获取IP地址的方式,一般无需进行修改,只需检查一下就行了

至此,DHCP服务器端和客户端已经全部设置完成了。在DHCP服务器正常运行的情况下,首次开机的客户端会自动获取一个IP地址并拥有八天的使用期限

创建用户

创建新用户或供应商选项类启动 DHCP 管理器。单击控制台树中的适用的 DHCP服务器分支。右击在的服务器,然后单击创建新的用户类的”定义用户类“,或者单击“定义供应商类"创建一个新的供应商类。单击"添加"。在"新的类"的对话框键入一个描述性的标识名称,为新的选项,在"显示名称"框。还可能会将其他信息添加到"说明"框。键入数据以匹配的类 ID 由ID或ASCII下的 DHCP客户端提供 DHCP服务器服务使用。若要为十六进制字节数字值输入数据,请单击文本框的左侧。若要输入信息交换 (ASCII)文本字符值为美国标准码数据,单击文本框的右侧。单击"确定",然后单击"关闭"。使用新的类 ID 配置 DHCP 作用域在 DHCP 管理器,双击相应的 DHCP 作用域。右键单击"作用域选项",然后单击"配置选项"。单击"高级",单击以选中复选框或要使用新的供应商或用户类在功能旁边的框。单击"确定"。为客户端计算机设置指定的 DHCP 类 ID 字符串连接到基于 Windows 2000 的 DHCP服务器的客户端计算机使用下面的命令可以设置指定的 DHCP类别ID 字符串:ipconfig / setclassid adapter_name class_id

例如配置名为"Local Area Connection"的适配器名为"myuserclass 用户类 ID,请在命令提示符下键入 ipconfig / setclassid本地连接myuserclass ,然后按 ENTER 键

它标识"Local Area Connection"接口接收为"myuserclass"DHCP服务器上配置的 DHCP 选项

注意:ASCII 中的类 ID 是区分大小写,并必须的匹配在编辑类对话框中输入标识数据的类来创建新的用户或供应商选项类

相关介绍

DHCP服务器

DHCP服务器是一种动态分配主机IP的协议,在局域网的管理中主要作用是为其他计算机分配动态、静态的地址,避免因自行设定IP地址而引起的地址冲突

DHCP中继代理

在这里插入图片描述

DHCPRelay(DHCPR)DHCP中继 也叫做DHCP中继代理。DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去

在DHCP客户端看来,DHCP中继代理就像DHCP服务器;在DHCP服务器看来,DHCP中继代理就像DHCP客户端

【参考资料-百度百科DHCP协议】


版权声明:本文为weixin_45139342原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。