DHCP_百度百科

语音 编辑 锁定 讨论 上传视频

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段 IP 地址范围,客户机登录服务器时就可以自动获得服务器分配的 IP 地址和子网掩码。默认情况下,DHCP 作为 Windows Server 的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。 [1] 

中文名

动态主机配置协议

外文名

Dynamic Host Configuration Protocol

类    型

计算机网络应用层协议

简    称

DHCP

隶    属

Windows Server

操作方法

管理员手动安装

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配 IP 地址,使网络环境中的主机动态的获得 IP 地址、Gateway 地址、DNS 服务器地址等信息,并能够提升地址的使用率。 [2] 

DHCP 协议采用客户端 / 服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP 服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP 具有以下功能: [2] 

  1. 保证任何 IP 地址在同一时刻只能由一台DHCP 客户机所使用。 [2] 

  2. DHCP 应当可以给用户分配永久固定的 IP 地址。 [2] 

  3. DHCP 应当可以同用其他方法获得 IP 地址的主机共存(如手工配置 IP 地址的主机)。 [2] 

  4. DHCP服务器应当向现有的 BOOTP客户端提供服务。 [2] 

DHCP 有三种机制分配 IP 地址: [2] 

相关图片

  1. 自动分配方式(Automatic Allocation),DHCP 服务器为主机指定一个永久性的 IP 地址,一旦 DHCP 客户端第一次成功从 DHCP 服务器端租用到 IP 地址后,就可以永久性的使用该地址。 [2] 

  2. 动态分配方式(Dynamic Allocation),DHCP 服务器给主机指定一个具有时间限制的 IP 地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 [2] 

  3. 手工分配方式(Manual Allocation),客户端的 IP 地址是由网络管理员指定的,DHCP 服务器只是将指定的 IP 地址告诉客户端主机。 [2] 

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

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

DHCP 封包在传输层 ( Transport Layer)是采用 UDP 协议,而当 Client 传送给封包给 Server 时,采用的是 UDP 68 Port,从 Server 传送给 Client 则是使用 UDP 67 Port。 [3] 

DHCP 的封包格式如图 1 所示,各字段定义如下: [3] 

图 1 DHCP 报文格式

OP:

若是 client 送给 server 的封包,设为 1 ,反向为 2。

HTYPE:

硬件类别,Ethernet 为 1。 [3] 

HLEN:

硬件地址长度, Ethernet 为 6。 [3] 

HOPS:

封包需经过 router 传送,每站加 1 ,若在同一网内,为 0。 [3] 

TRANSACTION ID:

DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。 [3] 

SECONDS:

Client 端启动时间(秒)。 [3] 

FLAGS:

从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。 [3] 

ciaddr:

要是 client 端想继续使用之前取得之 IP 地址,则列于这里。 [3] 

yiaddr:

从 server 送回 client 之 DHCP OFFER 与 DHCPACK封包中,此栏填写分配给 client 的 IP 地址。 [3] 

siaddr:

若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在 server 之地址。 [3] 

giaddr:

若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0。 [3] 

chaddr:

Client 之硬件地址。 [3] 

sname:

Server 之名称字符串,以 0x00 结尾。 [3] 

file:

若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。 [3] 

DHCP 协议采用 UDP 作为传输协议,主机发送请求消息到 DHCP 服务器的 67 号端口,DHCP 服务器回应应答消息给主机的 68 号端口。详细的交互过程如图 2。 [4] 

图 2

1、DHCP Client 以广播的方式发出 DHCP Discover 报文。 [4] 

2、所有的 DHCP Server 都能够接收到 DHCP Client 发送的 DHCP Discover 报文,所有的 DHCP Server 都会给出响应,向 DHCP Client 发送一个 DHCP Offer 报文。 [4] 

DHCP Offer 报文中 “Your(Client) IP Address” 字段就是 DHCP Server 能够提供给 DHCP Client 使用的 IP 地址,且 DHCP Server 会将自己的 IP 地址放在 “option” 字段中以便 DHCP Client 区分不同的 DHCP Server。DHCP Server 在发出此报文后会存在一个已分配 IP 地址的纪录。 [4] 

3、DHCP Client 只能处理其中的一个 DHCP Offer 报文,一般的原则是 DHCP Client 处理最先收到的 DHCP Offer 报文。 [4] 

DHCP Client 会发出一个广播的 DHCP Request 报文,在选项字段中会加入选中的 DHCP Server 的 IP 地址和需要的 IP 地址。 [4] 

4、DHCP Server 收到 DHCP Request 报文后,判断选项字段中的 IP 地址是否与自己的地址相同。如果不相同,DHCP Server 不做任何处理只清除相应 IP 地址分配记录;如果相同,DHCP Server 就会向 DHCP Client 响应一个 DHCP ACK 报文,并在选项字段中增加 IP 地址的使用租期信息。 [4] 

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 开始新的地址申请过程。 [4] 

6、DHCP Client 在成功获取 IP 地址后,随时可以通过发送 DHCP Release 报文释放自己的 IP 地址,DHCP Server 收到 DHCP Release 报文后,会回收相应的 IP 地址并重新分配。 [4] 

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

在使用租期超过 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 地址申请过程。 [4] 

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

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

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

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

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

(1) 降低了配置和部署设备时间;

