共计 2013 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址、子网掩码、网关以及 DNS、(网络批量安装)等 tcp/ip 信息,给用户或者内部网络管理员作为对所有计算机作中央管理的方法。 |
![Linux 中的 DHCP 原理 Linux 中的 DHCP 原理](https://s.xgss.net/sky/2024-07-24/b1afff6743ece3762c4bd26ec7a62bab.png)
A:客户端进行 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 服务器能确定是哪个客户机发送的请求。
B:服务器响应
当 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 信息。
C:客户机选择 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 信息。
D:服务器确认租约
DHCP 服务器接收到 DHCPREQUEST 消息后,以 DHCPACK 消息的形式向客户机广播成功的确认,该消息包含有 IP 地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的 DHCPACK 消息,所以服务器仍然使用自己的 IP 地址作为源地址,使用 UDP67 端口作为源端口,使用 255.255.255.255 作为目标地址,使用 UDP68 端口作为目的端口来广播 DHCPACK 信息。当客户机收到 DHCPACK 消息时,它就配置了 IP 地址,完成了 TCP/IP 的初始化。
如果 DHCPREQUEST 不成功,例如客户机试图租约先前的 IP 地址,但该 IP 地址不再可用,或者因为客户机移到其他子网,该 IP 无效时,DHCP 服务器将广播否定确认消息 DHCPNACK。当客户机接收到不成功的确认时,它将重新开始 DHCP 租约过程。
DHCP 客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP 服务器发送 DHCPREQUEST 消息包。如果客户机接收到该服务器回应的 DHCPACK 消息包,客户机就根据包中所提供的新的租期以及其它已经更新的 TCP/IP 参数,更新自己的配置,IP 租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的 IP 地址,因为当前租期还有 50%。
如果在租期过去 50% 的时候没有更新,则 DHCP 客户机将在租期过去 75% 的时候再次向为其提供 IP 地址的 DHCP 服务器联系。如果还不成功,到租约的 100% 时候,DHCP 客户机必须放弃这个 IP 地址,重新申请。如果此时无 DHCP 服务器可用,DHCP 客户机会使用 169.254.0.0/16 中随机的一个地址,并且每隔 5 分钟再进行尝试。
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)