Advertisement

Educoder | 计算机网络实验-DHCP协议分析

阅读量:

第1关:抓取DHCP包

任务描述

本关任务:能够抓取 DHCP 包。

相关知识

为了完成本关任务,你需要掌握:

  1. 掌握 DHCP 工作流程;
  2. 抓取 DHCP 包。
抓取DHCP包

因为很多 Linux/Unix 设备都需要固定 IP 地址,并且在这些设备上配置 DHCP 通常需要管理员权限(以确保网络管理),因此(出于简化实验的目的)我们在此仅提供 Windows 版本的实验内容。

打开命令提示符,输入ipconfig /release释放当前的 IP,截图如下:

打开 wireshark 进行抓包;

命令提示符输入ipconfig /renew,以重新获取一个 IP,截图如下:

命令提示符再次输入ipconfig /renew,截图如下:

命令指示符输入ipconfig /release释放当前的 IP,截图如下:

最后在命令指示符中输入ipconfig /renew重新获取一个 IP,截图如下:

在 Wireshark 中实现捕获数据流量的暂停,并在过滤器设置中将参数配置为 bootp。执行该操作后,在 Wireshark 窗口中捕获到了四份 DHCP 数据包响应:包括 DHCP Discover、DHCP Offer、DHCP Request 和 DHCP Acknowledge。

在详细的消息里,可以看到回答 DHCP 消息是通过 UDP 协议发送的:

操作要求

由于目前为线上实训的环境设置,在线抓取 DHCP 的过程无法即时完成。建议按照以下步骤可在另一台计算机上执行:本次关卡将使用已获取完成的抓包文件进行分析。双击桌面工作区文件夹中的workspace文件夹,在其中找到并打开实训目录下的myshixun文件夹。在该目录下打开名为message-1.txt的数据文件,并将其中提取的关键信息保存到该文件中。具体操作如下:首先,在 Wireshark 中加载 trainerspace 文件夹中的 DHCP 事件日志,并应用 bootp 过滤器提取 DHCP 报文;其次,请确认 DHCP 请求采用的是 UDP 数据报还是 TCP 数据流,并将结果记录至指定文档中;最后,请记录首次 DHCP 发现时对应的 Transaction ID 值,并区分其提供方、请求方及响应方各自的数值。

测试说明

平台会对你编写的代码进行测试,如果与预期结果一致,则顺利通关。


开始你的任务吧,祝你成功!

第2关:DHCP协议分析

任务描述

本关任务:从四组收到的 DHCP 报文进行详细分析。

相关知识

为了完成本关任务,你需要掌握:分析 DHCP 报文。

DHCP协议

DHCP 报文一共有 8 种,各种类型报文的基本功能如下:

通过(0x01)这一机制,当 DHCP 客户端试图获取 IP 地址时,并未掌握 DHCP 服务器的具体位置。因此,在本地网络范围内采用广播方式发送 Discover 请求报文以便于发现这些服务节点的存在。当其他设备接收到该报文后会回复应答信息,并依据这些应答信息确定本地区域内存在的 DHCP 服务节点的位置。

Offer(0x02):当DHCP服务器接收到Discover报文时,在其预设的地址池中进行搜索以获取合适的IP地址,并附加相关的租赁期限以及其他必要的配置参数(如网络设备的网关、域名系统DNS服务器等)。随后生成并发送一个带有详细IP地址分配信息及相关参数的Offer报文至DHCP客户端端口上层协议数据链路层接口(LLC),通知客户端本机可为其提供IP地址服务。然而此报文仅告知客户端本机可为此设备提供IP地址,并非最终确认;真正完成这一过程的是客户端通过ARP协议探测该IP地址是否已被其他设备占用

当 DHCP 客户端接收到大量 DHCP 发送方应答报告时(即多个可能的目标),因此需要从这些响应中进行选择。通常的做法是将第一个 DHCP 发送方应答报告对应的服务器确定为其目标服务器,并通过发送广播式的 DHCP 发送请求报告来通知该服务器。随后会向 DHCP 服务发送单播式的 DHCP 发送请求报告以申请延长租赁。当IP地址分配成功后,在使用的租期达到50%时(即半周期),如果没有收到ACK应答,则当使用周期达到87.5%时(四分之三周期),系统会再一次通过广播形式发送 DHCP 发送请求报告来申请续延租赁。

当DHCP服务器接收到一个Request请求报文时

