DHCP之简要分析

DHCP之简要分析

DHCP客户端从DHCP服务器动态获取IP地址,主要通过四个阶段进行:

(1)        发现阶段,即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCP-DISCOVER报文。
(2)        提供阶段,即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCP-DISCOVER报文后,根据IP地址分配的优先次序选出一个IP地址,与其他参数一起通过DHCP-OFFER报文发送给客户端。DHCP-OFFER报文的发送方式由DHCP-DISCOVER报文中的flag字段决定。
(3)        选择阶段,即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发来DHCP-OFFER报文,客户端只接受第一个收到的DHCP-OFFER报文,然后以广播方式发送DHCP-REQUEST报文,该报文中包含DHCP服务器在DHCP-OFFER报文中分配的IP地址。
(4)        确认阶段,即DHCP服务器确认IP地址的阶段。DHCP服务器收到DHCP客户端发来的DHCP-REQUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则返回DHCP-ACK报文;否则返回DHCP-NAK报文,表明地址不能分配给该客户端。
注:
   客户端收到服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-DECLINE报文给DHCP服务器,并重新申请IP地址。
    如果网络中存在多个DHCP服务器,除DHCP客户端选中的服务器外,其它DHCP服务器中本次未分配出的IP地址仍可分配给其他客户端。


DHCP 主要有四个过程: discover、offer、request、ack。
step 1:
客户端(PC机或移动终端)以广播包的形式,找寻可以提供分配ip的服务器或路由器,这即为discover阶段。
step 2:
所有收到这个discover广播包,并且可以有分配IP功能的服务器或路由器,会回应这个广播包;发包的方式可能是广播报文,也可能是 单播报文 (这因路由器的不同而可能不同)。这即为offer阶段
step3:
客户端收到这个包后(虽然这时候网络中有很多offer报文,但此时只会接受第一个到达的offer报文),从这个offer报文中提取所要的 ip,dns,net gate,并根据IP计算submask, 然后以广播包的形式,告知所有的可分配IP的服务器或路由器我已经得到一个IP,并且此报文中包含了为客户端分配IP的服务器或路由器的信息。这即为 request阶段。
step4:
所有的路由器或服务器收到这个request广播包之后,从中提取服务器的信息,如果是指向自己的,则会回ACK(同样,因路由器的不同回ACK的方式可能是广播报文,也可能是单播报文 ),其他的服务器或路由器则不会回ACK。这即为ACK阶段。

IP地址分配策略
针对客户端的不同需求,DHCP提供三种IP地址分配策略:
手工分配地址:由管理员为少数特定客户端(如WWW服务器等)静态绑定固定的IP地址。通过DHCP将配置的固定IP地址发给客户端。
自动分配地址:DHCP为客户端分配租期为无限长的IP地址。
动态分配地址:DHCP为客户端分配具有一定有效期限的IP地址,到达使用期限后,客户端需要重新申请地址。绝大多数客户端得到的都是这种动态分配的地址。

IP地址的租约更新

如果采用动态地址分配策略,则DHCP服务器分配给客户端的IP地址有一定的租借期限,当租借期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP地址租约。

在DHCP客户端的IP地址租约期限达到一半时间时,DHCP客户端会向为它分配IP地址的DHCP服务器单播发送DHCP-REQUEST报文,以进行IP租约的更新。如果客户端可以继续使用此IP地址,则DHCP服务器回应DHCP-ACK报文,通知DHCP客户端已经获得新IP租约;如果此IP地址不可以再分配给该客户端,则DHCP服务器回应DHCP-NAK报文,通知DHCP客户端不能获得新的租约。

如果在租约的一半时间进行的续约操作失败,DHCP客户端会在租约期限达到7/8时,广播发送DHCP-REQUEST报文进行续约。DHCP服务器的处理方式同上,不再赘述。

DHCP有8种类型的报文,每种报文的格式相同,只是某些字段的取值不同。DHCP报文格式基于BOOTP的报文格式,具体格式如图1-3所示(括号中的数字表示该字段所占的字节)。
各字段的解释如下:

l              op:报文的操作类型,分为请求报文和响应报文,1为请求报文;2为响应报文。具体的报文类型在option字段中标识。

l              htype、hlen:DHCP客户端的硬件地址类型及长度。

l              hops:DHCP报文经过的DHCP中继的数目。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。

l              xid:客户端发起一次请求时选择的随机数,用来标识一次地址请求过程。

l              secs:DHCP客户端开始DHCP请求后所经过的时间。目前没有使用,固定为0。

l              flags:第一个比特为广播响应标识位,用来标识DHCP服务器响应报文是采用单播还是广播方式发送,0表示采用单播方式,1表示采用广播方式。其余比特保留不用。

l              ciaddr:DHCP客户端的IP地址。

l              yiaddr:DHCP服务器分配给客户端的IP地址。

l              siaddr:DHCP客户端获取IP地址等信息的服务器IP地址。

l              giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。

l              chaddr:DHCP客户端的硬件地址。

l              sname:DHCP客户端获取IP地址等信息的服务器名称。

l              file:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。

l              options:可选变长选项字段,包含报文的类型、有效租期、DNS服务器的IP地址、WINS服务器的IP地址等配置信息。

DHCP常用选项介绍

常见的DHCP选项有:

l              Option 3:路由器选项,用来指定为客户端分配的网关地址。

l              Option 6:DNS服务器选项,用来指定为客户端分配的DNS服务器地址。

l              Option 51:IP地址租约选项。

l              Option 53:DHCP消息类型选项,标识DHCP消息的类型。

l              Option 55:请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。

l              Option 66:TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名。

l              Option 67:启动文件名选项,用来指定为客户端分配的启动文件名。

l              Option 150:TFTP服务器地址选项,用来指定为客户端分配的TFTP服务器的地址。

l              Option 121:无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。

l              Option 33:静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在Option 121,则忽略该选项。

猜你喜欢

转载自sharp2wing.iteye.com/blog/1477956