DHCP协议详解(非常详细总结),结合ENSP,wireshark学习使用

1 DHCP协议

1.1 DHCP协议理解

定义:DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是一个应用在局域网中的网络协议,它使用UDP协议工作。

理解DHCP协议就是一个基于UDP协议工作在局域网内的网络协议,其最终的目的就是获取响应的IP地址,其中这过程中有多种分配方式,以及发送报文的格式要求等。

作用动态分配IP地址,过程自动化,终端无需一一手工配置,配置信息统一管理(DNS,网关),IP地址有限、需要大量配置IP地址、经常移动终端。

好处:提高配置IP地址效率,减少配置工作量,减少IP地址冲突。

分配IP地址方式:

(1)手工配置方式:通过网络管理员手工配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将手动配置的IP地址分配给客户端。。

(2)自动配置方式:当DHCP客户端第一次想服务端租用到第一个IP地址后,就将这个IP地址永久分配给客户端使用。

(3)动态配置方式:服务器暂时分配一个IP地址给客户端,根据租约到期或者续约租期的方式来管理分配的IP地址。

1.2 DHCP报文格式

链路层头

IP头  20bytes

UDP头

DHCP报文

图1 DHCP报文封装格式

图2 DHCP报文格式

图1是dhcp整个报文的封装格式,包括链路层头、IP头、UDP头和DHCP报文,其中dhcp主要的数据都封装在dhcp报文中。

图2 就是DHCP报文的格式,各字段的说明如下:

op:1byte,是报文的操作类型,分为请求报文和响应报文,1为请求报文;2为响应报文。具体的报文类型在option字段中标识。

htype:1byte,表示client硬件地址的类型,1表示以太网类型。

hlen:1byte,硬件地址的长度,以太网的硬件地址长度为6bytes。

hops:1byte,表示当前dhcp报文经过的DHCP中继的数目,每经过一个DHCP中继这个字段就加1.

xid:4bytes,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。

secs:2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。

flags:2bytes,是标志字段,16比特中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0.

ciaddr:4bytes,是客户端的IP地址,可以是client自己的IP地址,也可以是server分配给client的IP地址。

yiaddr(Your IP Address):4bytes,是server分配给client的IP地址。

siaddr:4bytes,是client端获取IP地址等信息的server端的地址。

giaddr:4bytes,是client发出请求报文后经过的第一个中继的IP地址。

chaddr:16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。

sname:64bytes,服务器主机名,是client端获取IP地址等信息的服务器名称。

file:128bytes,是client的启动配置文件名,是服务器为client指定的启动配置文件名及路径信息,由服务器填写。

 

options:是可选变长的选项字段,这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息。

这个字段的结构采用“CLV”结构,如图4:

图4 option字段编码方式

其中”code”是标识号,唯一标识后面的信息内容(vlaue),1bytes;

“length”表示后面的value值的长度,1bytes

“vlaue”是信息内容

Options字段有很多项,是可选的,不同的报文option项可能不同,图5是一个DHCP request报文的option项:

图5 option项

不同的option项有不同的含义,下面是一些常见的option项:

(1)DHCP Message Type: code=53  length=1 表示DHCP的报文类型。

(2)Client identifier:      code=61   client端的硬件地址

(3)Server identifier:     code=54   服务器的IP地址

(4)Subnet Mask:     code=1      子网掩码

(5)route:           code=3      网关IP地址

(6)Domain Name Server: code=6    DNS服务器的IP地址

(7)IP Address Lease Time: code=51  租约时间

 

1.3 DHCP协议报文的种类

Dhcp协议一共有8中报文,包括:DHCPDISCOVERYDHCPOFFERDHCPREQUESTDHCPACKDHCPNAKDHCPRELEASEDHCPDECLINEDHCPINFORM

报文类型由options字段中的option53“DHCP Message Type”选项来确定。各报文的具体含义如下:

(1),DHCP-DISCOVER报文:0x01  客户端请求包

这个报文是client端开始dhcp过程的第一个请求报文,client在请求地址时,并不知道server端的位置,所以client会以广播的方式发送请求报文,它的目的是发现网络中的服务器。

(2),DHCP-OFFER报文: 0x02  服务器响应包

这个报文server端对DISCOVERY报文的响应报文。会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如GATEWAY,DNS SERVER等),构造一个OFFER报文,发送给用户,告知用户本SERVER可以为其提供IP地址的分配,并且。发OFFER报文一般是单播的方式发送。

(3),DHCP-REQUEST报文:0x03 客户端选择包

