动态主机配置协议(DynamicHostConfigurationProtocol)详解

文章目录

什么是DHCPDHCP协议DHCP报文种类DHCP报文格式DHCP工作流程IP地址分配方式租约表工作流程服务器处理流程

什么是DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

DHCP协议

DHCP报文种类

DHCP一共有8中报文,各种类型报文的基本功能如下:

报文类型说明

DHCP报文格式

动态主机配置协议(DynamicHostConfigurationProtocol)详解op:报文的操作类型。分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。应答报文:DHCP Offer、DHCP ACK和DHCP NAK。htype:DHCP客户端的MAC地址类型。MAC地址类型其实是指明网络类型。htype值为1时表示为最常见的以太网MAC地址类型。hlen:DHCP客户端的MAC地址长度。以太网MAC地址长度为6个字节,即以太网时hlen值为6。hops:DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。(若数据包需经过router传送,每站加1,若在同一网内,为0。)xid:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。secs:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。(DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)flags:标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)注意:在客户端正式分配了IP地址之前的第一次IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文,以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。当然,如果是由DHCP中继器转的报文,则都是以单播方式发送的。另外,IP地址续约、IP地址释放的相关报文都是采用单播方式进行发送的。ciaddr:DHCP客户端的IP地址。仅在DHCP服务器发送的ACK报文中显示,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。在其他报文中均显示,只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。yiaddr:DHCP服务器分配给客户端的IP地址。仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。siaddr:下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。(用于bootstrap过程中的IP地址)一般来说是服务器的ip地址.但是注意!根据openwrt源码给出的注释,当报文的源地址、siaddr、option­>server_id字段不一致(有经过跨子网转发)时,通常认为option­>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ipgiaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。如果没有经过DHCP中继,则显示为0。(转发代理(网关)IP地址)chaddr:DHCP客户端的MAC地址。在每个报文中都会显示对应DHCP客户端的MAC地址。sname:为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式)。在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。file:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。仅在DHCP Offer报文中显示,其他报文中显示为空。options:可选项字段,长度可变,格式为”代码+长度+数据”。代码长度(字节)说明

DHCP工作流程

IP地址分配方式

DHCP SERVER负责接收客户端的DHCP请求,集中管理所有客户机的IP地址设定资料,并负责处理客户端的DHCP请求,相比于BOOTP,DHCP通过租约来实现动态分配IP的功能,实现IP的时分复用,从而解决IP资源短缺的问题。

其地址分配方式有如下三种

人工配置:由管理员对每台具体的计算机指定一个地址自动配置:服务器为第一次连接网络的计算机分配一个永久地址,DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址动态配置:在一定的期限内将地址租给计算机,客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,并且租期结束后客户必须续租或者停用该地址,而对于路由器,经常使用的地址分配方式是动态配置。

租约表

静态租约表:对应一个静态租约存储文件,server运行时从文件中读取静态租约表。动态租约表:对应一个周期存储文件,server周期性将租约表存进该文件,在程序开始时将会读取上次存放的租约表。(租约表记录了当前所有分配的租约,包括静态链接的)。DHCP服务器是一直处在被动接受请求的状态,当有客户端请求时,服务器会读取获得客户端当前所在的状态以及客户端的信息,并在静态租约表和动态租约表中进行检索找到相应的表项,再根据客户端的状态执行不同的回复。当收到客户端的首次请求时,DHCP服务器先查找静态租约表;若存在请求的表项,返回这个客户的静态IP地址;否则,从IP地址池中选择可用的IP分配给客户,并添加信息到动态数据库中。此外,服务器将会周期性的刷新租约表写入文件存档,在这个过程中会顺便对动态租约表进行租期检查。

工作流程

客户端登陆网络:

动态主机配置协议(DynamicHostConfigurationProtocol)详解客户机初始化 & 寻找DHCP服务器(DHCP Discover):DHCP客户端启动时,计算机发现本机上没有任何IP地址设定,将以广播方式通过UDP 67端口发送DHCP Discover发现信息来寻找DHCP服务器,因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0目的地址为255.255.255.255,向网络发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。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租用过程。动态主机配置协议(DynamicHostConfigurationProtocol)详解分配IP地址 & 提供IP地址租用(DHCP Offer):DHCP服务器收到客户端发出的DHCP discover广播后,通过解析报文,查询dhcpd.conf配置文件。它会从那些还没有租出去的地址中,选择最前面的空置IP,连同其它TCP/IP设定,通过UDP 68端口响应给客户端一个DHCP offer数据包(包中包含IP地址、子网掩码、地址租期等信息)。告诉DHCP客户端,该DHCP服务器拥有资源,可以提供DHCP服务。此时还是使用广播进行通讯,源IP地址为DHCP服务器的IP地址,目标地址为255.255.255.255。同时,DHCP服务器为此客户端保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。由于客户端在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP服务器响应的DHCP offer封包则会根据这些资料传递给要求租约的客户。动态主机配置协议(DynamicHostConfigurationProtocol)详解接受IP地址 & 接受IP租约(DHCP Request):DHCP客户端接受到DHCP offer提供信息之后,如果客户机收到网络上多台DHCP服务器的响应,一般是最先到达的那个,然后以广播的方式回答一个DHCP request数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等)。告诉所有DHCP服务器它将接受哪一台服务器提供的IP地址,所有其他的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP服务器的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。事实上,并不是所有DHCP客户端都会无条件接受DHCP服务器的offer,特别是如果这些主机上安装有其它TCP/IP相关的客户机软件。客户端也可以用DHCP request向服务器提出DHCP选择,这些选择会以不同的号码填写在DHCP Option Field里面。客户机可以保留自己的一些TCP/IP设定。动态主机配置协议(DynamicHostConfigurationProtocol)详解IP地址分配确认 & 租约确认(DHCP Ack):当DHCP服务器接收到客户机的DHCP request之后,会广播返回给客户机一个DHCP ack消息包,表明已经接受客户机的选择,告诉DHCP客户端可以使用它提供的IP地址。并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。客户端在接收到DHCP ack广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP decline数据包给DHCP服务器,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。动态主机配置协议(DynamicHostConfigurationProtocol)详解

