DHCP 协议
简介
DHCP(Dynamic Host Configuration Protocol)是一种用于动态分配 IP 地址和其他网络配置信息的网络协议。它位于 OSI 七层模型中的应用层,是承载于 UDP 之上的高层协议报文,采用 67(DHCP 服务器)和 68(DHCP 客户端)两个端口号。
DHCP 的主要作用是自动分配 IP 地址,因为 DHCP 能够管理 IP 地址的分配和释放,通过 DHCP 服务 器就能够动态地为客户端分配可用的 IP 地址,并有效防止 IP 地址冲突。此外,DHCP 还可以提供子网掩码、默认网关、DNS 服务器等网络配置信息。
协议格式
报文的格式如下所示:
协议字段具体说明:
字段 | 长度 | 含义 |
---|---|---|
OP | 1字节 | 表示报文的类型:1:客户端请求报文;2:服务器响应报文 |
htype | 1字节 | 表示硬件地址的类型。对于以太网,该类型的值为“1”。 |
hlen | 1字节 | 表示硬件地址的长度,单位是字节。对于以太网,该值为 6。 |
Hops | 1字节 | 跳数。客户端设置为 0,也能被一个代理服务器设置。 |
xid | 4字节 | 事务 ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该 ID 由客户端设置并由服务器返回,为 32 位整数。 |
secs | 2字节 | 由客户端填充,表示从客户端开始获得 IP 地址或 IP 地址续借后所使用了的秒数。 |
flags | 2字节 | 此字段在 BOOTP 中保留未用,在 DHCP 中表示标志字段。只有标志字段的最高位才有意义,其余的位均被置为 0。该字段被解释为广播响应标志位,0:客户端请求服务器以单播形式发送响应报文;1:客户端请求服务器以广播形式发送响应报文。 |
ciaddr | 4字节 | 客户端的 IP 地址。只有客户端是 Bound、Renew、Rebinding 状态,并且能响应 ARP 请求时,才能被填充。 |
yiaddr | 4字节 | "你自己的"或客户端的 IP 地址。 |
siaddr | 4字节 | 表明 DHCP 协议流程的下一个阶段要使用的服务器的 IP 地址。 |
giaddr | 4字节 | 该字段表示第一个 DHCP 中继的 IP 地址(注意:不是地址池中定义的网关)。当客户端发出 DHCP 请求时,如果服务器和客户端不在同一个网络中,那么第一个 DHCP 中继在转发这个 DHCP 请求报文时会把自己的 IP 地址填入此字段。服务器会根据此字段来判断出网段地址,从而选择为用户分配地址的地址池。服务器还会根据此地址将响应报文发送给此 DHCP 中继,再由 DHCP 中继将此报文转发给客户端。若在到达 DHCP 服务器前经过了不止一个 DHCP 中继,那么第一个 DHCP 中继后的中继不会改变此字段,只是把 Hops 的数目加 1。 |
chaddr | 16字节 | 该字段表示客户端的 MAC 地址,此字段与前面的“Hardware Type”和“Hardware Length”保持一致。当客户端发出 DHCP 请求时,将自己的硬件地址填入此字段。对于以太网,当“Hardware Type”和“Hardware Length”分别为“1”和“6”时,此字段必须填入 6 字节的以太网 MAC 地址。 |
sname | 64字节 | 该字段表示客户端获取配置信息的服务器名字。此字段由 DHCP Server 填写,是可选的。如果填写,必须是一个以 0 结尾的字符串。 |
file | 128字节 | 该字段表示客户端的启动配置文件名。此字段由 DHCP Server 填写,是可选的,如果填写,必须是一个以 0 结尾的字符串。 |
options | 可变 | 该字段表示 DHCP 的选项字段,至少为 312 字节,格式为"代码+长度+数据"。DHCP 通过此字段包含了服务器分配给终端的配置信息,如网关 IP 地址,DNS 服务器的 IP 地址,客户端可以使用 IP 地址的有效租期等信息。 |
工作流程
DHCP 协议的工作流程通常包括以下步骤:
- DHCP 发现(DHCP Discover):客户端在启动时广播 DHCP 发现消息,寻找可用的 DHCP 服务器。
- DHCP 提供(DHCP Offer):DHCP 服务器收到发现消息后,向客户端发送 DHCP 提供消息,提供可用的 IP 地址和其他配置信息。
- DHCP 请求(DHCP Request):客户端收到一个或多个 DHCP 提供消息后,选择其中一个 DHCP 服务器,并向其发送 DHCP 请求消息,请求分配 IP 地址。
- DHCP 确认(DHCP Acknowledge):DHCP 服务器收到客户端的请求后,确认分配给客户端的 IP 地址,并向客户端发送 DHCP 确认消息,同时提供其他网络配置信息。
- IP 地址续约(IP Address Renewal):在租约期限过半时,客户端会尝试续约 IP 地址租约,向 DHCP 服务器发送 DHCP 请求消息。
- IP 地址释放(IP Address Release):客户端在不再需要 IP 地址时,向 DHCP 服务器发送 DHCP 释放消息,释放所分配的 IP 地址。
小结
DHCP 协议是一种用于动态分配 IP 地址和其他网络配置信息的重要协议。通过 DHCP,网络管理员能够自动管理和配置大量客户端设备,简化了网络管理工作,并确保了网络中设备的正常通信。 DHCP 的灵活性和自动化特性使得网络的扩展和维护变得更加容易和高效。