核心提示:在与读者的沟通中,发现很多读者对DHCP服务的工作原理不是很清楚,比如DHCP服务消息为什么不能通过网关。当网络中有多个DHCP服务器时,客户端如何选择每个阶段的DHCP消息格式是什么…
通过与读者的沟通,我们发现许多读者对DHCP服务的工作原理不是很清楚,例如DHCP服务消息为什么不能通过网关。当网络中有多个DHCP服务器时,客户端如何选择在每个阶段DHCP消息格式的主要变化是什么DHCP客户端和DHCP服务器是如何识别和建立通信的。


对于11.4.4 DHCP服务的IP地址自动分配原则


当服务是由DHCP,DHCP客户端在UDP 68端口发送,而DHCP服务器数据传输的UDP 67 port.dhcp服务不仅体现在提供IP地址的DHCP客户端自动的过程,而且在接下来的过程中更新的IP地址释放这段。介绍了只有DHCP客户端分配IP地址为第一次的过程。

为DHCP服务器的DHCP客户端第一次IP地址自动分配过程中,共有以下四个阶段后,在第一个四消息使用表11-10:发现阶段(网络广播的DHCP客户端发现请求报文,DHCP服务器,IP地址的请求,阶段(租赁)DHCP服务器提供IP地址的DHCP提供的信息预先分配给DHCP客户端(DHCP),通过DHCP请求报文确认第一个DHCP服务器自动分配服务的选择提供的IP地址为它的客户选择阶段)和确认阶段(选择DHCP服务器通过DHCP ACK消息DHCP在提供信息的IP地址O备f租赁相应的DHCP客户机)。



DHCP客户端获取IP地址后,它会发送免费ARP请求来检测是否有其他主机在网络中使用的IP地址来避免由DHCP服务器池的重叠造成的IP冲突。上述四个阶段,如图3-11所示,相当于现在的DHCP客户端和DHCP服务器之间的四次握手。具体介绍如下:

图11-19 DHCP客户端从DHCP服务器获取IP地址的四个阶段

(1)发现阶段:即DHCP客户端获取DHCP服务器在网络信息的阶段。DHCP客户端程序配置在客户端,如图11-16所示在Windows系统的配置,并启动后,DHCP发现消息被发送通过无线电,和网络中的DHCP服务器搜索,例子如下。

此广播消息传输层使用UDP端口68发送(包的UDP端口68),通过网络层的IP协议、源IP地址0.0.0.0(因为它还没有分配的IP地址),目的IP地址为255.255.255.255(IP有限广播地址),下面是一个例子,一个IP报头这是通过DHCP发现报文封装。可以看出,目的地址(目的地址)是255.255.255.255,而源地址(源地址)是在IP头的其他领域0.0.0.0.the意义可以称这本书在第七章7.3.4节。



IP:ID = 0;原= UDP长度:328;

IP版本= 4(0x4)

IP报头长度= 20(0x14)

IP:服务类型= 0(0)

IP:优先级=例程

IP:…0…=正常Delay

IP地址:……0…正常=吞吐量

.. 0 ..=正常可靠性ip:…

IP:总长度= 328(0x148)

IP:识别= 0(0)

IP:标记摘要= 0(0)

IP:…0 =数据报的最后一个片段

IP:…0。=如果需要,可以片段数据报

IP:片段偏移(0x0)字节= 0

IP生存时间(0x80)= 128

IP:协议= UDP -用户数据报!——使用UDP传输层协议

IP:校验= 0x39a6

IP源地址为0.0.0.0!---源IP地址0.0.0.0

IP目的地址为255.255.255.255!———目的IP地址为255.255.255.255

IP数据:剩余的数据字节数(0x0134)= 308


{ }在有经验的人在发现DHCP地址的IP报头的经验之谈(目的地址255.255.255.255)是有限广播地址。这有限的广播地址是任何IPv4子网广播地址当然,广播地址的子网的主机发送消息,和DHCP服务器的子网,但当时,DHCP客户端不知道哪个子网的DHCP服务器,所有其他的DHCP消息的255.255.255.255地址下面的意思是一样的。



作为源地址(源地址)的IP报头,因为当前DHCP客户端主机不分配特定的IP地址,它只能由0.0.0.0地址与任何代表函数表示。的0.0.0.0地址在所有其他DHCP消息下面指定的意思是一样的。



