DHCP报文详解及抓包实例

您所在的位置:网站首页 arp报文目的ip是网关吗为什么 DHCP报文详解及抓包实例

DHCP报文详解及抓包实例

2024-07-13 06:02:29| 来源: 网络整理| 查看: 265

DHCP协议简介

DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。

DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。DHCP为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。主机地址动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:

1、 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

2、DHCP应当可以给用户分配永久固定的IP地址。

3、DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。

4、DHCP服务器应当向现有的BOOTP客户端提供服务。

DHCP最重要的功能就是动态分配。除了IP地址,DHCP分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

抓包方法:

在用Wireshark过滤显示DHCP包,需要输入过滤条件BOOTP,而不是DHCP

DHCP的实现分为4步,分别是:

第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。

第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。

第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。

第四步:DHCP Server发送ACK数据包,确认信息。

 

DHCP的工作流程

 

发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,以广播方式向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。

选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。

确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则以广播返回DHCP-ACK报文;否则广播返回DHCP-NAK报文,表明地址不能分配给该客户端。另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。

客户端收到服务器返回的DHCP-ACK确认保温后,会以广播方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定时间内没有收到回应,并且客户端上不存在与该地址同网段的其他地址时,客户端才使用此地址。否则,客户端会以单播的方式发送DHCP –DECLINE报文给DHCP服务器,并重新申请IP地址。

重新登录,以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP NACK否认信息。当原来的DHCP客户机收到此DHCP NACK否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

更新租约,DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

如果网络中存在多个DHCP服务器,除DHCP客户端选中的服务器外,其他DHCP服务器中本次未分配的IP地址仍可分配给其他客户端。

IP地址续约原理:

在DHCP客户端的IP地址租约期限达到一般左右时间时,DHCP客户端会向为它分配IP地址的DHCP服务器发送DHCP-REQUEST报文,以进行IP租约的更新。如果许可DHCP服务器回应DHCP-ACK报文,否则回应SHCP-NAK报文。

如果在租约的一半时间进行的租约操作失败,DHCP客户端会在租约期限达到7/8时,广播发送DHCP-REQUEST报文进行续约。DHCP服务器的处理方式同上。

DHCP报文种类

DHCP一共有8种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各种类型报文的基本功能如下:

DHCP Discover

DHCP客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。

DHCP Offer

DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,最终还需要客户端通过ARP来检测该IP地址是否重复。

DHCP Request

DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求续延租约。

DHCP ACK

DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址。

DHCP NAK

如果DHCP服务器收到Request请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向DHCP客户端发送NAK应答报文,通知用户无法分配合适的IP地址。

DHCP Release

当DHCP客户端不再需要使用分配IP地址时,就会主动向DHCP服务器发送RELEASE请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址。

DHCP Decline

DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以期获得新的IP地址。

DHCP Inform

DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了。

1)discovery:第一个报文,client 广播发送discovery报文请求server端获取地址,此时client ip:0.0.0.0  (可能存在多个DHCP Server)

2)offer : 对dhcpdiscovery的响应,当server收到client的discovery报文后,会单播发送一个offer报文响应。告诉client ,server给提供的ip地址和其他设置信息。(可能有多个dhcpserver 发送offer)

3)request:对 offer的响应 或者是延续ip地址租期时发出的报文。对server提供的信息发送request请求获取提供的信息(client 接收第一个到达的offer并广播request 告诉其他server 已经选择好了dhcp server),其他人不需要再提供dhcp服务了。

4)ack : server对client的 request报文的确认响应报文,只要收到此报文才算是真正的获取了ip地址和相关配置信息。(ACK中有个option43字段,用于填充ACIP)

5)decline:当客户端发现服务器端分配的ip地址无法使用,如ip地址冲突,将发出此报文,通知server禁止使用此ip地址。

6)release :client主动释放server分配给它的ip地址的报文,server收到此报文后,可以回收这个ip地址,使其分配给其他client使用。(可手动 ipconfig /release 释放,wireshark抓包可以看到此报文,ipconfig /renew 重新获取,输入后,会重新走dhcp获取地址的流程)

7 ) nak  :  server对client的 request 报文的拒绝响应报文,client收到此报文后,一般会重新开始新的dhcp过程。

8 ) inform : client已经获取了ip地址,发送此报文,只是为了从server处获取其他的一些网络配置信息,如 route ip, dns ip等。

 

DHCP的报文格式

DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。下面是各字段的说明。

OP(1)

Htype(1)

Hlen(1)

Hops(1)

Transaction  ID(4)

Seconds(2)

Flags(2)

                                                                                                        Ciaddr(4)

                                                                                                        Yiaddr(4)

                                                                                                         Siaddr(4)

                                                                                                         Giaddr(4)

                                                                                                         Chaddr(16)

                                                                                                         Sname(64)

                                                                                                           File(128)

                                                                                                        Options(variable)

                                                                                                 (图1   DHCP的 报文格式)

报文字段分析:

OP:报文的操作类型。分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。

请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。

应答报文:DHCP Offer、DHCP ACK和DHCP NAK。

Htype:DHCP客户端的MAC地址类型。MAC地址类型其实是指明网络类型,Htype值为1时表示为最常见的以太网MAC地址类型。

