DHCP原理

  DHCP动态主机配置协议是一个局域网的网络协议,使用UDP协议工作。

 

  主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

 

  DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client。

 

  DHCP具有以下功能:

1.保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2.DHCP应当可以给用户分配永久固定的IP地址。
3.DHCP应当可以同用其他方法获得IP地址的 主机共存(如手工配置IP地址的主机)
4.DHCP 服务器应当向现有的BOOTP 客户端提供服务。
 
 
    DHCP有三种机制分配IP地址:
1) 自动分配(Automatic Allocation),DHCP给客户端分配永久性的IP地址;
2) 动态分配(Dynamic Allocation), DHCP给客户端分配过一段时间会过期的IP地址(或者客户端可以主动释放该地址);
3) 手工配置(Manual Allocation),由网络管理员给客户端指定IP地址。管理员可以通过DHCP将指定的IP地址发给客户端。
 
 
DHCP封包格式
 
DHCP原理

OP:
若是 client 送给 server 的 封包,设为 1 ,反向为 2。HTYPE
硬件 类别,Ethernet 为 1。
HLEN:
硬件地址长度, Ethernet 为 6。
HOPS:
若 封包需经过 router 传送,每站加 1 ,若在同一网内,为 0。
TRANSACTION ID:
DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS:
Client 端启动时间(秒)。
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。
chaddr:
Client 之硬件地址。
sname:
Server 之名称字符串,以 0x00 结尾。
file:
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
options:
允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息 代码,其后一个 byte 为该项数据长度,最后为项目内容。CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP 封包可利用编码为 0x53 之选项来设定封包 类别:
项值 类别:
1 DHCP DISCOVER
2 DHCP OFFER
3 DHCP REQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNACK
7 DHCPRELEASE
DHCP 的选项非常多,有空请查阅 RFC 或相关文献,并好好理解,这里不再叙述了。
 
 
DHCP工作原理
 
DHCP工作的基本流程如又图所示:
DHCP请求IP地址的过程如下:
1) 主机发送DHCPDISCOVER广播包在网络上寻找DHCP服务器;
2) DHCP服务器向主机发送DHCPOFFER单播数据包,包含IP地址、MAC地址、域名信息以及地址租期;
3) 主机发送DHCPREQUEST广播包,正式向服务器请求分配已提供的IP地址;
4) DHCP服务器向主机发送DHCPACK单播包,确认主机的请求
需要说明的是:DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定 [1]   的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求。
正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址。
如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息。
在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户 端,让客户端重新发起地址请求过程。
 


1. 客户机如何取得一个地址
以下各步说明了一台客户机获得地址的基本方法:
1)  客户机通过 D h c p D i s c o v e r广播提出请求。如果客户机有一个永久性的租用地址,它可
以直接请求那个地址。
2)  服务器一旦收到 I P 请求,会从地址池中取出一个地址并返回一个附有可用 I P 地址的
D h c p O ff e r报文。
3)  如果客户机收到多个 I P,它会选择第一个或其所请求的那一个。
4)  客户机广播标识服务器的 D h c p R e q u e s t报文并等待。
5)  每一个服务器检查报文,若发现不是它的标识,它会丢弃报文。当被标识的服务器接收了报文后,它会发回一个 D h c p A c k报文,如果所请求的 I P 被分配也就是说租用已中止,会
发回D h c p N a k报文。
6)  如果客户机收到D h c p A c k报文,它可以开始使用I P地址。如果它收到D h c p N a k,它会重
新开始整个过程。假如 I P有问题,客户机会发送一个 D h c p D e c l i n e报文给服务器并重新开始。
注意 一个永久性地址和一台机器永久地结合在一起。 实际上, 没有这样的永久性地址,
因为一段时间之后所有的租用必须中止。但是一个永久性的租用可以在一段时间内连
续使用几个月,每当机器和网络相连接请求IP地址时要重置时钟。

2. 中继代理如何工作
中继代理能中继服务器和客户机之间的报文。这样可以使服务器能处理没有服务器的子
网。这意味着不必为每一个子网设置一个服务器,为每一个子网设置一个服务器开销很大,
以下几步说明了中继代理如何工作:
1) DHCP 客户机广播一个消息。
2) 中继代理把收到报文的接口对应的IP地址放到消息的giaddr域中,然后单目广播至服务器。
3) 服务器给中继代理返回应答(通过单目广播)。应答包括与客户机所请求相同的g i a d d r域。
4) 中继代理会从g i a d d r域中I P 地址对应的接口中广播应答。