在一个子网中可能有多台服务器,所有收到DISCOVER报文的服务器都会回应OFFER报文,所以client端可能收到多个OFFER报文,通常会选择第一个OFFER报文的服务器作为自己的目标服务器,并回应一个REQUEST请求报文。在续租约的时候client端也会发送REQUEST报文  请求续租期。

(4),DHCP-ACK报文:0x05  服务器确认包

是server对client端的REQUEST报文的确认响应报文,server在收到REQUEST报文后,根据REQUEST报文中携带的client MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知client可以使用分配的IP地址。

(5),DHCP-NAK报文:0x06  服务器拒绝包

Server端对client端的REQUEST报文的拒绝响应报文,如果服务器没有相应的租约记录,就会发送NAK报文给client端。

(6),DHCP-RELEASE报文:0x07  客户端释放包

Client端主动释放server端分配给它的IP是,就会发送DHCP-RELEASE报文给server,server收到这个报文后,就会回收这个IP地址。

(7),DHCP-DECLINE报文:0x04

client收到server回应的ACK报文后,通过地址冲突检测发现 SERVER分配的地址冲突或由于其它原因导致不能使用,则发送DHCP-DECLINE报文,通知server所分配的IP地址不可用。

(8),DHCP-INFORM报文:0x08

在client已经获得了IP地址,需要从server端获得更详细的配置信息时,就会发送DHCP-INFORM报文向server请求,server在收到这个报文后,会根据租约查找,找到相应的配置信息后,就会回应DHCP-ACK报文给client。

 

1.4 DHCP协议工作过程

1.4.1 动态获取IP过程

图5 DHCP工作流程

1.2.1.1 抓包过程

   (1)Wireshark中点击start开始抓包,在过滤栏输入bootp,使其只显示DHCP数据包

(2)在win10 中的cmd输入ipconfig /release 先断开当前的网络连接,主机号变为0.0.0.0,主机与网络断开,不能访问网络。

图6 断开网络配置图

图7 释放包

(3)在cmd中输入ipconfig /renew 请求网络连接,也为客户端分配了IP地址。

 

图8 再次请求网络配置图

图9 新增数据包

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

1.4.1.2 DHCP四个阶段

DHCP动态获取IP地址的过程主要分为发现阶段、提供阶段、选择阶段、确认阶段四个阶段。

(1)发现阶段:client端在局域网内以广播的方式发起一个DHCP Discover包,目的是在子网络中发现能够给client端提供IP地址的server端。

UDP 目标端口号为67    IP 地址0.0.0.0    目的IP:255.255.255.255

图10  DHCP discover包

(2)提供阶段:局域网中DHCP server接受到Discover包之后,通过发送DHCP offer包给client端应答,主要是告知client端可以提供IP地址,以及相应的IP地址租约信息和其他配置信息也会在其中。

UDP 目标68    源IP为DHCP服务器的IP   目的IP:255.255.255.255

 

图11 DHCP offer包

(3)选择阶段:在client端可能会接受到多个offer包,通常clientdaunt只会接受收到的第一个DHCP offer报文,然后client端就会以广播的方式发送一个DHCP request报文请求分配IP地址。

UDP 目标67    源IP为0.0.0.0   目的IP:255.255.255.255

图12 DHCP REQUEST包

(4)确认阶段:server端在收到DHCP request报文之后,会判断”option”字段的serverIP地址是否是自己的IP地址,如果符合分配IP地址的条件,就会给client发送一个DHCP ACK包,如果不满足就发挥发送一个DHCP NAK 包。

UDP 目标68    IPDHCP服务器的IP   目的IP:255.255.255.255

图13 DHCP ACK 包

注意:客户端执行DHCP-DISCOVER后,如果没有DHCP服务器响应客户端的请求,客户端会随机使用169.254.0.0/16网段中的一个IP地址配置到本机地址。

169.254.0.0/16Windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。

1.4.2 续约租期

图14 续约租期过程

(1)当clientIP地址已经用到50%的时间,续租一下,client端就会以单播形式向服务端发送一个DHCP Request包,当server响应时就会回应一个ACK包,会重新约定一个时间。

(2)当clientIP地址已经用到50%的时间,续租一下,client端就会以单播形式向服务端发送一个DHCP Request包,server没有响应,client会继续使用,当使用到87.5%时,会在续租一次,同时就以广播的方式是发送一个request包,server这时收到响应以后,就会回应一个ACK包,重新约定一个时间。

(3)当clientIP地址已经用到50%的时间,续租一下,client端就会以单播形式向服务端发送一个DHCP Request包,server没有响应,client会继续使用,当使用到87.5%时,会在续租一次,同时就以广播的方式是发送一个request包,如果server还是没有响应,client那就直接使用到过期。      

