DHCP协议分析

Wesley13
• 阅读 599

###实验环境 • 操作机:Windows XP ###实验目的 1、 熟悉DHCP协议的基本概念 2、 学会利用wireshark捕获含有DHCP协议的数据包 3、 在wireshark中分析DHCP协议提供IP地址的四个步骤 ###实验工具 o wireshark


##实验步骤 ###DHCP的工作原理 DHCP的前身:BOOTP协议(Bootstrap Protocol),属于TCP/IP的应用层协议。BOOTP协议当初被创建出来给连接到网络的设备自动分配地址。直到后来才被更加复杂而完善的DHCP协议所取代。 DHCP在网络配置方面非常_重要_,特别是当一个_网络的规模较大_时,使用DHCP可以极大地减轻网络管理员的工作量。另外,对于移动设备来说,由于使用的环境会经常改变,那么它所处的网络IP地址也就可能随时变动。如果每次都需要通过手工修改来设置它们的IP地址,使用起来就会非常麻烦。那么此时,就可以使用DHCP来减轻负担。这里我们通过下图来分析一下DHCP的工作流程: DHCP协议分析

在使用DHCP的时候,网络上首先必须有一台DHCP服务器,而其它计算机则是DHCP的客户端。整个DHCP的工作过程分为4个阶段,即**发现阶段(Discover)_、_提供阶段(offer)_、_请求阶段(request)_以及_确认阶段(ACK)**。这里分别简单介绍一下上述四种数据包的类型: ####1、DHCP Discover DHCP客户端请求地址时,并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播的形式发送请求数据包。这个数据包就被称作_Discover数据包_,目的是发现网络中的DHCP服务器。所有收到Discover数据包的DHCP服务器都会发送响应数据包,那么客户端就可以知道网络中存在的DHCP服务器的位置。 ####2、DHCP offer 当DHCP服务器收到Discover数据包后,就会在所配置的地址池中寻找一个合适的IP地址,加上相应的租约期限和其它配置信息(如网关、DNS服务器等),构造一个offer数据包,发送给客户端,告知客户端本服务器可以为其提供IP地址。 ####3、DHCP Request DHCP客户端可能会收到很多的offer,所以必须要从中选择一个。一般来说,客户端会选择第一个回应的offer数据包服务器作为自己的目标服务器,并回应一个广播Request数据包,以告诉所有的服务器,自己已经做出了选择。当DHCP客户端成功获取IP地址后,在地址使用租期过去一半的时候,会向DHCP服务器发送_单播Request数据包_,用于延续租期。如果没有收到_DHCP ACK_数据包,那么在租期过去四分之三时,会发送广播Request数据包来延续租期。 ####4、DHCP ACK DHCP服务器收到Request数据包后,根据Request数据包中携带的用户MAC地址来查找有没有相应的租约记录,如果有则发送ACK数据包作为回应,通知用户可以使用分配的IP地址。 ###DHCP数据包的捕获 为了捕获到DHCP数据包,这里我在虚拟机的环境下,首先打开_Wireshark_,在捕获选项中,设置筛选条件为_UDP_,因为DHCP是使用UDP协议工作的。之后开启Wireshark的捕获。现在我们需要让系统产生DHCP的数据包,由于DHCP只有当主机的IP地址过期或者重新启动系统时,才会重新请求IP地址。否则是不能够产生DHCP数据包的。那么我们可以通过重新启动网卡的方法,进行数据包的捕获。 这里我们打开命令提示符,使用_ipconfig_的_release_以及_renew_参数来释放并重新获取地址信息。

此时我们在Wireshark中就可以获取DHCP数据包了。 ###步骤4:DHCP数据包的分析 由于在捕获的文件中还存在有其它的数据包,因此这里我们可以加入一个筛选条件bootp,那么此时剩下的就全都是DHCP协议的数据包了: DHCP协议分析

在这里我们可以看到DHCP的释放、发现、提供、请求和确认数据包。这里我们分别进行分析。 1、释放数据包 捕获文件的第一个数据包就是释放数据包。当用户不再需要使用分配的IP地址时,就会向DHCP服务器发送 Release数据包,告知服务器,用户已经不再需要分配的IP地址,DHCP服务器就会释放掉被绑定的租约。 2、发现数据包 我们再看一下第二个数据包。它是从0.0.0.0的68号端口发往255.255.255.255的67号端口。_客户端使用0.0.0.0,是因为它目前还没有IP地址_。数据包被_发往255.255.255.255,是因为这是一个独立于网络的广播地址_,这就能够确保这个数据包会被发送到网络中的所有设备上。因为客户端并不知道DHCP服务器的地址,所以这么做就一定可以找到正在监听的DHCP服务器。 接下来我们可以看到_DHCP是基于UDP_作为其传输协议的,因为DHCP客户端对请求响应速度有很高的要求。而DHCP有其内置的保证可靠性的方法,也就意味着UDP是最适合的协议。需要说明的是,由于Wireshark在处理DHCP时,仍然会引用BOOTP,所以我们会在_Packet Details面板中看到Bootstrap Protocol_,而不是DHCP: DHCP协议分析

