一、DHCP协议概述
1、DHCP
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。该协议为网络中计算机自动分配TCP/IP参数(IP地址、子网掩码、网关、DNS等)
DHCP 协议是基于UDP层之上的应用
2、DHCP分配方式
- 自动分配:分配到一个IP地址后永久使用(固定配置)
- 动态分配:使用完后释放该IP,供其它客户机使用
- 手动分配:由DHCP服务器管理员专门指定IP地址(在服务器上进行IP/MAC绑定)
3、DHCP服务的好处
1、减少管理员的工作量
2、方便客户端的配置
3、提高了IP地址的利用率
4、当网络更改IP地址段时,不需要再重新配置每个用户的IP地址
5、避免护地址冲突
6、避免输入错误的可能
二、DHCP交互过程
DHCP使用客户服务器方式。需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文(DHCPDISCOVER)(将目的IP地址置为全1,即255.255.255.255),这时该主机就成为DHCP客户。
发送广播报文是因为现在还不知道DHCP服务器在什么地方,因此要发现(DISCOVER)DHCP服务器的IP地址
由于这台主机目前还没有自己的IP地址,因此它将IP数据报的源IP地址设为全0。这样,在本地网络上的所有主机都能够收到这个广播报文,但只有 DHCP 服务器才对此广播报文进行回答。
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文(DHCPOFFER),表示“提供”了IP 地址等配置信息。
DHCP的详细工作过程如图所示。DHCP客户使用的 UDP 端口是68,而DHCP服务器使用的 UDP 端口是 67。这两个 UDP 端口都是熟知端口。
1、DHCP服务器被动打开UDP端口67,等待客户端发来的报文
2、DHCP客户从UDP端口68发送DHCP发现报文
3、凡收到DHCP发现报文的DHCP服务器都发出DHCP提供报文,因此DHCP客户可能收到多个
DHCP提供报文
4、DHCP客户从几个DHCP服务器中选择其中的一个,并向所选择的DHCP服务器发送DHCP请求
报文
5、被选择的DHCP服务器发送确认报文DHCPACK。从这时起,DHCP客户就可以使用这个IP地址了。
这种状态叫做已绑定状态,因为在DHCP客户端的IP地址和硬件地址已经完成绑定,并且可以开始使用
得到的临时IP地址了。DHCP客户现在要根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时
时间分别是0.5T和0.875T。当超时时间到了就要请求更新租用期
6、租用期过了一半(T1时间到),DHCP发送请求报文DHCPREQUEST要求更新租用期
7、DHCP服务器若同意,则发回确认报文DHCPACK。DHCP客户得到了新的租用期,重新设置计时器。
8、DHCP服务器若不同意,则发回否认报文DHCPNACK。这时DHCP客户必须立即停止使用原来的IP地址,
而必须重新申请IP地址(回到步骤2)。
若DHCP服务器不响应步骤6的请求报文DHCPREQUEST,则在租用期过了87.5%时(T2时间到),
DHCP客户必须重新发送请求报文DHCPREQUEST(重复步骤6),然后又继续后面的步骤。
9、DHCP客户可以随时提前终止服务器所提供的租用期,这时只需向DHCP服务器发送释放报文
DHCPRELEASE 即可。
如果每一个网络上都设置一个 DHCP 服务器,因为这样会使 DHCP 服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(relay agent),它配置了DHCP 服务器的IP 地址信息。当DHCP 中继代理收到主机 A以广播形式发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到DHCP服务器回答的提供报文后,DHCP中继代理再把此提供报文发回给主机A。
三、DHCP报文格式
-
DHCP报文字段
DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同
报文字段说明:
- Message type:消息类型(1表示请求,2表示响应)
- Option:参数字段,包含报文的类型、有效租期、DNS服务器的IP地址、WINS服务器的IP地址等配置信息。
- Magic cookie:固定字节流,当server看到这个Magic cookie固定字节流后,就能知道后面是options field
- Client hardware address padding:客户端硬件地址填充
- Client MAC address:客户端MAC地址
- Relay agent IP address:中继代理IP地址
- Next server IP address:DHCP客户端获得启动配置信息的服务器的IP地址
- Your(client)IP address:服务器分配给客户端的IP地址。当服务器进行DHCP响应时,将分配给客户端的IP地址填入此字段
- Client IP address:客户机 IP 地址
- Bootp flags:此字段在BOOTP中保留未用,在DHCP中表示标志字段
- Seconds elapsed:由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数,目前没有使用,固定为0
- Transaction ID:事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配;该ID由客户端设置并由服务器返回,为32位整数
- Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1;此字段的作用是限制DHCP报文所经过的DHCP中继数目
- Hardware address length:硬件地址长度
- Hardware type:硬件类型(以太网接口类型为1)