0x01 DHCP简介
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个工作在应用层通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配网络资源,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率,但是数据传输时使用UDP不可靠传输协议工作
0x02 DHCP工作原理
第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。
第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。
第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。
第四步:DHCP Server发送ACK数据包,确认信息。
0x021 DHCP客户端进行IP请求
当一台DHCP客户机启动时,会自动将自己的IP地址配置成0.0.0.0由于是0.0.0.0不能进行正常通信,所以客户机必须通过DHCP服务器来获取一个合法地址。由于客户及不知道DHCP服务器的IP,所以它使用0.0.0.0作为源地址,使用255.255.255.255(4个255代表任意IP地址)作为目标地址,使用UDP 67端口作为目的端口来广播请求IP地址信息。光破信息DHCP Discover中包含了DHCP客户机的MAC地址和计算机名,以便使DHCP服务器能确定是哪个客户机发送的请求
0x022 DHCP服务器响应请求
当DHCP服务器接收到可客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机。如果有,DHCP服务器就将此IP做上标记,加入到DHCP OFFER中,然后DHCP服务器就广播一则包括下列信息的DHCP OFFER信息
DHCP客户机的MAC地址
DHCP服务器提供的合法IP地址
子网掩码默认网关
使用期限
DHCP服务器的IP地址及MAC地址
因为DHCP客户机还没有IP地址,所以DHCP服务器使用自己的IP作为源地址,使用255.255.255.255作为目标地址,使用UDP 68端口作为源端来广播DHCP OFFER信息
0x023 DHCP 客户机选择IP
DHCP客户机从接收到第一个DHCP OFFER消息中选择IP地址,发出IP地址的DHCP服务器将该地址保留,这样该IP地址就不能提供给另一个DHCP客户机。当 客户机从一个DHCP服务器接收到DHCP OFFER并选择IP地址后,DHCP第三过程发生。客户机将DHCP REQUEST消息广播到所有DHCP服务器,表明它接受提供的内容。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 嘻嘻
0X024 DHCP 服务器确认
服务器确认: 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 NACK(DHCP NAK)
如果DHCP REQUEST不成功,例如客户机试图使用先前的IP地址,但该IP地址不再可用,或者因为客户机移到其他子网,该IP无效时,DHCP将广播否定确认消息DHCP NACK。当客户机接收到不成功的确认是,它将重新开始DHCP过程。
注:
如果DHCP客户机无法找到HDCP服务器,它将从TCP/IP的B类网段169.254.0.0/16挑选一个IP地址作为自己的IP地址,继续每个5分钟尝试与DHCP服务器进行通信,一旦与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而使用DHCP服务器分配的IP地址
DHCP客户机收到DHCP服务器回应的ACK报文后,通过地址冲突检测(ARP)发现服务器分配的地址冲突或者其他原因不可用,则发送DECLINE报文,通知服务器分配的IP地址不可用
0X025 DHCP 客户机续租
DHCP客户机会在租期过去50%的时候,直接向为其提供IP的DHCP服务器发送DHCP REQUEST 消息包。如果客户及接收到该服务器回应的DHCP ACK 消息包,客户机根据包中所提供的新的租期以其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%
客户机会在50%,87.5%的时候会续租。
在租期满后,客户机必须放弃这个IP地址,重新申请。如果此时无DHCP服务器可用,DHCP客户机就会使用168.254.0.0/16中随机的一个地址,并且每个5分钟尝试连接DHCP
0x03 DHCP自动分配
0x04 超级作用域
0x041 超级作用域介绍
DHCP服务器可为单个物理网络上的服客户端提供多个作用域租约地址
0X05 DHCP中继
DHCP Relay(DHCPR) DHCP中继是一个小程序,可以实现在不同子网和物理网段之间处理和转发DHCP信息功能