客户端重新登录:

动态主机配置协议(DynamicHostConfigurationProtocol)详解重新登录:以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户端使用时,则DHCP服务器给DHCP客户端回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。动态主机配置协议(DynamicHostConfigurationProtocol)详解动态主机配置协议(DynamicHostConfigurationProtocol)详解

客户端离线:

动态主机配置协议(DynamicHostConfigurationProtocol)详解更新租约:DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。客户端会在租期过去50%的时候,直接向为其提供IP地址的DHCP服务器发送DHCP request消息包。如果客户端接收到该服务器回应的DHCP ack消息包,客户端就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户端继续使用现有的IP地址,因为当前租期还有50%。如果在租期过去50%的时候没有更新,则客户端将在租期过去87.5%的时候再次向为其提供IP地址的DHCP联系。如果还不成功,到租约的100%时候,客户端必须放弃这个IP地址,重新申请。如果此时无DHCP可用,客户端会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。

服务器处理流程

DHCP OFFER

静态租用:首先匹配MAC地址,看是否能在静态租约表中找到对应的项,若能找到就把IP分配给他。静态表中的IP不能被其他客户使用。动态租用:服务器试图分配给客户端上次分配过的IP,在这之前检查这个IP是否正在使用。DHCP discover中含有request ip时,检查该IP是否在地址池范围,是否正在使用,是否到期,是否是静态IP,网络上是否已经存在。DHCP discover不含request ip,从地址池上寻找一个最小的可用IP分配。

DHCP ACK

根据是否含有request ip和server ip识别客户端现在init_reboot,selecting,renewing/rebinding中的哪个状态,并根据以下规则执行DHCPACK回复:若客户端处于selecting状态,验证request ip和server ip是否同服务器中的匹配。若客户端处于init_reboot状态,验证request ip是否符合租约记录。若客户端处于renewing/rebinding状态,验证client ip是否符合租约记录。

DHCP NAK

请求的IP是静态IP,但是MAC地址无法与其对应。上面DHCPACK中验证失败。

服务器还可能会收到其他包

DHCP DECLINE:服务器会把租约表中相关client硬件地址置空,并保存这个地址一段时间。DHCP RELEASE:清空租期回收IP。DHCP INFORM:回复DHCPACK,数据包含有关于server的信息。

