编辑
2025-04-30
折腾工具
00

目录

安装使用 Wireshark
HTTP 分析
DHCP 分析
基本概念
抓包分析
参考

Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。本文初衷是为了以后解决实验室内网排查问题的,后面变成了一篇实验和记录文章,我们将从 Wireshark 的安装开始记录,并进行一些常用的抓包分析工作。

安装使用 Wireshark

Wireshark 快速入门(labex.io)是一个在线体验网站,包含了 Linux 系统上 Wireshark 的安装和使用。

具体的安装过程可以参考后面给出的网站,主要知道 Wireshark 如何开始抓包,以及抓包前和抓包后的过滤规则怎么设置就行。

HTTP 分析

DHCP 分析

基本概念

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种用于自动分配 IP 地址和其他网络配置信息(如子网掩码、默认网关、DNS 服务器)的协议。DHCP 简化了网络管理,允许设备在加入网络时自动获取必要的配置,而无需手动设置。

DHCP 是一个工作在 UDP 上的应用层协议。一般的工作流程可以参见 小林 Coding 中给出的示意图,分为 Discover、Offer、Request、Ack 四个阶段。

image.png

抓包分析

先开始抓包,然后通过 Windows 命令行执行以下命令释放 IP 并重新请求分配 IP:

CMD
ipconfig /release ipconfig /renew

然后结束抓包,用 bootp 或 dhcp 进行过滤,得到以下包

image.png

第一个包是 Release,用于释放 IP,后续四个包是请求分配 IP 过程中收发的包。我们只讨论后面的四个包。后面的四个包就是对应 Discover、Offer、Request、Ack 的四个阶段。其中 xxx.xxx.xxx.254 是 DHCP 服务器的 IP,xxx.xxx.xxx.134 是本机 IP(释放和请求)。

具体的 DHCP 中字段的格式与含义在此不表,可以在后文的参考文章中看到,这里仅放一些我觉得有意思的东西。查看网络包的时候注意到几个问题,我们来分别解答:

Offer、ACK 包中都有目标 IP 了,但是 DHCP 明明还没完成呢!

如果是广播会使用 255.255.255.255,但这里是单播使用的是客户端可能的 IP,实际处理不是依赖这里的 IP 获取 MAC 的,通知客户端的分配的 IP 是在 DHCP 的负载里的

不是说好了 Offer 和 Ack 是广播(255.255.255.255)吗?怎么变成单播了(xxx.xxx.xxx.134 的内网 IP)?

在 Discover 包中的 dhcp.flags 字段会告诉 DHCP 服务器使用单播还是广播。广播的问题在于会影响到广播域里其它所有主机。当主机收到广播报文时,网卡会产生一次硬件中断 CPU,CPU 会暂停手头的工作来处理这个中断,处理完中断,CPU 继续工作。IP 协议栈取走数据,检查之后和自己无关,丢弃。会造成资源的浪费。

参见:DHCP offer 报文到底是单播还是广播?

在我们 Release 掉 IP 之后,DHCP 服务器怎么找到我们的 MAC 的?

不是通过 ARP 协议获取的,而是 Discover 包的 dhcp.hw.mac_addr 字段,由客户端给出的。

为什么重新申请之后又拿到了同样的 IP?

在 Discover 包中的 dhcp.option.requested_ip_address 字段包含了上一次获取到的 IP,如果这个 IP 没有被指派出去,那么依然会重新分配给这台客户端。

租约问题

另外,在 Offer 包的 dhcp.option 中有 ip_address_lease_timedhcp.option.renewal_time_valuedhcp.option.rebinding_time_value 分别代表了租约时长和两个租约续期的时间点。(查看 DHCP 发现租约只有 8 小时,这么抠门?)

参考

本文作者:Zerol Acqua

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!