今天给大家讲解一下DHCP的原理和技术细节。本文从DHCP基本原理、实现流程和DHCP重启后的流程和租约和续约机制三个方面对DHCP进行了全方位的讲解,基本上涵盖了DHCP的全方面。
一、DHCP基本原理
DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种可以使主机开机后自动获取IP地址、子网掩码、DNS等信息的技术手段。应用DHCP技术,不仅可以简化用户的上网流程,方便用户上网,如果从企业的角度来说,还可以实现对公司内部网络用户的管理。
DHCP是一种C/S模式的网络协议,要想实现DHCP功能,首先主机必须支持DHCP Client功能,其次网络中还必须拥有一台DHCP服务器,并且主机和该服务器之间必须能够正常通信。因为DHCP中有些报文时以广播的形式,因此DHCP Server和DHCP Client一般必须要在一个子网内。(后面我们会讲到,如果确实不在一个网段,还可以配置DHCP中继来解决这个问题)
DHCP服务器,既可以是一台主机,华为和思科系列路由交换设备也可以实现DHCP服务器功能。
DHCP使用UDP协议实现通信,网络层协议号字段为0x11,DHCP Client端口号68,DHCP Server端口67。
二、DHCP实现流程
DHCP实现流程一共有4个阶段,具体如下图所示:
(一)发现阶段
当主机刚刚开机运行,此时他不知道此时网络中是否存在DHCP服务器,DHCP服务器是谁,因此它必须首先确定网络中的DHCP服务器身份。因此,新上线主机会发送DHCP Discover报文, 该报文是一个广播报文,源IP地址为0.0.0.0,目的IP地址为255.255.255.255。源MAC地址为自己的MAC地址,目的MAC地址为ffff-ffff-ffff。该报文会在二层网络中洪泛,因此如果网络中存在DHCP服务器,则DHCP服务器会收到该报文。
(二)提供阶段
当网络中的DHCP服务器收到了DHCP Client发送的DHCP报文后,DHCP就进入了提供阶段。在这个阶段,DHCP Server会根据管理员的相关配置,给DHCP Client提供一个可用的IP地址,同时给其提供DNS、子网掩码等信息。
DHCP Server会发送DHCP Offer信息给DHCP Client提供上述信息,该报文也是一个广播报文,源IP地址为DHCP Server的IP地址,目的IP地址为DHCP Server给该DHCP Client分配的IP地址,源MAC地址为DHCP Server的MAC地址,目的MAC地址为DHCP Client的MAC地址。(注,在这里有的设备上DHCP Offer报文也是广播,其实也能够实现DHCP的功能)
(三)请求阶段
在DHCP Client收到DHCP Server发送的DHCP Offer报文后,就进入了DHCP请求阶段,在DHCP请求阶段,DHCP已经得到了DHCP Server分配给它的IP地址,DHCP Client在得到该IP地址后,却不会马上使用,DHCP Client会向DHCP Server发送DHCP Request报文,正式向DHCP Server申请使用该IP地址。
DHCP Request报文,源IP地址为0.0.0.0(因为这时还没有得到DHCP服务器的回应,因此此时这个IP地址还不能正常使用,因此在这里源IP地址还是0.0.0.0)。目的地址为255.255.255.255。(注:在这里其实DHCP Client其实已经知道了DHCP Server的IP地址,因此其实这里使用DHCP Server的IP地址其实也是可以的,因此,有些设备对此做了优化,因为这样可以减少网络中的广播洪范流量)源MAC和目的MAC地址分别是DHCP Client的和DHCP Server的MAC地址。
(四)确认阶段
当DHCP Server收到DHCP Client发送的DHCP Request报文后,DHCP进入确认阶段。DHCP Server会向DHCP Client发送DHCP Reply报文,表示同意DHCP Client使用该IP地址。
DHCP Reply报文(有时也被称为DHCP ACK报文),源IP地址为DHCP Server的IP地址,目的IP地址为DHCP Client的IP地址,源目MAC为DHCP Server和Client的MAC地址。
三、重启PC后的DHCP过程及DHCP续约机制
(一)重启PC后的DHCP过程
目前,PC机对于DHCP有记忆功能,会记住当前网络中DHCP服务器的IP地址和上次分配给自己的IP地址。因此,当PC重启后,通常不会按照上述的4个步骤按部就班的申请IP地址,而是通常会直接进入第三个阶段,直接向DHCP Server发送DHCP Request报文,请求自己上一次获得的IP地址。如果DHCP同意,则会回应DHCP Reply报文,如果该IP地址已经被占用,或者其他情况造成DHCP Server不把该IP地址分配给DHCP Client,则DCHP Server会回应DHCP NACK报文,表示拒绝。这时,PC就必须重新进行DHCP四个阶段。
(二)DHCP续约机制
DHCP存在租约和续约机制,在默认情况下,当PC机申请到一个DHCP地址后,使用时间为一天,管理员也可以手动修改该时间,最短为1小时。当PC申请的DHCP IP地址到达租约时间后,该IP地址就不可以继续使用,因此PC会在租约到期之前进行续约。
通常情况下,DHCP Client会进行两次续约,一次是在租约期的50%时候,DHCP Cient会向DHCP Server发送DHCP Reqruest报文,如果收到DHCP Server的回应,则续约成功。第二次续约是在租约期的87.5%的时候,DHCP会再次向DHCP Server发送DHCP Request报文,申请租约。如果此时仍为收到DHCP响应的DCHP ACK报文,则就必须要重新进行DHCP的四个阶段,重新申请IP地址。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118858510