目录
- 🕒 1. DHCP概述
- 🕒 2. 工作过程
- 🕒 3. DHCP的报文格式
- 🕒 4. DHCP中继代理
- 🕒 5. 实验:DHCP配置
🕒 1. DHCP概述
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了一种机制,称为即插即用连网(plug-and-play networking)。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手工参与。
DHCP目前是因特网草案标准[RFC 2131,RFC 2132]。
DHCP 使用客户——服务器方式:
需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCP Discover),这时该主机就成为 DHCP 客户。
本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCP Offer)。
🕒 2. 工作过程
- DHCP报文在运输层使用UDP协议封装
- DHCP客户使用的UDP端口号为
68
- DHCP服务器使用的UDP端口号为
67
- DHCP客户使用的UDP端口号为
- DHCP客户在未获取到IP地址时使用地址
0.0.0.0
DHCP主要使用以下报文来实现其功能:
DHCP DISCOVER
:发现报文,DHCP客户端用来寻找DHCP服务器,广播。- 事务ID
- DHCP客户端的MAC地址
DHCP OFFER
:提供报文,DHCP服务器用来响应DHCP Discover报文,单播。- 事务ID
- 配置信息:
- IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)
- 子网掩码
- 地址租期
- 默认网关
- DNS服务器
DHCP REQUEST
:请求报文,DHCP客户端请求配置确认,或者续借租期。广播。- 事务ID
- DHCP客户端的MAC地址
- 接受的租约中的IP地址
- 提供此租约的DHCP服务器端的IP地址
DHCP ACK
:确认报文,DHCP服务器对Request报文的确认响应,单播。DHCP NACK
:否认报文,DHCP服务器对Request报文的确认响应,广播。DHCP RELEASE
:释放报文,DHCP客户端要释放地址时用来通知DHCP服务器,单播。DHCP DECLINE
:谢绝报文,客户端收到DHCP服务器的地址后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文;目的为通知服务器所分配的IP地址不可用,以期获得新的IP地址DHCP INFORM
:请求更多信息报文,向DHCP服务器请求更为详细的配置信息;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文;目前基本不用。
DHCP工作过程可以分为以下阶段:
- 地址自动分配过程
- 发现阶段
- 提供阶段
- 选择阶段
- 确认阶段
- 地址续约过程
- 释放过程
-
DHCP客户机首先进行广播寻找DHCP服务器(
DHCP DISCOVER
),源地址为本机0.0.0.0
,目的地址为广播地址255.255.255.255
-
DHCP服务器收到后,返回
DHCP OFFER
消息,其中包含提供给DHCP客户机的IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)和相关配置信息。源地址为DHCP服务器地址,目的地址为广播地址(因为此时目的客户机还没有IP地址) -
客户机可能会收到多个DHCP提供消息,一般以收到的第一个为准。此时客户机知道DHCP服务器可以给它分配地址,因此发送
DHCP REQUEST
报文来请求分配IP地址,报文的源地址为0.0.0.0
,目的地址为255.255.255.255
-
DHCP收到请求信息后,查看其中事务ID是否相符,若不符则丢弃;符合则从地址池中取得一个IP地址,并通过ARP协议确认此地址未被使用后,将其封装进
DHCP ACK
信息中,报文源地址为DHCP服务器地址,目的地址为广播地址 -
客户机收到DHCP确认信息后,查看其中事务ID是否相符,不符则丢弃;符合则再次使用ARP确认IP地址没有被使用
- 若被占用:给DHCP服务器发送
DHCP DECLINE
报文撤销IP地址租约,并重新发送DHCP DISCOVER
报文; - 若未被占用:可以使用租约中的IP地址与网络中其他主机通信了。
- 若被占用:给DHCP服务器发送
-
当IP地址租约达到
0.5
倍时间时,客户机会再次向DHCP服务器发送请求信息更新租用期。源地址为租用的IP地址,目的地址为DHCP服务器地址。此时DHCP服务器会出现以下三种情况:- 收到请求后,返回确认报文(
DHCP ACK
),其中有新的IP地址租期,重新设置计时器。 - 收到请求后,返回否认报文(
DHCP NACK
),则客户机收到后立刻停止使用IP地址并重新发送DHCP DISCOVER
报文 - 不响应。则在租期达到0.875倍时,DHCP客户必须重新发送
DHCP REQUEST
报文,继续等待DHCP服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP地址,并重新发送DHCP DISCOVER
报文来重新申请IP地址。
- 收到请求后,返回确认报文(
-
客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP服务器发送
DHCP RELEASE
即可。源地址0.0.0.0,目的地址255.255.255.255
🕒 3. DHCP的报文格式
- 操作码字段长度为
8
比特,定义了DHCP报文的类型:请求(1)、提供(2)。 - 硬件类型字段长度为
8
比特,定义了物理网络的类型。为 1 时表示为最常见的以太网 MAC 地址类型。 - 硬件长度字段为
8
比特,定义了以字节为单位的物理地址的长度。 - 跳数字段长度为
8
比特,定义分组可经历的最大跳数。 - 事务标识字段长度为
4
字节,该字段携带了一个整数,用来对回答和请求进行匹配。 - 秒数字段长度为
16
比特,表示DHCP 客户从获取到 IP 地址或者续约过程开始到现在所过去的秒数。 - 标志字段长度为
16
比特,只使用了最左一位,其余位都应当置0
,指明服务器是否强制使用广播应答(而不是单播)(1
广播,0
单播) - 客户IP地址字段长度为
4
字节,包含客户IP地址,在确认报文中才会填入。 - 你的IP地址字段长度为
4
字节,包含客户IP地址。该字段由服务器(在应答报文中)在客户的请求下填入。 - 服务器IP地址字段长度为
4
字节,包含服务器IP地址。 - 网关IP地址字段长度为
4
字节,中继的IP地址。 - 客户硬件地址字段长度为
16
字节,指明客户的物理地址。 - 服务器名字段长度为
64
字节,指明服务器的名字。 - 引导文件名字段长度为
128
字节,由服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。 - 选项字段长度可变,可以携带附加信息(如网络掩码或默认路由器地址)和携带某些厂商特定的信息,该字段只用在应答报文中。
选项由三个字段组成:
- 标记字段
- 长度字段
- 值字段
标记 | 长度符 | 值 | 说明 |
---|---|---|---|
0 | 填充 | ||
1 | 4 | 子网掩码 | 子网掩码 |
3 | 可变 | IP地址 | 默认路由器 |
6 | 可变 | IP地址 | DNS服务器 |
12 | 可变 | DNS名 | 主机名 |
13 | 2 | 整数 | 引导文件大小 |
53 | 1 | 稍后讨论 | 用于动态配置 |
128~254 | 可变 | 特定信息 | 厂商相关 |
255 | 列表结束 |
🕒 4. DHCP中继代理
在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与DHCP服务器的桥梁。
🕒 5. 实验:DHCP配置
设备名 | 端口 | ip地址 | 掩码 |
---|---|---|---|
R1 | f0/0 | 192.168.1.1 | 255.255.255.0 |
f0/1 | 192.168.2.1 | 255.255.255.0 | |
PC1 | E0 | DHCP获取 | DHCP获取 |
PC2 | E0 | DHCP获取 | DHCP获取 |
实验步骤:
一、基本配置
R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#int f0/1
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#no shut
二、在R1上配置DHCP–192.168.1.0网段
(1)建立DHCP地址池
R1(config)#ip dhcp pool ttoken1
(2)设置DHCP地址池的网络地址和掩码
R1(dhcp-config)#network 192.168.1.0 255.255.255.0
(3)设置客户端默认网关
R1(dhcp-config)#default-router 192.168.1.1
(4)设置域名服务器
R1(dhcp-config)#dns-server 192.168.1.100
三、在R1上配置DHCP–192.168.2.0网段
(1)建立DHCP地址池
R1(config)#ip dhcp pool ttoken2
(2)设置DHCP地址池的网络地址和掩码
R1(dhcp-config)#network 192.168.2.0 255.255.255.0
(3)设置客户端默认网关
R1(dhcp-config)#default-router 192.168.2.1
(4)设置域名服务器
R1(dhcp-config)#dns-server 192.168.2.100
四、在R1和SW1、R1和SW2的链路上开启抓包
五、在PC1和PC2配置DHCP
PC-1> ip dhcp
DDORA IP 192.168.1.2/24 GW 192.168.1.1
PC-2> ip dhcp
DDORA IP 192.168.2.2/24 GW 192.168.2.1
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页