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 的灵活性和自动化特性使得网络的扩展和维护变得更加容易和高效。