文章目录
1.DHCP是什么?
DHCP(动态主机配置协议)是一个局域网的网络协议。
主要工作在应用层的局域网的网络协议,数据传输时使用UDP不可靠传输协议,通常运用在大型局域网。
主要是集中管理(限速、限时)、分配网络资源,使网络中的主机能动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
当很多新的服务器整体装机就是无人执守自动部署时,每个机器都需要一个ip,这时就使用dhcp分配ip就可以进行整体装机。
2.DHCP工作原理
2.1 建立租约
给需要ip地址的服务器分配一个ip地址,当服务器不使用了之后,就会将ip收回来。
通过下图来解释:
- 当客户端出现在网络中,没有ip地址,是没法和其他人正常通信的。他的通信方式是向他所再的局域网把数据包广播。
- 广播一个ip地址的请求:DHCP Discover(寻找)
- 当局域网中含有一个dhcp服务器时,服务器会给客户端一个DHCP Offer。
- 客户机接收到offer后,会给第一个给他发送offer的服务器广播发送DHCP Request(表示:我要你分配,也告诉了其他服务器,不需要他们分配)
- 当服务器收到Request之后,发送了DHCP ACK(表示可以给你分配)
- 如果服务器收到Request之后,回复了DHCP NAK就表示,这里已经没有多余的IP可以给你分配了。
- 如果没有分配成功,就从头再来,重新找一个DHCP服务器,请求ip资源。
接下来我们进行详细解释:
2.1.1 DHCP客户端进行IP请求
当一台服务器启动之后,没有对应的ip地址,他会先把0.0.0.0作为自己的ip地址,但时0.0.0.0不能作为核发的ip进行通信,所以客户机就必须通过DHCP服务器来获取一个合法的IP地址。
由于客户机DHCP的ip地址,所以他使用0.0.0.0的地址作为源地址,使用255.255.255.255(能够工作的任意IP地址)作为目标地址,使用UDP67端口作为目的端口来广播请求ip地址信息。
广播信息DHCP Discover中包含了DHCP客户机的MAC地址和计算机名,以便使DHCP服务器能确定是哪个客户机发送的请求。
而不是DHCP服务器的其他服务器不会接收DHCP Discover,因为他就没有UDP67端口。
2.1.2 DHCP服务器相应请求
当DHCP服务器接收到客户机请求IP地址的信息时,他就在自己的IP地址池中查找是否有核发的IP地址提供给客户机。如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则DHCP Offer消息。
DHCP Offer中含有以下信息:
- DHCP客户机的MAC地址,如果有多个请求者,用来区分请求者。
- DHCP服务器提供的合法IP地址、子网掩码、网关、租约。
- DHCP服务器的IP地址-MAC地址,方便客户端顺利找到服务器。
只有发送了DHCP Discover的有可能接收,由于Offer中含有请求者的MAC,所以最终只有对应的请求者接收。
因为DHCP客户机还没有IP地址,所以DHCP服务器使用自己的IP地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 68端口来广播DHCP Offer消息。
2.1.3 DHCP客户机选择IP
DHCP客户机从接收到的第一个DHCP Offer消息中选择IP地址,发出IP地址的DHCP服务器将该地址保留,这样地址就不能提供给另一个dhcp客户机了。
当DHCP客户机从接收到的第一个DHCP Offer消息中选择IP地址后,DHCP租约的第三过程发生。
客户机将所有的DHCP Request消息广播到所有DHCP服务器,并表明接收发送Offer服务器提供的内容。
DHCP Request消息包括为该客户机提供IP配置的服务器的服务表示(IP地址)。
DHCP服务器查看服务器标识字段,以确定他自己是否被选择为指定的客户机提供IP地址。
如果DHCP Offer被拒绝,则DHCP服务器会取消提供并保留的IP地址以用于下一个IP租约请求。
在客户机选择IP地址的过程中,虽然客户机选择了IP地址,但是还没有配置IP地址,而在一个局域网中可能含有几个DHCP服务器,所以还是要使用广播的方式,以0.0.0.0最为源地址,使用255.255.255.255作为目标地址,使用UDP 67端口作为目的端口来广播DHCP Request信息。
2.1.4 DHCP服务器确认租约
2.1.4.1 服务器确认租约:DHCP ACK
DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功的确认,该消息报含有IP地址的有效租约和其他可能配置的信息。
虽然服务器确认了客户机的租约请求,但时客户机还没有收到收到DHCP ACK消息,所以服务器仍然使用ip作为自己的源地址,使用255.255.255.255作为目标地址,使用UDP 68端口作为源端口来广播DHCP ACK消息。
当客户机接收到DHCP ACK,他配置了IP地址,完成了TCP/IP的初始化。
DHCP客户机收到DHCP服务器回应的ACK报文后,通过地址冲突检测(arp)发现服务器分配的地址冲突,或由于其他原因导致不能使用,则发送DECLINE报文,通只服务器分配的IP地址不可用。重新分配。
2.1.4.1 服务器拒绝租约:DHCP NACK
如果DHCP Request不成功,例如客户机试图租之前的IP地址,但该IP不再可用,或者因为客户机移动到其他子网,该IP无效时,DHCP服务器将广播否定确定消息DHCP NACK。
当客户接接收不到确认消息,将会重新开始DHCP租约过程。
2.1.5 当局域网中没有DHCP服务器
如果客户机无法找到DHCP服务器,他将从TCP/IP的B类网段169.254.0.0/26中挑选一个IP地址作为自己的IP地址,继续每隔5分钟尝试与DHCP服务器进行通讯,一但与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而是用DHCP服务器分配的IP地址。
2.2 DHCP客户机续租
根据DHCP服务器中DHCP服务的配置文件来进行判断,其中含有两个租约的信息:
- 默认租约:客户机和服务器确定租约后,默认租给客户机的租约时间,专门用来续租的时间,当使用到默认租约的50%时客户机向服务器发送续租请求。
- 最长租约:加入客户端向服务端续租,续不到了。就是客户机发送续租消息,服务器没有理会,所以客户机就使用到最长