Wireshark实战分析之DHCP协议

(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的四个阶段


你可能感兴趣的:(wireshark)