Hlen:DHCP客户端的MAC地址长度。以太网MAC地址长度为6个字节,即以太网时Hlen值为6。

Hops:DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。(若数据包需经过router传送,每站加1,若在同一网内,为0。)

Transaction ID:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Transaction ID都是一样的。

Seconds:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。(DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)

Flags:标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)

【注意】在客户端正式分配了IP地址之前的第一次IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文,以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。当然,如果是由DHCP中继器转的报文,则都是以单播方式发送的。另外,IP地址续约、IP地址释放的相关报文都是采用单播方式进行发送的。

Ciaddr:DHCP客户端的IP地址。仅在DHCP服务器发送的ACK报文中显示,在其他报文中均显示0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。

Yiaddr:DHCP服务器分配给客户端的IP地址。仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。

Siaddr:下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。(用于bootstrap过程中的IP地址)

Giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。如果没有经过DHCP中继,则显示为0。(转发代理(网关)IP地址)

Chaddr:DHCP客户端的MAC地址。在每个报文中都会显示对应DHCP客户端的MAC地址。

Sname:为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式)。在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。

File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。仅在DHCP Offer报文中显示,其他报文中显示为空。

Options:可选项字段,长度可变,格式为"代码+长度+数据"。

列出部分可选的选项:

 

 

wireshark解码信息

1,分析

要想抓取到DHCP包,先要保证有可用的DHCP服务器,然后将主机IP地址获取方式设置为自动获取。如果主机在抓包之前已经联网,需要先断开主机的网络连接,然后再连接网络。在cmd下使用命令ipconfig来完成网络断开与连接的过程:

(1)ipconfig  /release 断开当前的网络连接,主机IP变为0.0.0.0,主机与网络断开,不能访问网络。  (2)ipconfig  /renew 更新适配器信息,请求连接网络,这条命令结束之后,主机会获得一个可用的IP,再次接入网络。

2.开始抓包

实验环境:Win10,Wireshark1.12.9,有线连接  (1)在Wireshark中点击start开始抓包,在过滤栏输入bootp,使其只显示DHCP数据包。  (2)在cmd中输入ipconfig  /release 断开网络连接。 

 可以看到此时所有的网卡都已经断开。以太网处于断开状态。

Wireshark中截获到一个DHCP Release数据包。

(3)在cmd中输入ipconfig  /renew 请求网络连接。 

此时,可以看到在Wireshark中新增了4个DHCP数据包: 数据包1:DHCP Discover 数据包2:DHCP Offer 数据包3:DHCP Request 数据包4:DHCP ACK

 等待这条命令执行完毕之后,在cmd中可以看到主机被分配了IP,主机成功连入网络中。

(4)为了后续分析使用,我们再执行一次ipconfig  /renew:

 可以看到Wireshark中新增了3个数据包:DHCP ACK;DHCP Request;DHCP ACk。 如果再次使用ipconfig /renew,每执行一次会新增2个数据包:DHCP Request;DHCP ACk。

 

3 DHCP包分析

下面着重来分析当执行,ipconfig /renew这条命令产生的4个DHCP数据包,这4个数据包代表了客户机和DHCP服务器的交互过程,也是IP动态分配的过程。 

 1,DHCP Discover数据包  (1)Client端使用IP地址0.0.0.0发送了一个广播包,可以看到此时的目的IP为255.255.255.255。Client想通过这个数据包发现可以给它提供服务的DHCP服务器。

(2)从下图可以看出,DHCP属于应用层协议,它在传输层使用UDP协议,目的端口是67。 

2,DHCP Offer包 当DHCP服务器收到一条DHCP Discover数据包时,用一个DHCP Offerr包给予客户端响应。   (1)DHCP服务器仍然使用广播地址作为目的地址,因为此时请求分配IP的Client并没有自己ip,而可能有多个Client在使用0.0.0.0这个IP作为源IP向DHCP服务器发出IP分配请求,DHCP也不能使用0.0.0.0这个IP作为目的IP地址,于是依然采用广播的方式,告诉正在请求的Client们,这是一台可以使用的DHCP服务器。

(2)DHCP服务器提供了一个可用的IP,在数据包的Your (client) IP Address字段可以看到DHCP服务器提供的可用IP。

(3)除此之外,如图中红色矩形框的内容所示,服务器还发送了子网掩码,路由器,DNS,域名,IP地址租用期等信息。

3,DHCP Request包 当Client收到了DHCP Offer包以后(如果有多个可用的DHCP服务器,那么可能会收到多个DHCP Offer包),确认有可以和它交互的DHCP服务器存在,于是Client发送Request数据包,请求分配IP。 此时的源IP和目的IP依然是0.0.0.0和255.255.255.255。

4,DHCP ACK包 服务器用DHCP ACK包对DHCP请求进行响应。 

 在数据包中包含以下信息,表示将这些资源信息分配给Client.  Your(client) IP address:分配给Client的可用IP。 后面有许多项option信息,前两项是DHCP服务器发送的消息类型(ACK)和服务器的身份标识,后面几项是:  Subnet Mask:Client端分配到的IP的子网掩码;  Router:路由器  Domain Name Server:DNS,域名服务器  Domain Name:域名  IP Address Lease Time:IP租用期。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