
一、DHCP简介
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种对基于TCP/IP协议主机的网络参数进行动态配置和集中管理的协议,可以实现:
1、为网络主机分配IP地址。
DHCP可以提供两种地址分配机制,网络管理员可以根据网络需求为不同的主机选择不同的分配策略。
动态分配机制:
通过DHCP为主机分配一个有使用期限(这个使用期限通常叫做租期)的IP地址。这种分配机制适用于主机需要临时接入网络或者空闲地址数小于网络主机总数且主机不需要永久连接网络的场景。例如,企业出差员工的便携机、咖啡厅的移动终端为了临时接入网络需要获取IP地址。
静态分配机制:
网络管理员通过DHCP为指定的主机分配固定的IP地址。这种分配机制适用于对IP地址有特殊要求的主机,例如企业的文件服务器由于需要对外网用户提供服务,需要使用固定的IP地址。相比手工静态配置IP地址,通过DHCP方式静态分配机制避免人工配置发生错误,方便管理员统一维护管理。
2、为网络主机提供除IP地址以外的网络参数。
例如DNS服务器的IP地址、路由信息、网关地址等。
网络中主机需要与外界进行通信时,需要配置自己的IP地址、网关地址、DNS服务器等网络参数信息。手工在每台主机上配置维护成本高,容易出错,而且不利于管理员统一维护。
BOOTP(Bootstrap Protocol)协议提供了动态配置主机网络参数的机制,是一种基于客户端/服务器模型的远程引导协议,可以给无盘工作站或第一次启动的主机提供IP地址、网关地址和DNS服务器等配置信息。
BOOTP协议需要由管理员配置和维护一个BOOTP配置文件,配置文件定义了主机MAC地址与IP地址等对应关系。
在BOOTP协议中,每台主机从服务器中获取配置信息,建立一个永久的网络连接。由于配置信息是静态维护的,一旦主机位置发生变化,需要重新配置。
当网络中可供主机使用的地址数量有限,或者主机需要经常移动(例如移动终端、企业出差员工的便携机)时,BOOTP协议不能满足要求。为了解决这个问题,出现了DHCP协议。DHCP可以实现IP地址重复利用,并且为主机动态分配IP地址等网络参数。
DHCP也是一种基于客户端/服务器模型的协议。DHCP服务器上不需要手工记录网络中所有主机MAC地址和IP地址的对应关系,而是通过地址池管理可供某网段主机使用的IP地址。
当主机成功向DHCP服务器申请到IP地址后,DHCP服务器才会记录主机MAC地址和IP地址的对应关系,且此过程不需要人工参与。同时,DHCP服务器还可以为某个网段内主机动态分配相同的网络参数,例如,缺省网关、DNS服务器的IP地址等。
DHCP可以把同一个地址在不同时间分配给不同的主机,当主机不需要使用地址时,可以释放此地址,供其他主机使用,从而实现了IP地址的重复利用。
DHCP的优点:
1、降低网络接入成本:
静态方式时,需要考虑主机所处的物理位置,人力成本大。采用DHCP方式只需要管理员在服务器上统一配置,降低了网络接入成本。
2、降低主机配置成本:
静态方式时,配置成本大,对配置人员技术要求高。采用DHCP方式只需要保证主机正常上电,无需其他配置,对配置人员技术要求低,降低了主机配置成本。
3、提高IP地址利用率:
静态方式时,主机和IP地址是一一绑定的。采用DHCP方式,当主机退出网络时,其IP地址还可以分给其他主机继续使用,提高了IP地址的利用率。
4、方便统一管理:
静态方式时,如果配置信息发生变化(例如主机网关地址变化),需要在每台主机上修改。采用DHCP方式只需要管理员在服务器上修改,方便统一管理。
二、DHCP报文
1、DHCP报文格式
DHCP报文格式如下图1所示。
图1 DHCP的报文格式
图1中括号里的数字表示字段的长度,单位是字节。
字段 |
长度 |
含义 |
op(op code) |
1字节 |
表示报文的类型,取值为1或2,含义如下:
|
htype(hardware type) |
1字节 |
表示硬件类型,以太网的值为1。 |
hlen (hardware length) |
1字节 |
表示硬件地址长度,以太网的值为6。 |
hops |
1字节 |
表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1。此字段的作用是限制DHCP报文所经过的DHCP中继数目。 注意: 服务器和客户端之间的DHCP中继数目不能超过16个,也就是Hops值不能大于16,否则DHCP报文将被丢弃。 |
xid |
4字节 |
表示DHCP客户端选取的随机数,使DHCP服务器的回复与DHCP客户端的报文相关联。 |
secs (seconds) |
2字节 |
表示客户端从开始获取地址或地址续租更新后所用的时间,单位是秒。 |
flags |
2字节 |
表示标志字段。只有标志字段的最高位才有意义,其余的15位均被置为0。最高位被解释为单播或者广播响应标志位,内容如下所示:
|
ciaddr (client ip address) |
4字节 |
表示客户端的IP地址。可以是服务器分配给客户端的IP地址或者客户端已有的IP地址。客户端在初始化状态时没有IP地址,此字段为0.0.0.0。 IP地址0.0.0.0仅在采用DHCP方式的系统启动时允许本主机利用它进行临时的通信,不是有效目的地址。 |
yiaddr (your client ip address) |
4字节 |
表示服务器分配给客户端的IP地址。当服务器进行DHCP响应时,将分配给客户端的IP地址填入此字段。 |
siaddr (server ip address) |
4字节 |
DHCP客户端获得启动配置信息的服务器的IP地址。 |
giaddr(gateway ip address) |
4字节 |
表示第一个DHCP中继的IP地址。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网段,那么第一个DHCP中继在将DHCP请求报文转发给DHCP服务器时,会把自己的IP地址填入此字段,DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而选择合适的地址池,为客户端分配该网段的IP地址。 服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。 若在到达DHCP服务器前经过了多个DHCP中继,该字段作为客户端所在的网段的标记,填充了第一个DHCP中继的IP地址后不会再变更,只是每经过一个DHCP中继,hops字段的数值会加1。 |
chaddr(client hardware address) |
16字节 |
表示客户端的MAC地址,此字段与前面的“hardware type”和“hardware length”保持一致。当客户端发出DHCP请求时,将自己的硬件地址填入此字段。对于以太网,当“hardware type”和“hardware length”分别为“1”和“6”时,此字段必须填入6字节的以太网MAC地址。 |
sname(server host name) |
64字节 |
表示客户端获取配置信息的服务器名字。此字段由DHCP服务器填写,是可选的。如果填写,必须是一个以0结尾的字符串。 |
file(file name) |
128字节 |
表示客户端需要获取的启动配置文件名。此字段由DHCP服务器填写,随着DHCP地址分配的同时下发至客户端。本字段是可选的,如果填写,必须是一个以0结尾的字符串。 |
options |
可变 |
表示DHCP的选项字段,最多为312字节。DHCP通过此字段包含了DHCP报文类型,服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。 对Options字段的详细解释请参见后面“DHCP Options字段选项”。 |
2、DHCP报文类型
目前DHCP定义了如下八种类型报文,DHCP服务器和客户端之间通过这八种类型的报文进行通信。
报文名称 |
说明 |
DHCP DISCOVER |
DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器。 |
DHCP OFFER |
DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。 |
DHCP REQUEST |
此报文用于以下三种用途。
|
DHCP ACK |
服务器对客户端的DHCP REQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息。 |
DHCP NAK |
服务器对客户端的DHCP REQUEST报文的拒绝响应报文,例如DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,则发送DHCP NAK报文作为应答,告知DHCP客户端无法分配合适IP地址。 |
DHCP DECLINE |
当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。 |
DHCP RELEASE |
客户端可通过发送此报文主动释放服务器分配给它的IP地址,当服务器收到此报文后,可将这个IP地址分配给其它的客户端。 |
DHCP INFORM |
DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求报文。 |
3、DHCP Options字段选项
DHCP报文中的Options字段可以用来存放普通协议中没有定义的控制信息和参数。如果用户在DHCP服务器端配置了Options字段,DHCP客户端在申请IP地址的时候,会通过服务器端回应的DHCP报文获得Options字段中的配置信息。Options字段的格式如下图1所示。
图1 Options字段的格式
Options字段由Type、Length和Value三部分组成。这三部分的表示含义如下所示:
字段 |
长度 |
含义 |
Type |
1字节 |
该字段表示信息类型。 |
Length |
1字节 |
该字段表示后面信息内容的长度。 |
Value |
其长度为Length字段所指定 |
该字段表示信息内容。 |
DHCP Options选项的取值范围为1~255,如下表2所示,介绍DHCP Options的部分知名选项。
Options号 |
Options作用 |
1 |
设置子网掩码选项。 |
3 |
设置网关地址选项。 |
6 |
设置DNS服务器地址选项。 |
12 |
设置DHCP客户端的主机名选项。 |
15 |
设置域名后缀选项。 |
33 |
设置静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在Option121,则忽略该选项。 |
44 |
设置NetBios服务器选项。 |
46 |
设置NetBios节点类型选项。 |
50 |
设置请求IP地址选项。 |
51 |
设置IP地址租约时间选项。 |
52 |
设置Option附加选项。 |
53 |
设置DHCP消息类型。 |
54 |
设置服务器标识。 |
55 |
设置请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。 |
58 |
设置续约T1时间,一般是租期时间的50%。 |
59 |
设置续约T2时间。一般是租期时间的87.5%。 |
60 |
设置厂商分类信息选项,用于标识DHCP客户端的类型和配置。 |
61 |
设置客户端标识选项。 |
66 |
设置TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名。 |
67 |
设置启动文件名选项,用来指定为客户端分配的启动文件名。 |
77 |
设置用户类型标识。 |
121 |
设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。 |
根据Options选项功能的不同,此字段的作用对象也不同。比如Option77用于DHCP客户端,用于识别用户所属的类型,根据Options字段中所携带的用户类型(User Class),DHCP服务器选择适当的地址池为客户端分配IP地址以及相关配置参数。Option77一般在客户端由用户进行配置,而不必在服务器端配置。
设备作为DHCP客户端支持DHCP服务器通过Option121下发的静态路由。
关于常用的DHCP Options Type的含义和用法,请参见RFC2132。
除了RFC2132中规定的字段选项外,还有部分选项内容没有统一规定,例如Option82。
Option82称为中继代理信息选项,该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option82,并转发给DHCP服务器。
管理员可以从Option82中获得DHCP客户端的位置信息,以便定位DHCP客户端,实现对客户端的安全和计费等控制。支持Option82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略,提供更加灵活的地址分配方案。
Option82最多可以包含255个子选项。若定义了Option82,则至少要定义一个子选项。目前设备只支持两个子选项:sub-option1(Circuit ID,电路ID子选项)和sub-option2(Remote ID,远程ID子选项)。
由于Option82的内容没有统一规定,不同厂商通常根据需要进行填充。



本文地址:http://www.023wg.com/206.html
版权声明:若无注明,本文皆为“Swiers思唯网络博客”原创,转载请保留文章出处。