当DHC服务器接收到一个Request请求包时,在未找到对应的租赁记录的情况下(由于各种原因),将向DHC客户端发送NAK响应报文以通知相关问题。

Release(0x07):当DHCP客户端停止需求获取分配的IP地址时(通常发生在客户端处于关闭或断线状态),该客户端会主动发送相关的release命令给DHCP服务器,并通知DHCP服务器当前不再分配该IP地址。

该报文标识为 Decline(0x04)。当 DHCP 客户端接收到 DHCP 服务器的 Ack 应答数据包后,在进行地址冲突检测时发现存在 server-assigned address 矛盾问题或因其他原因导致无法使用时,则会向 DHCP 服务器发送 Decline 请求数据包。此操作旨在通知目标 IP 地址当前不可用,并期望获取新的可用 IP 地址。

该报文类型:Inform(0x08):当 DHCP 客户端需要从 DHCP 服务器访问更为详细的配置信息时,请向 DHCP 服务器发送该报文。
DHCP 服务器在收到此报文后,将基于租约查找并确定相应的配置信息,并随后向 DHCP 客户端发送 ACK 应答报文。
目前基本不用于实际应用中。

DHCP报文格式如下:

各字段说明如下:

OP:操作类型的标识符。它将包括两种类型的通信包:一种是客户端发送给服务器的数据包(标记为1),另一种是服务器返回给客户端的结果或错误信息(标记为2)。其中,在客户端向服务器发送数据时,默认将其作为请求类型处理;当从服务器获取信息时,默认视为响应类型处理;其中,在客户端向服务器发送的数据包被指定为其序号为1的内容;而当从服务器接收数据时,默认将其作为序号设置为其值的逆序处理

请求信息包括以下几种类型:[1] Discover Type Discovery Report, [2] Download Data Request, [3] Release Release Report, [4] Information Information Report, 和 [5] Termination Termination Report。

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

Htype标识为 DHCP客户端的 MAC 地址类型。
实际上, MAC地址类型的定义是为了明确指定所使用的网络介质。
当 Htype设置为 1时,则表示该 DHCP客户端采用的是最常用的以太网 MAC 地址配置。

HLEn: DHCP客户端所使用的MAC地址长度。基于以太网的标准,MAC地址长度固定为6字节。

Hops字段:表示DHCP报文中所经历的DHCP中继数量,默认初始值设为0。
在DHCP请求报文中,每次遇到一个DHCP中继时该字段会增加数值1。
当数据包无需通过任何DHCP中继时其该字段值设定为0(具体而言当数据包需要通过路由器传输时每次会增加数值1而如果在同一网络内部则维持初始值)。

客户端在发起一次IP地址请求时通过 DHCP Discover 报文所选择的一个随机数值可被视为该次IP地址请求的唯一标识符;这个数值用于作为该次IP地址申请过程中的统一识别标志;在同一IP地址申请过程中所使用的所有报文中其Xid值保持一致。

Secs:DHCP 客户端从连接至网络或续约开始到现在所经历的时长(以秒计)。在尚未连接至网络之前该字段值始终保持为 0(表示 DHCP 客户端已发起 DHCP 请求所需的时间)。目前字段为空或固定为 0

Flags: 标志字段仅占用了第零位置,并被定义为广播响应标记字段,用于表示DHCP服务器响应包交换是采用单播还是广播方式进行,其中数值为零时表明服务器将采用单播传输模式,数值设为一则表示服务器将采用广播传输模式,剩余的位置尚未被定义(即从零到十五号位置,最高有效位置编号为一时表示服务器将通过广播方式向客户端发送数据包)

在客户端正式分配其 IP 地址前的一次 IP 地址请求过程中,在没有完成 IP 地址分配的情况下发起的一系列 DHCP 报文均采用广播方式进行发送。这些广播型报文中包含客户端发出的 DHCP Discover 和 DHCP Request 消息,并且还包括由 DHCP 服务器发送出去的所有响应型消息(如 DHCP Offer、DHCP ACK 和 DH NAK)。值得注意的是,在使用 DHCP 中继的情况下,则所有的相关 DHCP 报文均为单播发送方式。此外,在进行 IP 地址续期和释放的过程中所涉及的相关报文也均采用单播方式进行传输。

Ciaddr表示为 DHCP 客户端的 IP 地址。它仅在 DHCP 服务器发送相应的 ACK 报文时才会被显示出来。这是因为 DHCP 客户端只有在获得服务器确认信息之前,并不能立即分配到固定的 IP 地址。而在其他情况下则会显示该信息——只有当客户端处于 Bound、Renew 或 Rebinding 状态,并且能够响应 ARP 请求时才会被填充。