因为在这个时候,DHCP客户端没有分配到IP地址,不知道DHCP服务器和DHCP中继的IP地址,所以在DHCP Discover消息ciaddr(客户端)、Yiaddr(分布式DHCP客户端的IP地址(siaddr),DHCP服务器地址下分配IP地址的DHCP客户端)Giaddr(IP,DHCP中继地址)这四个领域是0.0.0.0,如下所示。此外,你可以看到DHCP客户机网卡的MAC地址是在chaddr场识别和客户端标识符字段的DHCP选项。




DHCP:Discover (xid=21274A1D)

DHCP:Op Code(OP)= 1(0x1)

DHCP:硬件型(H型)= 1(0x1)10兆以太网

DHCP:硬件地址长度(海伦)= 6(0x6)

DHCP:跳(跳)= 0(0)

DHCP:事务ID(XID)= 556223005(0x21274a1d)

DHCP:秒(秒)= 0(0)

DHCP:旗(旗)= 1(0x1)!-标志位置1,由广播发送

DHCP:1……=广播

DHCP客户端IP地址:(ciaddr)= 0.0.0.0

DHCP:您的IP地址(yiaddr)= 0.0.0.0

DHCP服务器的IP地址:(siaddr)= 0.0.0.0

DHCP中继的IP地址:(菜单)= 0.0.0.0

DHCP客户端的以太网地址:(chaddr)= 08002b2ed85e

DHCP服务器:服务器主机名(SNAME)= =

启动文件名(文件)=

DHCP:魔力cookie = OK }

选项字段(选项)

DHCP消息类型= DHCP发现!DHCP消息类型是DHCP发现

DHCP:客户端标识符=(型号:1)0800个2B 2e D8 5e

DHCP:主机名称= jumbo-ws!DHCP服务器主机名

DHCP:参数请求列表=(长度:7)01中03 2C 2E 2F 06

DHCP:这个选项字段的结尾


(2)提供阶段,即DHCP服务器提供预分配的IP地址的DHCP客户端,DHCP服务器收到DHCP发现客户信息,将基于地址池中的优先选择一个IP地址的IP地址的分配,然后连同其他参数的UDP端口67传输层,在提供信息的DHCP发送到客户端以广播方式(目的港是DHCP客户端的UDP端口68)。客户确定帧的目的MAC地址比较(和价值的chaddr场在DHCP Discover消息)的框架中。但在理论上,DHCP客户端可能会收到多个DHCP提供的信息(如果有多多个DHCP服务器在网络),但DHCP客户机只接受第一个DHCP提供消息。



DHCP提供消息被IP协议封装。源IP地址,DHCP服务器的IP地址,目的地址是广播地址255.255.255.255,和所使用的协议是UDP。以下是一个DHCP报文的IP报头的样本。




IP:ID = 0x3c30;原= UDP;长度:328

IP版本= 4(0x4)

IP报头长度= 20(0x14)

IP:服务类型= 0(0)

IP:优先级=例程

IP:…0…=正常Delay

IP:....0... 正常=吞吐量

.. 0 ..=正常可靠性ip:…

IP:总长度= 328(0x148)

IP:识别= 15408(0x3c30)

IP:标记摘要= 0(0)

IP:…0 =数据报的最后一个片段

IP:…0。=如果需要,可以片段数据报

IP:片段偏移(0x0)字节= 0

IP生存时间(0x80)= 128

IP:协议= UDP -用户数据报

IP:校验= 0x2fa8

IP源地址= 157.54.48.151

IP目的地址为255.255.255.255

IP数据:剩余的数据字节数(0x0134)= 308


在DHCP提供的消息,该ciaddr字段值是0.0.0.0,因为客户没有指定的IP地址;的yiaddr域值,这是对客户的预分配的IP地址的DHCP服务器;因为客户没有得到证实,所以siaddr字段值是0.0.0.0;因为没有配置DHCP服务器所以giaddr字段的值是0.0.0.0.in之外,在DHCP可选部分,你可以看到,通过IP地址的服务器发送的各种选项。在这种情况下,服务器发送子网掩码、默认网关(路由器),租赁时间,WINS服务器地址(NetBIOS名字服务)和NetBIOS节点类型。以下是DHCP消息的示例。




DHCP:提供(XID = 21274a1d)

DHCP:Op Code(OP)= 2(工作)

DHCP:硬件型(H型)= 1(0x1)10兆以太网

