客户机向dhcp服务器请求获得IP地址的详细封包问题

2025-03-11 05:19:48
推荐回答(1个)
回答1:

DHCP报文是封装在UDP报文中的。
UDP报文封装在IP报文里,IP报文封装在以太网报文里。

典型的DHCP过程是这样的:
1:客户机向服务器发送DHCP_DISCOVER报文,申请IP。
2:服务器向客户机返会DHCP_OFFER报文,指定一个将要分配的IP。
3:客户机向服务器发送DHCP_REQUEST报文,请求这个IP。
4:服务器PING几次(一般是3次)这个IP,如果没得到响应的话,就说明这个IP现在空闲,可以分配给客户机,所以向客户机发送DHCP_ACK报文,确认可以分配。如果得到相应,则发送DHCP_NAK报文,拒绝分配。
5:如果客户端收到DHCP_ACK,责发送一次免费ARP,判断这个IP是否已经被用。没有被用的话则绑定这个服务器分配来的IP,否则向服务器发送DHCP_DECLINE报文,拒绝这次分配。并重新执行第一步。
如果收到的是DHCP_NAK,则直接重新执行第一步。

大概过程是这样的,还有不明白的话再补充一下问题~

-----------------------------------------------------------

DHCP是应用层协议,UDP是传输层协议,IP是网络层协议,以太网是链路层协议。
数据在网络上传输的时候要自顶向下逐层封装的,关于这部份知识你可以参考一下TCP/IP分层模型。

客户机申请IP之前确实没有IP,DHCP_DISCOVER报文都是以广播形式发送的,IP头里的目的地址是255.255.255.255,源地址是0.0.0.0。
链路层目的地址是FF-FF-FF-FF-FF-FF,源地址是自己的mac地址。

这样服务器收到客户端发来的DISCOVER报文之后,会根据源mac地址向客户机发送单播的DHCP_OFFER报文。