设为首页收藏本站language 语言切换
查看: 1315|回复: 2
收起左侧

[原创] DHCP详解和实验

[复制链接]
发表于 2020-11-11 14:09:10 | 显示全部楼层 |阅读模式
       DHCP,DynamicHost Configuration Protocol,动态主机配置协议,用来集中管理、分配IP地址,使网络环境中的主机能够动态获取IP地址、网关地址、DNS服务器地址等信息。DHCP采用客户端+服务器模式,端口号:客户端为68(中继模式下67),服务器端为67,其前身有RARP和Bootstrap。

       相比较RARP和Bootstrap,DHCP能够实现有以下优点:即插即用,很灵活;通过在TLV字段中添加多种option字段,能够获取更多的信息;延时低,效率高(低于30S);配置量小;集中管理,保证地址的唯一性;移动性强



DHCP工作流程


1.寻找DHCP Server


       当DHCP Client第一次登陆网络的时候(没有任何IP地址等相关信息信息),以广播的形式通过UDP67端口向网络中发出DHCP Discover数据包(包含本机MAC和计算机名等信息)。封包的内容包含源地址0.0.0.0,目标地址为255.255.255.255,以及DHCP discover的信息
       DHCP discover的等待时间预设为1秒,也就是当客户机将第一个DHCP discover封包送出去之后,在1秒之内没有得到回应的话,就会进行第二次DHCP discover广播。若一直没有得到回应,客户机会将这一广播包重新发送四次(以2,4,8,16秒为间隔,加上1-1000毫秒之间随机长度的时间)。如果都没有得到DHCP Server的回应,客户机会从169.254.0.0/16这个自动保留的私有IP地址中选用一个IP地址。并且每隔5分钟重新广播一次,如果收到某个服务器的响应,则继续IP租用过程
DHCP-2.png


2.提供IP地址租用
       该网络中所有的DHCP Server都会接收和处理该DHCPDiscover报文,Server会从那些还没有租出去的地址中,选择最前面的空置IP,连同其它TCP/IP设定,通过UDP68端口响应给客户机一个DHCP OFFER数据包(包中包含IP地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址
       由于客户机在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP Server响应的DHCP OFFER封包则会根据这些资料传递给要求租约的客户option54字段中标注Server的地址。并记录已经分配的Client地址

DHCP-3.png



3. 接受IP租约
       Client端会收到所有的Offer报文,但是只会处理一个Offer报文,一般是处理最先到达的,并且会向网络发送一个DHCP REQUEST广播数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP Server它将接受哪一台服务器提供的IP地址,所有其他的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播
       在Request报文中,option54报文和option 50报文,会告诉所有DHCPServer,客户端将使用哪一个Server服务器,已及自己的地址
DHCP-4.png

4.租约确认
       DHCP Server收到DHCP Request报文后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机
DHCP-5.png

客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS
如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯 DHCP-6.png



在上文中提到过DHCP提供的地址信息中,会包含地址租期,Server和Client是如何处理租期续约的呢?
客户机会在租期过去50%的时候,直接向为其提供IP地址的DHCPServer发送DHCP REQUEST消息包。如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%
如果在租期过去50%的时候没有更新,则客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP联系。如果还不成功,到租约的100%时候,客户机必须放弃这个IP地址,重新申请。如果此时无DHCP可用,客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试

实验拓扑
DHCP-7.png

最后添加Decline说明:当客户端得到ip地址后,通过ARP检查是否有冲突的地址,如果检测到冲突,则会通过Decline报文告知DHCP服务器,同时,重新通过Discover、Offer、Request、ACK获取新的ip地址
DHCP-8.png   





DHCP-1.png
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-5-14 04:09 , Processed in 0.154110 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表