DHCP服务器实现

概述:

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是采用UDP作为传输协议,客户端发送消息到DHCP服务器的的67号端口,服务器返回消息给客户端的68号端口,该协议允许服务器向客户端动态分配 IP 地址和配置信息。DHCP协议支持C/S(客户端/服务器)结构,主要分为两部分:

1、DHCP客户端:通常为网络中的PC、打印机等终端设备,使用从DHCP服务器分配下来的IP信息,包括IP地址、DNS等。

2、DHCP服务器:所有的IP网络设定信息都由DHCP服务器集中管理,并处理客户端的DHCP请求。

本文将使用CH32V307实现DHCPSERVER用于给对端设备通过DHCP协议分配ip信息。

原理:

DHCP在工作过程中涉及到的报文种类及其作用如下:

1、DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。

2、DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。

3、DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。

4、DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

5、DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。

6、DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。

7、DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。

8、DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。

DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。为了能继续使用原先的IP地址,DHCP客户端会向DHCP服务器发送续租的请求。

DHCP续租的工作流程描述如下:

1、在使用租期过去50%时刻处, 客户端向服务器发送单播DHCP REQUEST报文续延租期。

2、如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向服务器发送广播DHCP REQUEST报文续延租期。

3、如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端自动放弃使用这个IP地址,并开始新的DHCP过程。

实现:

1、创建本地端口号为67的UDP SOCKET;

文本

AI 生成的内容可能不正确。

2、接收并解析DHCP客户端发来的DHCP DISCOVER请求,记录DHCP客户端请求的XID以及MAC地址;

文本

AI 生成的内容可能不正确。

3、封装对应的DHCP OFFER与DHCP ACK包用来响应DHCP客户端的请求;

抓包:

电脑屏幕的截图

AI 生成的内容可能不正确。

posted @ 2026-02-04 09:30  小小小学僧  阅读(0)  评论(0)    收藏  举报