DHCP:硬件地址长度(海伦)= 6(0x6)

DHCP:跳(跳)= 0(0)

DHCP:事务ID(XID)= 556223005(0x21274a1d)

DHCP:秒(秒)= 0(0)

DHCP:旗(旗)= 1(0x1)

DHCP:1……=广播

DHCP客户端IP地址:(ciaddr)= 0.0.0.0

DHCP:您的IP地址(yiaddr)= 157.54.50.5

DHCP服务器的IP地址:(siaddr)= 0.0.0.0

DHCP中继的IP地址:(菜单)= 0.0.0.0

DHCP客户端的以太网地址:(chaddr)= 08002b2ed85e

DHCP服务器:服务器主机名(SNAME)= =

启动文件名(文件)=

DHCP:魔力cookie = OK }

选项字段(选项)

DHCP消息类型= DHCP提供!DHCP消息类型为DHCP提供

DHCP:子网掩码=投入!---指定IP地址的子网掩码是投入

DHCP:更新时间价值(T1)= 8天,0:00:00!-如果你想继续原始分配的IP地址,续期申请的持续时间为8天。

DHCP:重新绑定时间值(T2)= 14天,0:00:00!-如果最后一个应用程序被更新,将需要14天的时间来绑定原来的IP地址。

DHCP:IP地址租约时间为16天,0:00:00!-租期为16天,即DHCP客户端可以使用此IP地址16天的最长时间。

DHCP服务器标识符= 157.54.48.151!对---的DHCP服务器的IP地址是157.54.48.151

DHCP:路由器= 157.54.48.1!-默认网关的IP地址是157.54.48.1

DHCP:NetBIOS名字服务= 157.54.16.154!DNS服务器的IP地址是157.54.16.154 ---

DHCP:NetBIOS Node Type =(长度:1)04

DHCP:这个选项字段的结尾



(3)选择阶段:选择的DHCP客户端的IP地址的阶段。如果有多个DHCP服务器发送DHCP提供消息给客户端,客户端只接受第一个DHCP提供消息,然后发送DHCP请求消息广播模式。请求的地址选择在消息中包含的IP地址预分配的DHCP提供消息的DHCP服务器,相应的DHCP服务器的IP地址,等等。这是在告诉其他的DHCP服务器在同一时间,他们可以释放提供的地址和返回到可用的地址池一样。


在IP协议头的DHCP报文封装,客户端的源地址是0.0.0.0,和目的地的数据包仍然是255.255.255.255.but在DHCP提供的消息,该ciaddr,yiaddr,siaddr地址,菜单字段为0.0.0.0,你可以分析其中的原因,很简单,如下是一个DHCP ofeer消息头和DHCP提供的信息的一个例子。




IP:ID = 0x100;原= UDP长度:328;

IP版本= 4(0x4)

IP报头长度= 20(0x14)

IP:服务类型= 0(0)

IP:优先级=例程

IP:…0…=正常Delay

IP地址:……0…正常=吞吐量

.. 0 ..=正常可靠性ip:…

IP:总长度= 328(0x148)

IP:识别= 256(0x100)

IP:标记摘要= 0(0)

IP:…0 =数据报的最后一个片段

IP:…0。=如果需要,可以片段数据报

IP:片段偏移(0x0)字节= 0

IP生存时间(0x80)= 128

IP:协议= UDP -用户数据报

IP:校验= 0x38a6

IP源地址为0.0.0.0

IP目的地址为255.255.255.255

IP数据:剩余的数据字节数(0x0134)= 308




DHCP:请求(XID = 21274a1d)

DHCP:Op Code(OP)= 1(0x1)

DHCP:硬件型(H型)= 1(0x1)10兆以太网

DHCP:硬件地址长度(海伦)= 6(0x6)

DHCP:跳(跳)= 0(0)

DHCP:事务ID(XID)= 556223005(0x21274a1d)

DHCP:秒(秒)= 0(0)

DHCP:旗(旗)= 1(0x1)

DHCP:1……=广播

DHCP客户端IP地址:(ciaddr)= 0.0.0.0

DHCP:您的IP地址(yiaddr)= 0.0.0.0

DHCP服务器的IP地址:(siaddr)= 0.0.0.0

DHCP中继的IP地址:(菜单)= 0.0.0.0

DHCP客户端的以太网地址:(chaddr)= 08002b2ed85e

