DHCP Message Exchange

DHCP Message Exchange

实验环境:

DHCP Server: Windows Server 2003

DHCP Client: Windows 7


wKiom1W-3p_gUkceAAPMAnInSxE932.jpg


DHCP报文交互过程:

① DHCP Discovery

       DHCP客户端首先广播发送一个DHCP Discover消息,数据包的源MAC地址是客户端的MAC地址,目标MAC地址是FFFF.FFFF.FFFF的二层广播地址。由于它现在还没有IP地址,因此源IP地址只能是0.0.0.0;它也不知道发给谁,因此目标IP地址是255.255.255.255的三层广播地址;DHCP使用的协议是UDP,源端口是68(客户端),目标端口是67(服务器),DHCP报文的类型是DHCP Discover。

DHCP Offer

       DHCP服务器向DHCHP客户机发送DHCP Offer信息,其中包括一个可租用的IP地址,该数据包仍然是一个广播报文。源MAC地址是DHCP服务器的MAC地址,目标MAC地址是广播MAC(这里很多文档将此处解释为单播,其实不是,DHCP服务器不仅要告诉客户端,还要告诉其他DHCP服务器,这个IP地址已经被分发出去了,这样设计的目的主要是考虑到有同一网段有多个DHCP服务器的情况)该数据包源IP是服务器的IP地址,即172.16.1.1,目标IP是255.255.255.255,因为此时客户机还没有IP地址。UDP的源端口是67(服务器),目标端口是68(客户端),DHCP报文中包含了分配给客户端的IP地址。


       如果客户机在发出DHCP Discover消息后,没有DHCP服务器做出响应,客户机则拿不到IP地址。但客户机会每隔几分钟发送DHCP Discover进行尝试,直到客户端收到DHCP Offer报文。如果是Windows客户端,再多次尝试失败后,会自动分配一个169.254.0.0/16的IP地址,但仍然会继续进行尝试。直到找到DHCP服务器,用DHCP服务器分配给它的地址来替换这个IP地址。

DHCP Request

       客户机收到DHCP Offer报文以后,会发送一个DHCP Request报文。该报文仍然是一个广播报文(主要考虑到客户机要告诉该网段所有的DHCP服务器,我选择了172.16.1.1这台DHCP服务器),源MAC地址是客户机的MAC地址,目标MAC仍然是FFFF.FFFF.FFFF的广播地址;源IP是刚刚DHCP服务器分配给客户机的地址(172.16.1.10),目标IP是255.255.255.255。传输层源端口是68,目标端口是67,DHCP报文中包含客户机的MAC地址,以及客户机选择的DHCP服务器(注:在Windows Server 2003做为DHCP服务器的时候未在该报文中找到服务器的IP地址,而思科路由器做DHCP服务器则有)。

DHCP Ack

      DHCP服务器收到DHCP Offer报文以后,确定租约成立,回复一个DHCP Ack。在这个报文中还包含一些额外的信息,网关、掩码、DNS等,该报文仍然是一个广播报文。


附件:附件中是DHCP的抓包的报文,感兴趣的同学可以下载后进行分析


你可能感兴趣的:(DHCP,DHCP报文,杨森的IT路)