简介
DHCP 位于 OSI 模型的应用层,基于 UDP 协议实现,主要用途为:
- 用于内部网络或网络服务供应商自动分配 IP 地址给用户;
- 用于内部网管理员对所有电脑作中央管理;
DHCP:动态主机设置协议,Dynamic Host Configuration Protocol。
通过 DHCP 用户不需要再手动配置 IP 地址等信息,该协议配置的内容包括了 IP 地址、子网掩码、网关 IP 地址。
工作流程
在 DHCP 中,server 使用的 UDP 端口为 67,client 使用的 UDP 端口为 68。
DHCP Discover
客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。
DHCP Offer
服务器收到 Discover 报文会发送 Offer 报文给客户端,该报文包含了客户端所需要 IP 地址、掩码等信息。
DHCP Request
客户端可能收到多个 DHCP 服务器提供的信息,如果客户端选择了某个 DHCP 服务器提供的信息,就需要发送 broadcast request 给告知客户端接受了哪一个 DHCP 服务器。
客户端也可能直接发 request 去要原来用过的 IP。如果还在原来的网络,服务器可能回复成功。如果不在原来的网络,那么 Authoritative DHCP server 会直接拒绝请求,Non-authoritative DHCP server 会忽略这个请求,客户端在超时后会继续发送 Discovery 报文。
DHCP Acknowledge
DHCP 服务器会发送 Ack 报文,表示客户端此时可以使用它提供的信息。客户端将会按照协商的参数配置网卡,得到 IP 后就可以发送一个 ARP 请求来避免由 DHCP 服务器地址池重叠而导致的 IP 冲突。