管理地址池
一个地址池,也称为一个地址范围,是 D H C P客户机可用的一类地址范围。理解地址池需
要一点地址类型和 I P 如何工作的知识。
有效的I P地址类是:
0 . 0 . 0 . 0
2 5 5 . 0 . 0 . 0
2 5 5 . 2 5 5 . 0 . 0
2 5 5 . 2 5 5 . 2 5 5 . 0
2 5 5 . 2 5 5 . 2 5 5 . 2 5 5
在每一类中是一个可用的 I P地址范围。一个典型 I P地址是2 0 4 . 7 6 . 1 5 0 . 2 0。虽然现在这并不
意味着太多东西,但过一会儿读者会明白。
注意 有一些保留的地址。0 . 0 . 0 . 0用作缺省路由,1 2 7 . 0 . 0 . 0是loopback IP地址用于测试
和其他局部操作。比如,从自己的机器上发送邮件至本机的邮件服务器上。还有一些
范围为私有网络保留,它们是1 6 9 . 0 . 0 . 0和1 9 2 . 0 . 0 . 0,读者在I n t e r n e t上不会找到这些I P地
址范围。如果读者发现了这些地址说明出了问题。


下面介绍类型如何工作。 A类地址占用1 2 6个网络。因为 I P 地址的每一段用一个 8位位组表
示,一个8位位组是一个8位数。所有的模糊想法可用下式表示清楚:
2
7
- 2 = 1 2 6
这是因为每个 I P地址的最高位( 最左位)置为0,则只剩下7位,能从剩下的 2 4位中得到最大
主机数:
2
2 4
-2=16 777 214
用户能够得到 1 6 0 0多万个主机地址,但限制为 1 2 6个网络。减 2是因为 0 . 0 . 0 . 0和1 2 7 . 0 . 0 . 0
用于保留。在顶级看起来地址空间不是很大。下面是 B类地址。
两个8位是1 6位,除去最左两位:
2
1 4
=16 384
给出16 000多个网络,和A相比并不坏。因为 B类地址的最左两位设为 1和0,所以得到 2
1 4

下式指出B类网络支持的主机数:
2
1 6
-2=65 534
失去了大量主机但却得到了大量的网络数。下面看一下 C类地址, C类地址占用 3 / 4的位数
表示网络,因此有 2 4位表示网络,C类网络数 :
2
2 1
=2 097 152
可以得到相当多的网络。和其他类差不多,最高三位设为 1、1、0,只剩下 2 1位。主机数
为:
2
8
- 2 = 2 5 4
主机数不多。所有这些能告诉读者有多少 I P 地址吗?很简单。下面解释了公式代表的含
义。
A类地址给出 2
3 1
个I P,即2 147 483 648
B类地址给出 2
3 0
个I P,即1 073 741 824
C类地址给出 2
2 9
个I P,即536 870 912
总共是4 294 967 296个I P地址。用户能使用的 I P:
• A 类—1 . x x x . x x x . x x x到1 2 6 . x x x . x x x . x x x
• B 类—1 2 8 . 0 . x x x . x x x到1 9 1 . 2 5 5 . x x x . x x x
• C 类—1 9 2 . 0 . 0 . x x x到2 2 3 . 2 5 5 . 2 5 5 . x x x
x表示0到2 5 5中的任何数字。
这种方式会造成分配浪费,极大地减少了可用的 I P
地址。因此,产生了子网。图 8 - 1显示了子网如何工作。
把主机号分成两部分使用新的子网号作为内部网标
识,使没和I n t e r n e t直接相连的一组计算机共享 I P,所以
一个具有 I P 地址2 0 9 . 1 8 8 . 0 . 0的路由器可以驻留 I P地址为
2 0 9 . 1 8 8 . 1 . 0、2 0 9 . 1 8 8 . 2 . 0、2 0 9 . 1 8 8 . 3 . 0的主机。路由器
处理所有的内部路由,所以一个 C类地址可以覆盖任何
人。
 
在Windows主机上部署DHCP服务
 
 
在网络设备上配置DHCP

你可能感兴趣的:(DHCP原理)