动态主机配置协议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)。
68
67
0.0.0.0
DHCP主要使用以下报文来实现其功能:
DHCP DISCOVER
:发现报文,DHCP客户端用来寻找DHCP服务器,广播。
DHCP OFFER
:提供报文,DHCP服务器用来响应DHCP Discover报文,单播。
DHCP REQUEST
:请求报文,DHCP客户端请求配置确认,或者续借租期。广播。
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 DECLINE
报文撤销IP地址租约,并重新发送DHCP DISCOVER
报文;当IP地址租约达到0.5
倍时间时,客户机会再次向DHCP服务器发送请求信息更新租用期。源地址为租用的IP地址,目的地址为DHCP服务器地址。此时DHCP服务器会出现以下三种情况:
DHCP ACK
),其中有新的IP地址租期,重新设置计时器。DHCP NACK
),则客户机收到后立刻停止使用IP地址并重新发送DHCP DISCOVER
报文DHCP REQUEST
报文,继续等待DHCP服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP地址,并重新发送DHCP DISCOVER
报文来重新申请IP地址。客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP服务器发送DHCP RELEASE
即可。源地址0.0.0.0,目的地址255.255.255.255
8
比特,定义了DHCP报文的类型:请求(1)、提供(2)。8
比特,定义了物理网络的类型。为 1 时表示为最常见的以太网 MAC 地址类型。8
比特,定义了以字节为单位的物理地址的长度。8
比特,定义分组可经历的最大跳数。4
字节,该字段携带了一个整数,用来对回答和请求进行匹配。16
比特,表示DHCP 客户从获取到 IP 地址或者续约过程开始到现在所过去的秒数。16
比特,只使用了最左一位,其余位都应当置0
,指明服务器是否强制使用广播应答(而不是单播)(1
广播,0
单播)4
字节,包含客户IP地址,在确认报文中才会填入。4
字节,包含客户IP地址。该字段由服务器(在应答报文中)在客户的请求下填入。4
字节,包含服务器IP地址。4
字节,中继的IP地址。16
字节,指明客户的物理地址。64
字节,指明服务器的名字。128
字节,由服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。选项由三个字段组成:
标记 | 长度符 | 值 | 说明 |
---|---|---|---|
0 | 填充 | ||
1 | 4 | 子网掩码 | 子网掩码 |
3 | 可变 | IP地址 | 默认路由器 |
6 | 可变 | IP地址 | DNS服务器 |
12 | 可变 | DNS名 | 主机名 |
13 | 2 | 整数 | 引导文件大小 |
53 | 1 | 稍后讨论 | 用于动态配置 |
128~254 | 可变 | 特定信息 | 厂商相关 |
255 | 列表结束 |
在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与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
博客链接: 作者博客主页