1. DHCP 简介
??DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是由 Internet 工作任务小组设计开发的,专门用于为 TCP/IP 网络中的计算机自动分配 TCP/IP 参数的协议,是一个应用层协议,使用 UDP 的 67 和 68 端口。DHCP 的前身是 BOOTP 协议 (BootstrapProtocol),BOOTP 被创建出来为连接到网络中的设备自动分配地址,后来被 DHCP 取代了,DHCP 比 BOOTP 更加复杂,功能更强大。 ??DHCP 服务避免了因手动设置 IP 地址所产生的错误,同时也避免了把一个 IP 地址分配给多台工作站所造成的地址冲突。DHCP 提供了安全、可靠且简单的 TCP/IP 网络设置,降低了配置 IP 地址的负担。
2. DHCP 的好处
??由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的 IP 地址不仅造成了 IP 地址的浪费,也会为 ISP 服务商带来高额的维护成本。而使用 DHCP 服务则有以下好处:
● 减少管理员的工作量
● 避免输入错误的可能
● 避免 IP 地址冲突
● 当更改 IP 地址段时,不需要重新配置每个用户的 IP 地址
● 提高了 IP 地址的利用率
● 方便客户端的配置
3. DHCP 的分配方式
当 DHCP 客户机第一次成功地从 DHCP 服务器获取到一个 IP 地址后,就永久使用这个 IP 地址。
由 DHCP 服务器管理员专门指定 IP 地址。
当 DHCP 客户机第一次从 DHCP 服务器获取到 IP 地址后,并非永久地使用该地址,而是在每次使用完后,DHCP 客户机就会释放这个 IP 地址,供其他客户机使用。
4. DHCP 租约过程和续租
4.1 租约过程简述
客户机从 DHCP 服务器获取 IP 地址的过程称为 DHCP 的租约过程。 可以分为四个阶段:
client 向 server 发送请求,发向广播地址。
server 向 client 回应一个 IP,发向单播地址。
client 向 server 回应一个确认,发向广播地址,表示自已已得到 IP 地址,这样可以防止在网络上有多台 DHCP 服务器的情况下,其它服务器不会再给它分配 IP。
server 再向 client 回应一个确认。
4.2 租约过程详细解释
(1) 客户端进行 IP 请求
??当一个 DHCP 客户机启动时,会自动将自己的 IP 地址配置成 0.0.0.0,由于使用 0.0.0.0 不能进行正常通信,所以客户机必须通过 DHCP 服务器来获取一个合法的地址。由于客户机不知道 DHCP 服务器的 IP 地址,所以它使用 0.0.0.0 的地址作为源地址,使用 UDP68 端口作为源端口,使用 255.255.255.255 作为目标地址,使用 UDP67 端口作为目的端口来广播请求 IP 地址信息。广播信息中包含了 DHCP 客户机的 MAC 地址和计算机名,以便使 DHCP 服务器能确定是哪个客户机发送的请求。
(2) 服务器响应
??当 DHCP 服务器接收到客户机请求 IP 地址的信息时,它就在自己的 IP 地址池中查找是否有合法的 IP 地址提供给客户机。如果有,DHCP 服务器就将此 IP 地址做上标记,加入到 DHCPOFFER 的消息中,然后 DHCP 服务器就广播一则包括下列信息的 DHCPOFFER 消息:DHCP 客户机的 MAC 地址;DHCP 服务器提供的合法 IP 地址;子网掩码;默认网关(路由);租约的期限;DHCP 服务器的 IP 地址。因为 DHCP 客户机还没有 IP 地址,所以 DHCP 服务器使用自己的 IP 地址作为源地址,使用 UDP67 端口作为源端口,使用 255.255.255.255 作为目标地址,使用 UDP68 端口作为目的端口来广播 DHCPOFFER 信息。
(3) 客户机选择 IP
??DHCP 客户机从接收到的第一个 DHCPOFFER 消息中选择 IP 地址,发出 IP 地址的 DHCP 服务器将该地址保留,这样该地址就不能提供给另一个 DHCP 客户机。当客户机从第一个 DHCP 服务器接收 DHCPOFFER 并选择 IP 地址后,DHCP 租约的第三过程发生。客户机将 DHCPREQUEST 消息广播到所有的 DHCP 服务器,表明它接受提供的内容。DHCPREQUEST 消息包括为该客户机提供 IP 配置的服务器的服务标识符(IP地址)。DHCP 服务器查看服务器标识符字段,以确定它自己是否被选择为指定的客户机提供 IP 地址,如果那些 DHCPOFFER 被拒绝,则 DHCP 服务器会取消提供并保留其 IP 地址以用于下一个 IP 租约请求。 ??在客户机选择 IP 的过程中,虽然客户机选择了 IP 地址,但是还没有配置 IP 地址,而在一个网络中可能有几个 DHCP 服务器,所以客户机仍然使用 0.0.0.0 的地址作为源地址,使用 UDP68 端口作为源端口,使用 255.255.255.255 作为目标地址,使用 UDP67 端口作为目的端口来广播 DHCPREQUEST 信息。
(4) 服务器确认租约
??DHCP 服务器接收到 DHCPREQUEST 消息后,以 DHCPACK 消息的形式向客户机广播成功的确认,该消息包含有 IP 地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的 DHCPACK 消息,所以服务器仍然使用自己的 IP 地址作为源地址,使用 UDP67 端口作为源端口,使用 255.255.255.255 作为目标地址,使用 UDP68 端口作为目的端口来广播 DHCPACK 信息。当客户机收到 DHCPACK 消息时,它就配置了 IP 地址,完成了 TCP/IP 的初始化。
(5) 租约过程总结
租约过程类似租房:
你先求租房
中介公司会给你响应,我有房源,我给你
我确定你这个房子了
签订合同
关于重新登录的情况: ??DHCP 客户机每次重新登录网络时,不需要再发送 DHCP Discover 信息,而是直接发送包含前一次所分配的 IP 地址的 DHCP Request 请求信息。
4.3 DHCP 续租
(1) 第一次续租请求
??租期达到 50%(T1)时,DHCP 客户端会自动以单播的方式向 DHCP 服务器发送 DHCP REQUEST 报文,请求更新 IP 地址租期。如果收到 DHCP 服务器回应的 DHCP ACK 报文,则租期更新成功(即租期从0开始计算);如果收到 DHCP NAK 报文,则重新发送 DHCP DISCOVER 报文请求新的 IP 地址。
(2) 第二次续租请求
??当租期达到 87.5%(T2)时,如果仍未收到 DHCP 服务器的应答,DHCP 客户端会自动以广播的方式向 DHCP 服务器发送 DHCP REQUEST 报文,请求更新 IP 地址租期。如果收到 DHCP 服务器回应的 DHCP ACK 报文,则租期更新成功(即租期从0开始计算);如果收到 DHCP NACK 报文,则重新发送 DHCP DISCOVER 报文请求新的 IP 地址。
(3) 续租过程总结
5. 配置文件 dhcpd.conf
dhcpd.conf 配置文件
6. DHCP 配置实例(ENSP实现)
碍于篇幅而且本文也不想放太多图,实例放在其它博客上: DHCP 中继转发
|