1.4.3 重新连接使用IP地址

Client端在重新登录网络的时候,可以不需要从初始阶段发送DHCP DISCOVER报文开始,可以直接广播发送DHCP REQUEST报文给服务器。

1.4.4 client主动释放IP地址

图16 DHCP release报文

 

  • 24
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Wireshark是一个开源的网络协议分析工具,它可以帮助用户捕获和分析计算机网络上的数据流量。下面是关于如何安装Wireshark的步骤: 1. 首先,访问Wireshark的官方网站(https://www.wireshark.org/)并下载最新版本的Wireshark软件。 2. 下载完成后,打开安装程序并按照指示进行安装。在安装过程中,可以选择是否要安装WinPcap或Npcap工具,这些工具提供了对于网络数据包的捕获支持。 3. 完成安装后,可以在开始菜单中找到Wireshark的快捷方式。双击打开Wireshark。 4. 在Wireshark界面的主窗口中,可以选择要捕获数据包的网络接口。选择一个接口后,点击“开始”按钮,Wireshark便会开始捕获网络数据包。 5. 捕获的数据包会以列表形式显示在Wireshark的窗口中。可以通过点击每个数据包来查看详细信息。 总的来说,Wireshark的安装非常简单,并且可以在不同平台的系统上运行,包括Windows、Mac和Linux。安装完成后,通过简单的设置,就可以开始使用Wireshark进行网络数据包的捕获和分析,帮助我们深入了解网络通信过程中的问题和异常。 ### 回答2: Wireshark是一款开源的网络分析工具,用于捕获和分析网络数据包。安装Wireshark需要按照以下步骤进行: 1. 访问Wireshark的官方网站(https://www.wireshark.org/),在下载页面选择合适的版本。根据操作系统的不同,有Windows、macOS和Linux等不同版本可供选择。 2. 在下载页面中,选择安装文件对应的操作系统版本进行下载。下载完成后,双击运行安装程序。 3. 开始安装程序后,会出现安装向导。根据提示,点击“下一步”按钮继续。 4. 阅读许可协议并同意后,点击“下一步”。 5. 选择安装的组件。默认情况下,Wireshark将安装Wireshark程序和WinPcap(或者Npcap),这些是Wireshark正常运行所需的组件。如果不需要额外组件,可以直接点击“下一步”。 6. 选择安装位置。可以选择接受默认安装位置,也可以选择自定义位置。点击“下一步”继续。 7. 选择开始菜单文件夹。可以选择接受默认开始菜单文件夹,也可以选择自定义文件夹。点击“下一步”继续。 8. 安装程序将确认安装信息,点击“安装”按钮进行安装。 9. 等待安装程序完成。 10. 安装完成后,可以选择启动Wireshark。启动时,需要以管理员权限运行Wireshark。 11. Wireshark启动后,可以通过选择网络接口开始捕获数据包。选择所需的接口,点击“开始”按钮,Wireshark即可开始捕获数据包并显示详细信息。 安装完成后,可以通过Wireshark分析网络数据包并提供相关的报告和统计信息。在使用Wireshark时,请注意遵守相应的法律规定,确保只在合法的情况下使用该工具。 ### 回答3: Wireshark是一款非常流行的网络抓包工具,它可以用于分析网络流量并帮助我们诊断和解决网络问题。下面是关于Wireshark安装的详细步骤: 1. 在Wireshark官方网站上下载安装程序。打开浏览器,输入“Wireshark官网”并进入官方网站。在下载页面中,选择适合您操作系统的版本,并点击下载按钮。 2. 运行安装程序。安装程序下载完成后,双击打开安装程序并按照提示进行安装。在安装过程中,您可以选择是否安装Wireshark所需的附加组件,如WinPcap或Npcap。 3. 安装完成后,启动Wireshark。安装程序会在您的计算机上创建Wireshark的快捷方式。通过双击该快捷方式,或者在应用程序列表中找到Wireshark并打开它。 4. 配置Wireshark的捕获接口。启动Wireshark后,会弹出一个界面,显示可用的网络接口。选择要抓包的网络接口,点击“开始捕获”按钮开始进行抓包。 5. 分析网络流量。Wireshark开始抓包后,会捕获到所有经过被选中接口的网络流量。您可以使用Wireshark的过滤功能,根据需要来查看和分析特定的网络流量。 总结Wireshark的安装步骤相对简单,只需从官方网站下载安装程序并按照提示进行安装即可。在安装完成后,您可以启动Wireshark并配置捕获接口,然后使用它来分析网络流量。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值