这是一个请求数据包,因为在消息类型(Message type)中被标记为1。在这个发现数据包中,还可以看到很多为空的IP地址域。另外还需要我们注意的是选项中的内容,它用来对DHCP数据包进行扩展,以提供更多的功能。这里比较重要的有: _DHCP消息类型(DHCP Message Type)_:这个选项是一个长度和值均为1的53类型。表明它是一个发现数据包。 _客户端标识符(Client identifier)_:这里提供了客户端请求IP地址的额外信息。 _所请求的IP地址(Requested IP Address)_:这里提供了客户端希望得到的IP地址(通常是之前用过的IP地址)。 _请求参数列表(Parameter Request List)_:这里列出了客户端希望从DHCP服务器接收到的不同配置项(其它重要网络设备的IP地址)。 ####3、提供数据包 捕获文件的第三个数据包就是提供数据包。可以看到这个数据包是从192.168.147.254发往192.168.147.129的。尽管目标地址是192.168.147.129,也就是客户端的地址,但事实上,客户端还没有这个地址,所以服务器会首先尝试使用由ARP提供的客户端硬件地址与之通信。如果通信失败,那么它将会直接把提供数据包广播出去,以进行通信。 这里我们看一下它的DHCP部分,它被称为提供数据包,说明这是一个用于响应的消息类型。这个数据包包含了和前一个数据包相同的事务ID,通过这个IP就可以知道这个响应与我们原先的请求相对应。 这个提供数据包由DHCP服务器发出,用于向客户端提供服务。它提供了关于它自己的信息,以及给客户端提供的地址。如下图所示: DHCP协议分析

在Your(client)IP address中,地址192.168.147.129就是要提供给客户端的地址。而Next server IP address中的192.168.147.254表明我们的DHCP服务器与默认网关共享一个IP地址。 下面列出的第一个选项说明这个数据包是一个DHCP的提供数据包。选项中还需要我们关注的内容有: _IP地址租约时间_(IP Address Lease Time)是30分钟。 _子网掩码_(Subnet Mask)是255.255.255.0。 _路由器_(Router)地址为192.168.147.2。 ####4、请求数据包 在客户端接收到DHCP服务器的提供数据后,它将会以一个DHCP请求数据包作为接收确认: DHCP协议分析

这个数据包仍然从_IP地址为0.0.0.0_处发出,毕竟我们还没有完成获取IP地址的过程,但是数据包现在知道了DHCP服务器的存在。可以发现,这是一个请求数据包。这个数据包与发现数据包相似,其所有的IP地址信息都是空的。在最后的选项域中,我们看到这是一个DHCP请求。 ####5、确认数据包 整个过程的最后一步就是DHCP在确认数据包中给客户端发送其所请求的IP地址,并在数据库中记录相关信息。那么此时客户端就有了一个IP地址,就可以使用它在网络上通信了。 #####DHCP租约内续租 当DHCP给一台设备分配了一个IP地址时,它同时给客户端定下了一个租约。这就表示着,客户端只能够在有限的时间内使用这个IP地址,到了时间就一定要续租。我们刚才介绍的DHCP数据包的分析过程是出现在客户端第一次获取IP地址或者其租约时间已经过期的情况下,这两种情况就会被视为租约过期。 当一个拥有IP地址的客户端在租约内重新启动,它必须经过一次精简版的DHCP数据包传输过程来重新认领它的IP地址。这个过程就被称为_租约内续租_。 在租约内续租的时候,发现和提供数据包就变得没有必要了,只需要完成请求和确认两个步骤就可以了:

DHCP协议分析

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
2年前
HCNA实验
HCNA实验配置基于接口地址池的DHCPDHCP动态主机配置协议DHCP协议采用客户端/服务器的方式工作与DHCP服务器建立连接的4个阶段发现阶段:DHCP客户端寻找DHCP服务器的阶段,客户端以广播的方式发送DHCP\_Disco
Stella981 Stella981
2年前
Linux系统——DHCP
DHCP定义DHCP服务是负责IP、掩码、网关地址、DNS地址等自动分发的软件服务DHCP的分配方式(1)自动分配:分配到一个IP地址后永久使用(2)手动分配:由DHCP服务器管理员专门指定IP地址(3)动态分配:使用完后释放该IP,供其他客户机使用DHCP的租约过程(客户机从DHCP服务器获取IP地址的过程)(1)
Wesley13 Wesley13
2年前
DHCP 服务
\TOC\DHCP服务了解DHCP服务的工作原理能够配置简单的DHCP服务器一、DHCP服务介绍DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是一个局域网的网络协议,UDP协议,67端口主要用于动态管理分配IP地址
Wesley13 Wesley13
2年前
DHCP报文交互流程
1.发现阶段,即DHCP客户机寻找DHCP服务器的阶段(DHCPdiscover)DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCPdiscover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收
Wesley13 Wesley13
2年前
DHCP服务配置之主服务器配置
1.DHCP简介:DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。2.DHCP服务器简介:DHCP服务器指的是由服务器控
Wesley13 Wesley13
2年前
DHCP报文及工作流程
DHCP定义    DHCP,DynamicHostConfigurationProcotol动态主机配置协议。是应用层协议,能够让设置自动获取IP地址以及其他重要网络资源。    DHCP使用UDP协议工作,DHCP有3个端口,其中UDP67和UDP68为正常的DHCP端口服务端口,分别作为DHCPServer和DHCPClien
Wesley13 Wesley13
2年前
DHCP服务器的安装
_实验要求和步骤:_一、安装DHCP服务器前的准备工作1、首先在你的计算机上配置一个静态IP2、分别在Windows2003、ubuntulinux下安装dhcp服务器二、分别对这两个操作系统下的DHCP进行配置1、添加作用域2、添加保留地址3、添加DNS服务器
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这