学习笔记
DHCP基本原理
DHCP协议使用UDP传输协议,客户端发送请求消息到DHCP服务器的68号端口,DHCP服务器回应应答消息给主机的67号端口。
原理图:
- DHCP Client以广播的方式发出DHCP Discover报文
- 所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。DHCP Offer报文中“ IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址, DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
- DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
- DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
- DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
- DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。
续租
在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。
直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。
抓包分析
- 如图为客户端获取自动获取ip地址的数据包
1. dhcp discover
2. dhcp offer
网络内可能有多个DHCP服务器,因此也可能收到多个offer
3. DHCP REQUEST
request数据包用于申请offer中给出的IP地址,此时仍然没有真正获得IP地址,仍然是广播形式发送。
4. DHCP ACK
DHCP服务器对客户端的REQUEST报文的确认,客户端收到此报文后,才算获得了 IP 地址和相关的配置信息。
补充
- DHCP NAK:
服务器对客户端的 DHCP REQUEST 报文的拒绝响应报文,比如服务器对客户
端分配的 IP 地址已超过使用租借期限(服务器没有找到相应的租约记录)或者由于某些原
因无法正常分配 IP 地址,则发送 DHCP NAK 报文作为应答(客户端移到了另一个新的网络)。
通知 DHCP 客户端无法分配合适 IP 地址。DHCP 客户端需要重新发送
DHCP DISCOVERY 报文
来申请新的 IP 地址。
- DHCP DECLINE:
当客户端发现服务器分配给它的 IP 地址发生冲突时会通过发送此报文
来通知服务器,并且会重新向服务器申请地址。
- DHCP RELEASE:
客户端可通过发送此报文主动释放服务器分配给它的 IP 地址,当服务
器收到此报文后,可将这个 IP 地址分配给其它的客户端。
-DHCP INFORM:
客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其
他的一些网络配置信息,比如网关地址、DNS 服务器地址等。
部分参考如下博客
原文链接:https://blog.csdn.net/qq_17592003/article/details/108513553