DHCP服务器:服务器主机名(SNAME)= =

启动文件名(文件)=

DHCP:魔力cookie = OK }

选项字段(选项)

DHCP消息类型= DHCP请求

DHCP:客户端标识符=(型号:1)0800个2B 2e D8 5e

DHCP:请求的地址= 157.54.50.5

DHCP服务器标识符= 157.54.48.151:

DHCP:主机名称= jumbo-ws

DHCP:参数请求列表=(长度:7)01中03 2C 2E 2F 06

DHCP:这个选项字段的结尾



(4)验证阶段:对配置水平的DHCP客户端IP地址的DHCP服务器确认阶段。DHCP服务器接收DHCP请求报文发送给DHCP客户端,DHCP服务器只会选择进行如下操作:如果确认将地址分配给客户端,它返回DHCP ACK消息广播;否则返回DHCP NAK信息,不能分配给客户端。


在DHCP ACK消息的DHCP服务器发送的IP协议报头中,源地址的DHCP服务器的IP地址,目的地址是广播地址255.255.255.255.the yiaddr领域仍在DHCP ACK消息中包含的IP地址被分配给客户端,而chaddr和DHCP客户端标识符字段:是送的请求的客户机的网卡MAC地址,同时,在选项中的一部分,我们将添加子网掩码,默认网关,DNS服务器,租赁期和IP地址的DHCP消息的更新时间。




IP:ID = 0x3d30;原= UDP;长度:328

IP版本= 4(0x4)

IP报头长度= 20(0x14)

IP:服务类型= 0(0)

IP:优先级=例程

IP:…0…=正常Delay

IP地址:……0…正常=吞吐量

.. 0 ..=正常可靠性ip:…

IP:总长度= 328(0x148)

IP:识别= 15664(0x3d30)

IP:标记摘要= 0(0)

IP:…0 =数据报的最后一个片段

IP:…0。=如果需要,可以片段数据报

IP:片段偏移(0x0)字节= 0

IP生存时间(0x80)= 128

IP:协议= UDP -用户数据报

IP:校验= 0x2ea8

IP源地址= 157.54.48.151

IP目的地址为255.255.255.255

IP数据:剩余的数据字节数(0x0134)= 308




DHCP ACK(XID = 21274a1d):

DHCP:Op Code(OP)= 2(工作)

DHCP:硬件型(H型)= 1(0x1)10兆以太网

DHCP:硬件地址长度(海伦)= 6(0x6)

DHCP:跳(跳)= 0(0)

DHCP:事务ID(XID)= 556223005(0x21274a1d)

DHCP:秒(秒)= 0(0)

DHCP:旗(旗)= 1(0x1)

DHCP:1……=广播

DHCP客户端IP地址:(ciaddr)= 0.0.0.0

DHCP:您的IP地址(yiaddr)= 157.54.50.5

DHCP服务器的IP地址:(siaddr)= 0.0.0.0

DHCP中继的IP地址:(菜单)= 0.0.0.0

DHCP客户端的以太网地址:(chaddr)= 08002b2ed85e

DHCP服务器:服务器主机名(SNAME)= =

启动文件名(文件)=

DHCP:魔力cookie = OK }

选项字段(选项)

DHCP消息类型= DHCP ACK

DHCP:更新时间价值(T1)= 8天,0:00:00

DHCP:重新绑定时间值(T2)= 14天,0:00:00

DHCP:IP地址租约时间为16天,0:00:00

DHCP服务器标识符= 157.54.48.151:

DHCP:子网掩码=投入

DHCP:路由器= 157.54.48.1

DHCP:NetBIOS名字服务= 157.54.16.154

DHCP:NetBIOS Node Type =(长度:1)04

DHCP:这个选项字段的结尾


{说明}收到确认信息后返回到客户端服务器dhcp-ack,免费ARP报文以广播的方式发送(在源IP地址和目的IP地址信息是机器的IP地址,源MAC地址是本机的MAC地址,目标MAC地址是广播地址,MAC)来检测主机是否使用分配的IP地址的服务器,如果未收到响应在规定的时间内,使用客户端地址。否则,客户端将发送DHCP拒绝消息的DHCP服务器和重新申请IP地址>


如果网络中有多台DHCP服务器,除了由DHCP客户端选择服务器,其他未分配的IP地址在其他DHCP服务器仍然可以分配给其他客户。