(2) 降低了发生配置错误的可能性;

(3) 可以集中化管理设备的 IP 地址分配。DHCP 服务器指的是由

服务器控制一段 IP 地址范围,客户端登录服务器时就可以自动获得服务器分配的 IP 地址和子网掩码。 [5] 

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

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

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

DHCP 安装 DHCP 服务

在 Windows Server 系统中默认没有安装 DHCP 服务,因此需要安装 DHCP 服务。 [4] 

相关图片

第 1 步:单击 “开始” 按钮,在“控制面板” 中双击 “添加或删除程序”图标,在打开的窗口左侧单击 “添加 / 删除 Windows 组件” 按钮,打开 “Windows 组件向导” 对话框。 [4] 

第 2 步:在 “组件” 列表中找到并勾选“网络服务”复选框,然后单击 “详细信息” 按钮,打开 “网络服务” 对话框。接着在 “网络服务的子组件” 列表中勾选“动态主机配置协议(DHCP)”复选框,依次单击 “确定→下一步” 按钮开始配置和安装 DHCP 服务。最后单击 “完成” 按钮完成安装。 [4] 

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

DHCPDHCP 服务器

并不是安装了 DHCP 功能后就能直接使用,还必须进行授权操作,未经授权操作的服务器无法提供 DHCP 服务。对 DHCP 服务器授权操作的过程如下: [4] 

  1. 依次点击 “开始→程序→管理工具→DHCP”,打开 DHCP 控制台窗口。 [4] 

相关图片

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

DHCPIP 作用域

要想为同一子网内的所有客户端电脑自动分配 IP 地址,首先要做就是创建一个 IP 作用域,这也是事先确定一段 IP 地址作为 IP 作用域的原因。下面开始创建 IP 作用域的操作。 [4] 

第 1 步:依次单击 “开始→管理工具→DHCP”,打开“DHCP” 控制台窗口。在左窗格中右击 DHCP服务器名称,执行 “新建作用域” 命令。 [4] 

第 2 步:在打开的 “新建作用域向导” 对话框中单击 “下一步” 按钮,打开“作用域名”向导页。在 “名称” 框中为该作用域键入一个名称(如 “CCE”)和一段描述性信息,单击“下一步” 按钮。 [4] 

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

第 3 步:打开 “IP 地址范围” 向导页,分别在 “起始 IP 地址” 和“结束 IP 地址”编辑框中键入事先确定的 IP 地址范围(本例为“10.115.223.2~10.115.223.254”)。接着需要定义子网掩码,以确定 IP 地址中用于 “网络 / 子网 ID” 的位数。由于本例网络环境为城域网内的一个子网,因此根据实际情况将 “长度” 微调框的值调整为 “23”,单击“下一步” 按钮。 [4] 

第 4 步:在打开的 “添加排除” 向导页中可以指定排除的 IP 地址或 IP 地址范围。由于已经使用了几个 IP 地址作为其它服务器静态 IP 地址,因此需要将它们排除。在 “起始 IP 地址” 编辑框中键入排除的 IP 地址并单击 “添加” 按钮。重复操作即可,接着单击 “下一步” 按钮。 [4] 

第 5 步:在打开的 “租约期限” 向导页中,默认将客户端获取的 IP 地址使用期限限制为 8 天。如果没有特殊要求保持默认值不变,单击 “下一步” 按钮。 [4] 

第 6 步:打开 “配置 DHCP 选项” 向导页,保持选中“是,我想现在配置这些选项”单选框并单击 “下一步” 按钮。在打开的“路由器默认网关)”向导页中根据实际情况键入网关地址(本例为 “10.115.223.254”)并依次单击“添加→下一步” 按钮。 [4] 

第 7 步:在打开的 “域名称和DNS 服务器”向导页中没有做任何设置,这是因为网络中没有安装 DNS 服务器且尚未升级成域管理模式. 依次单击 “下一步” 按钮,跳过 “WINS 服务器” 向导页打开 “激活作用域” 向导页。保持“是,我想现在激活此作用域”单选框选中状态,并依次单击 “下一步”→“完成” 按钮结束配置。 [4] 

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

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

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

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

DHCP 创建用户

创建新用户或供应商选项类启动 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。 [5] 

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

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

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

DHCPDHCP 服务器

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

DHCPDHCP 中继代理

相关图片

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

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

参考资料

    1.    王灵霞,刘永纯编.网络管理与运维实战宝典:中国铁道出版社,2016.07:第 220 页
    1.    鲁凌云编著. 计算机网络基础应用教程. 北京市:清华大学出版社, 2012.03.
    1.    施威铭研究室著.Internet 协议概念与实践:清华大学出版社,2001 年 10 月第 1 版:第 296 页
    1.    顾润龙,刘智涛,侯玉香主编.LINUX 操作系统及应用技术:航空工业出版社,2016.08:第 170 页
    1.    徐劲松主编.计算机网络应用技术:北京电子大学出版社,2015.01:第 112 页
    1.    杨佩璐编著.dos/bios 高手真经:中国铁道出版社,2014.10:第 221 页
    1.    李锡泽,何伟,岳昴主编.网络构建与管理:武汉大学出版社,2015.04:第 169 页
      https://baike.baidu.com/item/DHCP/218195?fr=aladdin
2022-04-06
0 0