四,DHCP starvation attack1,DHCP starvation attack,DHCP饥饿攻击其实各种各样的攻击技术总是会让人觉得兴奋。抛却道德不谈,必须承认的是,制造这些攻击的人都是高智商。有许多中攻击DHCP的技术,这里介绍其中一种,有点类似于SYN 洪范攻击。DHCP starvation attack,中文即DHCP饥饿攻击,可以顾名思义一下,饥饿攻击,就是大量地进食,把可以吃的食物全部吃完,然后让其他人没得吃,最后给其他人提供一些毒药,把人家毒死,姑且可以这样浅显地认为。下面来说这种攻击是如何实现的。一些不法分子,伪造合法的MAC地址,不断地向DHCP服务器发出DHCP Request包,最后耗尽服务器的可用IP,于是原有的这台DHCP服务器便不能够给客户端分配IP了,此时不法分子再伪造一台DHCP服务器,给客户端分配IP,将客户端的默认网关和DNS都设置成自己的机器,于是便可以对客户端进行中间人攻击。2,一些关于DHCP安全性的研究网络到处都有安全漏洞啊,上网需谨慎。现在有很多关于DHCP安全的研究,一些论文提出了诸如四元组安全认证的办法,还有一些论文提出了安全DHCP协议。例如这篇论文《A Secure DHCP Protocol to Mitigate LAN Attacks》,这算是一篇比较新的论文了,16年发表的,作者提出了2种技术,一种是认证和秘钥管理技术,另一种是消息认证技术(利用数字信号认证Server和Client端的交互信息),可以减轻LAN Attack。尴尬的是,我英文不是很好,并没有把这篇论文看完。。。DHCP优缺点:DHCP实际是一种动态的机制,它允许客户机在启动引导时请求一个地址,并且有一个集中的库来记录这些名称及地址。DHCP 能够自动完成系统管理的地址管理工作的部分。只要我们将一台 Windows NT Server/Workstation 计算机配置为使用 DHCP 时,就不再需要我们手工来管理文本文件中大量的网络名称及地址了。因为我们不再分配一个固定的地址给某个计算机,这样,如果要移动网络中的一台计算机,包括添加或移走以及更换网卡等硬件设备,在新的位置,甚至新的局域网系统中,该工作站计算机都会自动寻找 到新网络中的 DHCP 服务器,然后在一定的时间间隔后自动获得一个地址。优点:网络管理员可以验证IP地址和其他配置参数,而不用去检查每个主机:DHCP不会同时分配相同的IP地址给两台主机:DHCP管理员可以约束特定的计算机使用特定的IP地址:可以为每个DHCP作用域设置很多选项:客户机在不同子网间移动时不需要重新设置IP地址。缺点:1.DHCP不能查出网络上非DHCP客户机已经在使用的IP地址,例如网络有一非DHCP客户机A已经手工分配了IP地址:100.53.46.5,但是DHCP服务器并不能识别出该地址已经被分配了,它向DHCP客户机配了一个重复的IP地址:100.53.46.5,这就导致了IP地址的冲突。当然,这些IP地址可以从被配置在DHCP服务器上的任何范围中排除。2.当网络上存在两个DHCP服务器时,一个DHCP服务器不和另一个DHCP服务器通信,就不能查出已被其他服务器租出去的IP地址。因此,两个DHCP服务器不应该在它们各自的范围中使用相同的IP地址。此外,DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发,或者子网允许DHCP中转借。

本文由 哥弟网 原创,转载请注明出处:http://www.gdnhd.com/10217.html

(0)
上一篇 2022年7月21日 上午5:14
下一篇 2022年7月21日 上午5:15

相关推荐

  • 华安张江REIT一季度亏损607万元 管理人称不影响可供分配金额

    近日,建信中关村REIT、华安张江光大园REIT(以下简称华安张江REIT)、中航首钢REIT及华夏越秀高速REIT公布2022年一季度报。根据报告,四只REITs中除华安张江REIT出现季内净利润亏损607.52万元外,其余全部盈利。这几只REITs产品在入市时都以低配售比见证了投资者的热情。 2021年6月21日,9只基础设施REITs产品上市交易,公募…

    行业 2022年4月27日
    17800
  • 行业透视​房企入局保障性租赁住房的机会

    ◎  作者/ 沈晓玲、羊代红 ■■■ 自去年7月国务院发布《关于加快发展保障性租赁住房的意见》以来,保障性租赁住房上升国家战略,住建部表示十四五时期40个重点城市计划新增保障性租赁住房650万套(间),其中,2021年40个城市共筹集保障性租赁住房94.2万套,超额完成93.6万套的筹集计划。在此情况下,房企切入保租房建设,有什么机会呢? 保租房可…

    2022年7月18日
    2900
  • 动态清零就是影响经济?吴尊友发文详解误解

    4月18日晚,中国疾控中心流行病学首席专家吴尊友发布微博,详解动态清零及相关误解,要点如下: 动态清零的根本宗旨就是发现一起疫情,扑灭一起疫情,不让疫情在当地生根。 在没有本地的持续传播新冠疫情、且本地新冠疫情主要来自境外传入的情况下,动态清零策略是最佳选择。 动态清零的核心就是斩断传播链。主要措施包括早发现、早报告、早隔离、早治疗,即所谓四早措施。 动态清…

    2022年7月20日
    2000
  • 一周之内,如何快速摸清一个行业?

    老李我做数据分析10多年,对行业壁垒非常认同,分析不同行业的数据基本上就是得从头了解,毕竟数据分析就是在做业务。 一周内大概了解是没什么问题的,但是摸清几乎不可能,所以这里的方法论只能让你了解个大概,然后在此基础上去拓展深化,如果有人跟你说,他的答案可以做到摸清,那最好擦亮眼睛。 话不多说,进入正题。 一、行业数据 在了解一个行业前,我们肯定得找到数据、看数…

    2022年7月17日
    3900
  • 人民日报:“躺平”没有出路,“动态清零”才是最佳方案

    当前,全球新冠肺炎疫情仍然十分严重,我国疫情仍在高位运行,波及影响范围依然很大。世界卫生组织近日公布的数据显示,全球累计新冠确诊病例已超5亿例。越是在这样的时候,越要更加清醒地认识到,躺平没有出路,动态清零才是最佳方案。 应该说,随着新冠病毒疫苗的接种比例越来越高,人群对新冠病毒的免疫力不断提高,感染者的临床严重性按照每百名发病人数的比例统计,确实有所下降。…

    2022年7月20日
    1300

发表评论

您的电子邮箱地址不会被公开。

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信