相关信息
ESP-IDF版本:V4.1
DHCP服务器相关文件路径:
DHCP通信流程
在DHCP服务中,所有的请求均由Client发起,Server被动接收信息进行处理,处理完成后响应Client,以实现相关功能,其详细流程可参见DHCP协议。目前为止DHCP主要为以下几个工作流程:
在REQUEST报文还可以细分为以下几种类型(具体信息请参见DHCP协议):
ESP-IDF的DHCP服务器流程
在ESP-IDF库中,DHCP服务器相关部分代码根据实际需要,只实现了表2中编号A、B、D的流程,如下图所示:
由图1所示,DHCP服务处理过程可分为以下几个主要过程:
- 提取报文中Client的mac地址,与本地的地址池中已经注册的Client链表进行比较,以确认Client 是否已经在Server中注册过租赁信息,存在则进行提取出来备用,若没找到,则在地址池中创建一 个可用的IP租赁信息,若地址池已经满了,那么只能向Client发送一个NAK报文。
- 将提取的IP租赁信息中的IP字段与报文中的Client的IP进行比对,一致则认为是RENEWING 或者REBINDING报文请求,此时重置IP租赁信息中的租赁时间,并标志renew标志。
- 分析options字段,若是DISCOVER报文则发送OFFER报文。若是REQUEST报文则根据 REQUEST类型来确定回应ACK还是NAK。若是RELEASE报文则释放相关的IP租赁信息。
疑问
- 代码中没有实现DECLINE功能,如果IP地址发生冲突,Server无法进行处理,只能等待IP租赁 信息超时释放后才可再一次使用。
- 若在同一个范围内有两个DHCP Server,都对同一个Client回应了OFFER,当Client只租赁了其 中一个Server的IP租赁,那么另外一个无法及时释放,也只能等IP租赁 信息超时释放后才可在一 次使用。
共有条评论 网友评论