通信人家园

标题: DHCP流程总结  [查看完整版帖子] [打印本页]

时间:  2026-4-14 16:23
作者: xiaoheishou     标题: DHCP流程总结

在近期分析用户拿不到地址,抓了大量的DHCP报文。现将DHCP流程总结如下,以供大家日后抓到DHCP报文有个参考的模板。
先来介绍一下DHCP流程:
首先是用户端发现本机上没有任何IP数据的设定,它会向网络发出一个DHCP discover的广播包。在一般情况下,DHCP discover的等待时间预设为4秒,也就是说当客户端将第一个DHCP discover广播包发出去之后,在4秒之内没有得到响应的话,就会进行第二次DHCP discover广播。
与此同时,DHCP server收到客户端发来的discover后就会向网络发出ARP请求,试探有没有用户在使用DHCP server即将分配的地址。
DHCP server发现没有用户在使用这个预分配的地址时,那么DHCP server会发一个offer报文给客户端。此报文包含了分配给主机的IP地址、网关地址、子网掩码、租期时间、域名服务器地址。
客户端收到server 回的offer报文时会再次向网络中发广播包,即request报文。用以响应server端发来的offer报文,告诉DHCP server客户端已经收到服务器分配的信息。
最后DHCP server会单播给客户端一个ACK报文,明确客户端可以使用分配到的数据。到此客户端才真正获得了IP地址和相关的配置信息。
DHCP分配完成后,客户端会发出免费ARP,确认网络中没有用户使用与我相同的IP地址。
故此一套完整的流程结束,一般情况下只出现discoverofferrequestack这四个报文。但DHCP一共有6个报文,这些类型是通过DHCP报文option53来识别。option53的值为1discover2offer3request4declient用来通告DHCP server,你所分配的地址不可用,如IP地址发生冲突时;5ack6nak,是server拒绝响应request报文,一般出现nakDHCP流程将重新开始。
用一个抓包实例来说明:
序号6的包是DHCP过程开始的第一个报文,即用户发现自己没有IP信息,于是向网络中发出一个DHCP discover的广播包。
option53 中的value值为1表明是discover报文。
序号7的包是DHCP server 发出的ARP请求,server即将分配192.168.1.109这个地址,于是就问网络中谁使用这个地址。
序号8的包是客户端没有收到server回应的offer,但是时间已经过去了4秒,于是再次广播discover
序号9server收到第二次discover后,发出的ARP请求。
当没有用户回应server发出的ARP,则表明网络中没有用户使用192.168.1.109这个地址。那么server此时回应一个offer报文给客户端。offer报文序号11,如下图。
序号12的包是request报文。用以响应server端发来的offer报文,告诉DHCP server客户端已经收到服务器分配的信息。
序号13server给客户端的一个ack报文。明确客户端可以使用分配到的数据。
序号141516是客户端发出的免费ARP,确认网络中没有用户使用与我相同的IP地址。
至此一套标准的DHCP流程即完成,在以后抓包分析的时候,发现有多的报文或是缺少某些报文可依据本文作参考。
                                                     


时间:  2026-4-14 19:00
作者: 911bbs

不说别的,这个老古董一般  的 4秒,不行啦,该改了! 为什么这么多年都能忍受4秒?
为什么不可以缩短?
没有优化的余地了吗?




通信人家园 (https://www.txrjy.com/) Powered by C114