(1)什么是DHCP协议?
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。主要用于给内部网络或网络服务提供供应商自动分配IP地址。DHCP协议是一个应用层协议,能够让设备自动获取IP地址以及其他重要的网络资源。DHCP使用的客服务器模式,其中客户端使用的是UDP68端口,而服务器使用的是UDP67端口。
(2)DHCP的作用?
DHCP(动态主机配置协议)为互联网上主机提供地址和配置参数。DHCP是基于Client/Server工作模式,DHCP服务为主机分配IP地址和提供主机配置参数。DHCP主要作用如下:
a: 保证任何IP地址在同一时刻只能由一台DHCP客户机使用
b:DHCP可以给用户分配永久固定的IP地址
c: DHCP允许用其他方式获取IP地址的主机共存,如手动配置IP地址的主机
(3)DHCP的工作流程
使用DHCP时,在网络上首先必须有一台DHCP服务器,而其他的计算机则是DHCP客户端。当DHCP客户端程序发出一个信息,要求一个动态IP地址时,DHCP服务器将根据,目前配置的IP地址池,从中提供一个可供使用的IP地址和子网掩码给客户端,以下图就是DHCP的工作流程。
从上图可以看出,DHCP工作分为4个阶段。分别为发现阶段(DHCP Discover),提供阶段(DHCP Offer),选择阶段(DHCP Request)和确认阶段(DHCK ACK)
发现阶段(DHCP Discover):
上图是DHCP发现阶段,即DHCP客户端寻找DHCP服务器的阶段,DHCP客户端以广播方式发送DHCP Discover包,因为客户端不知道服务器的IP地址,在网络上每台主机都会收到此广播包,但是只有DHCP服务器才可以响应。
提供阶段(DHCP Offer)
上图是DHCP的提供阶段,即DHCP服务器提供IP地址的阶段,在网络中收到DHCP客户端发送的DHCP Discover的DHCP服务器,都会做出响应的。这些DHCP服务器从尚未出租的IP地址中挑选一个给客户端,向客户端发送一个包含IP地址和其他设置的DHCP Offer包。
选择阶段(DHCP Request)
上图是DHCP的选择阶段,也就是说DHCP客户端选择某台DHCP服务器提供IP地址阶段。当客户端收到多台DHCP发送的DHCP offer包,DHCP客户端只接受其中一台DHCP服务器的数据,然后以广播的方式回应DHCP服务器DHCP Request,通知自己选择的DHCP服务器。当局域网中所以的DHCP服务器收到客户端发送的DHCP Request信息,通过查看包,确定是否是选择了自己IP,如果选择的是自己,则会发送一个确认包。否则,不进行响应
确认阶段(DHCP ACK)
上图是DHCP的确认阶段,也就是DHCP服务器确认所提供的IP地址信息阶段。同时另外的没有被选择的DHCP服务器都将回收曾经提供的IP地址。
(1)DHCP报文格式
上图是DHCP的报文格式,我们接下来做详细分析
op: 报文的操作类型。分为请求报文和响应报文。1:为请求报文,2为响应报文
htype: DHCP客户端的硬件地址类型。1代表以太网
hlen: DHCP客户端的硬件地址长度。Ethernet为6
hops: DHCP报文经过的DHCP中继的数目,默认为0.报文每次经过一个DHCP中继,该字段就会加1
xid: 客户端发起一次请求的随机数。
secs: DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0
flags: DHCP服务器响应报文是采用单播还是广播方式发送。只使用第0比特位。0表示单播,1表示广播。其余比特为保留
ciaddr: DHCP客户端的IP地址
yiaddr: DHCP服务端分配给客户端的IP地址
siaddr: DHCP服务端的IP地址
giaddr: DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址,也就是网管IP地址
chaddr: DHCP客户端的硬件地址,也就是MAC地址
sname: 服务器的名称
file: DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息
options: 可选变长选项字段,包含报文的类型,有效租期,DNS服务器的IP地址等
(2)捕获DHCP报文数据
因为DHCP只有当主机的IP地址过期或者重新启动系统时,才会重新获取IP地址。所以想要捕获DHCP数据报文,就必须重启网卡的方法来获取DHCP报文
在运行中执行如下命令,即可释放当前的信息
执行以上命令后,就可以释放当前使用的地址信息
重新获取地址信息,执行如下命令:
当然执行以上操作时,首先记得打开Wireshark过滤数据功能
(3)分析DHCP发现数据包,对应的是94帧,可以明显的看到Info信息中显示的是: DHCP Discover
从以上的图中可以看到,客户端目前是没有IP地址的,发现阶段是以广播包的形式发送的。也就是网络上的DHCP服务器都是可以收到此数据包的。
大家可能对后面的Option字段的值不是很明白,接下来看看option字段的值
(4)分析DHCP提供阶段数据,对应的是99帧。
在发现阶段分析了Option的详细请求信息,那当然在提供阶段就需要分析对应的服务器分配给DHCP客户端的配置信息
这时候DHCP客户端已经收到DHCP服务器的数据包了,当然如果有多台DHCP服务器,就必须回复DHCP服务器确认用那台DHCP服务器。
(5)分析DHCP的选择阶段,DHCP服务器需要对提供的给自己IP的DHCP服务器做出相应的响应,对应的数据帧是100帧
(6)DHCP确认阶段(对应的是分析101帧)
从上图可以看出服务器分配客户端的IP地址为192.168.1.100. 关于服务器分配给客户端的IP的详细信息,需要详细分析option字段
以上就是DHCP的四个阶段