请问DHCP的工作原理是什么?
整个过程:
1
DHCP请求IP地址的过程
l
发现阶段,即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCPDISCOVER包,只有DHCP服务器才会响应。
l
提供阶段,即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCPDISCOVER报文后,从IP地址池中选择一个尚未分配的IP地址分配给客户端,向该客户端发送包含租借的IP地址和其他配置信息的DHCPOFFER包。
l
选择阶段,即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发送DHCPOFFER包,客户端从中随机挑选,然后以广播形式向各DHCP服务器回应DHCPREQUEST包,宣告使用它挑中的DHCP服务器提供的地址,并正式请求该DHCP服务器分配地址。其它所有发送DHCPOFFER包的DHCP服务器接收到该数据包后,将释放已经OFFER(预分配)给客户端的IP地址。
如果发送给DHCP客户端的DHCPOFFER包中包含无效的配置参数,客户端会向服务器发送DHCPCLINE包拒绝接受已经分配的配置信息。
l
确认阶段,即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCPREQUEST包后,便向客户端发送包含它所提供的IP地址及其他配置信息的DHCPACK确认包。然后,DHCP客户端将接收并使用IP地址及其他TCP/IP配置参数。
2
DHCP客户端续租IP地址的过程
l
DHCP服务器分配给客户端的动态IP地址通常有一定的租借期限,期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP租约。实际使用中,在IP地址租约期限达到一半时,DHCP客户端会自动向DHCP服务器发送DHCPREQUEST包,以完成IP租约的更新。如果此IP地址有效,则DHCP服务器回应DHCPACK包,通知DHCP客户端已经获得新IP租约。
如果DHCP客户端续租地址时发送的DHCPREQUEST包中的IP地址与DHCP服务器当前分配给它的IP地址(仍在租期内)不一致,DHCP服务器将发送DHCPNAK消息给DHCP客户端。
3
DHCP客户端释放IP地址的过程
l
DHCP客户端已从DHCP服务器获得地址,并在租期内正常使用,如果该DHCP客户端不想再使用该地址,则需主动向DHCP服务器发送DHCPRELEASE包,以释放该地址,同时将其IP地址设为0000。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:
1 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2 DHCP应当可以给用户分配永久固定的IP地址。
3 DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
4 DHCP服务器应当向现有的BOOTP客户端提供服务。
DHCP四种报文数据包
一、discover
二、offer
三、request
四、ack
DHCP租约过程就是DHCP客户机动态获取IP地址的过程。
DHCP租约过程分为4步:
①客户机请求IP(客户机发DHCPDISCOVER广播包);
②服务器响应(服务器发DHCPOFFER广播包);
③客户机选择IP(客户机发DHCPREQUEST广播包);
④服务器确定租约(服务器发DHCPACK/DHCPNAK广播包)。
详解4步租约过程:
第1步:客户机请求IP
客户机请求IP也称为DHCPDISCOVER。
当一个DHCP客户机启动时,会自动将自己的IP地址配置成0000,由于使用0000不能进行正常通信,所以客户机就必须通过DHCP服务器来获取一个合法的地址。由于客户机不知道DHCP服务器的IP地址,所以它使用0000的地址作为源地址,使用UDP68端口作为源端口,使用255255255255作为目标地址,使用UDP67端口作为目的端口来广播请求IP地址信息(见图一)。广播信息中包含了DHCP客户机的MAC地址和计算机名,以便使DHCP服务器能确定是哪个客户机发送的请求。
DHCP客户机总是试图重新租用它接收过的最后一个IP地址,这给网络带来一定的稳定性。
第2步:服务器响应
服务器响应也称为DHCPOFFER。
当DHCP服务器接收到客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机。如果有,DHCP服务器就将此IP地址做上标记,加入到DHCPOFFER的消息中,然后DHCP服务器就广播一则包括下列信息的DHCPOFFER消息:
DHCP客户机的MAC地址;DHCP服务器提供的合法IP地址;子网掩码;默认网关(路由);租约的期限;DHCP服务器的IP地址。
因为DHCP客户机还没有IP地址,所以DHCP服务器使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255255255255作为目标地址,使用UDP68端口作为目的端口来广播DHCPOFFER信息
第3步:客户机选择IP
客户机选择IP,也称为DHCPREQUEST。
DHCP客户机从接收到的第一个DHCPOFFER消息中选择IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能提供给另一个DHCP客户机。当客户机从第一个DHCP服务器接收DHCPOFFER并选择IP地址后,DHCP租约的第三过程发生。客户机将DHCPREQUEST消息广播到所有的DHCP服务器,表明它接受提供的内容。DHCPREQUEST消息包括为该客户机提供IP配置的服务器的服务标识符(IP地址)。DHCP服务器查看服务器标识符字段,以确定它自己是否被选择为指定的客户机提供IP地址,如果那些DHCPOFFER被拒绝,则DHCP服务器会取消提供并保留其IP地址以用于下一个IP租约请求。
在客户机选择IP的过程中,虽然客户机选择了IP地址,但是还没有配置IP地址,而在一个网络中可能有几个DHCP服务器,所以客户机仍然使用0000的地址作为源地址,使用UDP68端口作为源端口,使用255255255255作为目标地址,使用UDP67端口作为目的端口来广播DHCPREQUEST信息
第4步:服务器确认租约
服务器确认租约,也称为DHCPACK/DHCPNAK。
DHCP服务器接收到DHCPREQUEST消息后,以DHCPACK消息的形式向客户机广播成功的确认,该消息包含有IP地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的DHCPACK消息,所以服务器仍然使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255255255255作为目标地址,使用UDP68端口作为目的端口来广播DHCPACK信息(见图四)。当客户机收到DHCPACK消息时,它就配置了IP地址,完成了TCP/IP的初始化。
如果DHCPREQUEST不成功,例如客户机试图租约先前的IP地址,但该IP地址不再可用,或者因为客户机移到其他子网,该IP无效时,DHCP服务器将广播否定确认消息DHCPNAK。当客户机接收到不成功的确认时,它将重新开始DHCP租约过程。
如果DHCP客户机无法找到DHCP服务器,它将从TCP/IP的B类网段16925400中挑选一个IP地址作为自己的IP地址,继续每隔5分钟尝试与DHCP服务器进行通讯,一旦与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而使用DHCP服务器分配的IP地址。
如果一台DHCP客户机有两个或者多个网卡,则DHCP服务器会为每个网卡分配一个唯一而有效的IP地址。
你好!
1client发送dhcp
discover,
2DHCP服务器发送dhcp
offer,
3client发送dhcp
request,
4DHCP服务器发送dhcp
ack。
或者这么说,DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。
如果对你有帮助,望采纳。
1 客户端向网络当中发送一个DHCP DISCOVER数据包,等待DHCP服务器回应。这个包叫DHCP发现包。
2 当网络中的DHCP服务器受到了来自客户端的数据包后,会向客户端回复一个DHCP OFFER包,其中就包括了将要分配的IP地址的信息。这个包叫DHCP提供包。
3 客户端受到了来自服务器的数据包之后,会向服务器发送一个DHCP REQUEST包,请求使用此IP地址。这个包叫DHCP请求包。
4 服务器收到了来自客户端的请求之后,会向客户端回应一个DHCP ACK包,对客户端的请求加以确认,这个包叫DHCP确认包。
至此首次租约过程完毕。
注:这四个包全部都是广播包。
DHCP报文是封装在UDP报文中的。
UDP报文封装在IP报文里,IP报文封装在以太网报文里。
典型的DHCP过程是这样的:
1:客户机向服务器发送DHCP_DISCOVER报文,申请IP。
2:服务器向客户机返会DHCP_OFFER报文,指定一个将要分配的IP。
3:客户机向服务器发送DHCP_REQUEST报文,请求这个IP。
4:服务器PING几次(一般是3次)这个IP,如果没得到响应的话,就说明这个IP现在空闲,可以分配给客户机,所以向客户机发送DHCP_ACK报文,确认可以分配。如果得到相应,则发送DHCP_NAK报文,拒绝分配。
5:如果客户端收到DHCP_ACK,责发送一次免费ARP,判断这个IP是否已经被用。没有被用的话则绑定这个服务器分配来的IP,否则向服务器发送DHCP_DECLINE报文,拒绝这次分配。并重新执行第一步。
如果收到的是DHCP_NAK,则直接重新执行第一步。
大概过程是这样的,还有不明白的话再补充一下问题~
-----------------------------------------------------------
DHCP是应用层协议,UDP是传输层协议,IP是网络层协议,以太网是链路层协议。
数据在网络上传输的时候要自顶向下逐层封装的,关于这部份知识你可以参考一下TCP/IP分层模型。
客户机申请IP之前确实没有IP,DHCP_DISCOVER报文都是以广播形式发送的,IP头里的目的地址是255255255255,源地址是0000。
链路层目的地址是FF-FF-FF-FF-FF-FF,源地址是自己的mac地址。
这样服务器收到客户端发来的DISCOVER报文之后,会根据源mac地址向客户机发送单播的DHCP_OFFER报文。
当作为DHCP客户端的计算机启动时,将从DHCP服务器获得其TCP/IP配置信息,并得到IP地址的租期,即使用时间。一个设置为“自动获取地址”的计算机从DHCP服务器上获取IP地址的过程如下:
(1)DHCP客户端计算机启动后,如果客户端发现本机上没有任何IP地址等相关参数,会使用0000作为自己的IP地址,255255255255作为服务器的地址,广播发送包括网卡的MAC地址和NetBIOS名称的DHCP发现信息。
当发送第一个DHCP发现信息后,DHCP客户端将等待1秒。在此期间,如果没有DHCP服务器响应,DHCP客户端将分别在第9秒、第13秒和第16秒时重复发送一次DHCP发现信息。如果仍然没有得到DHCP服务器的应答,客户端则会显示错误信息,并从Microsoft保留IP地址段(16925401~169254255254)自动选择一个地址,并设置子网掩码为25525500。以后,系统会继续每隔5分钟广播一次发现信息,直到得到一个应答为止。
(2)当网络中的任何一个DHCP服务器(同一网络中可存在多个DHCP服务器)在收到DHCP客户端的DHCP发现信息后,就从IP地址池中选取一个没有出租的IP地址连同其他TCP/IP网络配置(包括子网掩码、网关地址、租用期、DNS地址、WINS服务器地址、提供响应的DHCP服务器的IP地址等),然后利用广播方式提供给DHCP客户端。
(3)当DHCP客户端收到应答信息后,将以广播方式向网络中所有的DHCP服务器发送DHCP请求信息(在DHCP请求信息中包含有所选择的DHCP服务器的IP地址),既通知它已选择的DHCP服务器,也通知其他DHCP服务器,以便释放它们保留的IP地址。
同时,客户端还会向网络发送一个ARP(Address Resolution Protocol,地址解析协议)包,查询网络上面有没有其他机器使用该IP地址;如果发现该IP地址已经被占用,客户端则会送出一个DHCPDISCOVER数据包给DHCP服务器,拒绝接受其DHCPDISCOVER,并重新发送DHCPDISCOVER信息。
(4)一旦被选择的DHCP服务器接受到DHCP客户端的DHCP请求信息后,就将已保留的IP地址标识为已租用,并以广播方式发送一个DHCP应答信息给DHCP客户端,以确认IP租约的正式生效。
以上过程可简单地概括为发现、提供、DHCP请求、DHCP应答
0条评论