Yiaddr:该 DHCP 服务器会赋予受分配端口相应的 IP 地址权限。该字段值仅会在 DHCP 服务器发送相应的 Offer 和 ACK 报文时被设置或更新;否则,默认值则会被标记为 0。

Siaddr:该 DHCP 服务器负责将下一 DHCP 客户端所需的 IPv4 地址及相关配置参数传输至相应的响应和确认报文字段中,在此字段中未提及的内容则设置为零值。(用于启动过程中所需的第一阶段 IP 地址分配)

通常表示服务器的IP地址信息。需要注意的是,在跨子网转发的情况下(即报文中源地址、Siaddr、option­>server_id字段出现不一致),一般会将option­>srever_id字段视为真实的服务器IP地址,并指出Siaddr可能只是某个中间节点上的IP地址。

Giaddr: 当 DHCP 客户端发送数据包时的第一个 DHCP 转发代理所赋予的 IP 地址;若未经历 DHCP 转发代理,则数值设为 0.

Chaddr: DHCP 适配器的设备标识符将在所有 DHCP 报文字段中进行记录。 Chaddr信息将被包含在所有 DHCP 报文字段中。

Sname:配置 DHCP 客户端获取 IP 地址的 DHCP 服务器名称(采用 DNSSpecificFormat 标志)。在响应和确认报文中指示该客户端应由哪个 DHCP 服务器进行 IP 分配,在其他类型的报文中则标记为 0。

Configuration File: The DHCP server configures the file name and path information of the startup configuration for DHCP clients. This information only appears in the DHCP Offer report and is left blank in other reports.

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

代码 长度/字节 说明
1 4 子网掩码
3 长度可变,必须是 4 字节的倍数 默认网关(可以是一个路由器 IP 地址列表)
6 长度可变,必须是 4 字节的倍数 DNS 服务器(可以是一个 DNS 服务器 IP 地址列表)
15 长度可变 域名称(主 DNS 服务器名称)
42 长度可变,必须是 4 字节的倍数 NTP 服务器(可以是一个 NTP 服务器 IP 地址列表)
44 长度可变,必须是 4 字节的倍数 WINS 服务器(可以是一个 WINS 服务器 IP 地址列表)
51 4 有效租约期(以秒为单位)
53 1 报文类型(1 ~ 8)分别表示:Discover,Offer,Request,Decline,ACK,NAK,Release,Inform
58 4 续约时间
60 长度可变 Authentication for DHCP Message,用来完成基于标准DHCP协议,以在客户端输入用户名和密码的方式进行地址鉴权主要用在按用户认证收费场合,与之对应的是pppoe认证计费
255 0 标记 Options 结束
DHCP Discover数据包
DHCP Offer数据包

当DHCP服务器接收到一条DHCP Discover数据报时(即接收该数据包),它会通过发送一个DHCP Offer包来回应客户端:

发送 DHCP Offer 消息的 DHCP 服务器 IP 是172.31.159.254,如下截图:

DHCP Request包

当 DHCP 资源分配包被发送至Client后,系统会确认是否存在能够与其交互的 DHCP 服务器。随后Client发送了一个Request数据包以发起IP地址分配请求。当前状态下的源IP和目标IP分别为0.0.0.0255.255.255.255

DHCP ACK包

服务器用 DHCP ACK 包对 DHCP 请求进行响应:

在实验中,在客户端处接收的数据中包含了与该地址相关的配置参数。请问在上述实验设置下,请问租约的时间参数是多少?

操作要求

通过双击桌面上的工作区文件夹workspace启动程序,在其中找到并打开实训文件夹myshixun以及文件message-2.txt。完成信息查询后,请将收集到的数据保存到该文件中。具体操作如下:(1)启动 Wireshark 软件,并将实训文件夹中的dhcp-ethereal-trace-1文件加载进来,并筛选出其中所有的 DHCP 报文;(2)请确认本机 DHCP 服务器当前分配的 IP 地址是多少,并记录下来;(3)打开 Option 消息界面,在此查看本次实验中所使用的 IP 租约时间跨度有多长,并将相关数据填写在相应的文档区域中。

测试说明

平台会对你回答的结果进行测试,如果与预期结果一致,则顺利通关。


开始你的任务吧,祝你成功!

全部评论 (0)

还没有任何评论哟~