当前位置: 首页 > news >正文

Wireshark笔记-DHCP流程与数据包解析

背景

DHCP从大学上网络课时就开始知道了,当时只知道,能让计算机上网,要不就静态配IP,要不就DHCP获取,就能上网。

2021年时,毕业好几年了,想学习下网络知识,就准备考一个软考网工。按要求了解了DHCP的4个交互过程。

今天(2025年),准备把这4个交互过程使用Wirshark抓取出来,分析下。

知识点

DHCP 全称动态主机配置协议(Dynamic Host Configuration Protocol),是一种网络管理协议。它能自动为接入网络的设备(如手机、电脑)分配 IP 地址、子网掩码、网关、DNS 服务器等关键网络参数,无需手动配置。

设备接入时会向 DHCP 服务器发送请求,服务器根据规则分配地址并设定租期,租期到后可续租或重新分配,有效避免 IP 冲突,简化网络运维,是局域网和广域网中保障设备联网的核心协议。

下面再给出2021年4月11号,做的笔记

这个比较重要,看看Wireshark是不是按照这个逻辑走的。

DHCP客户端与DHCP服务端交互过程

① DHCP客户端会发起DHCPDiscover广播消息,向所有DHCP服务器请求IP地址租约,此时源IP地址为0.0.0.0,广播地址为255.255.255.255,请求数据包会客户端的MAC和计算机名。

② 所有接收到DHCPDiscover广播包的服务器,会检测自己的配置,如果富余的IP地址,则DHCP服务器发起DHCPOffer广播消息来应答DHCP客户端,如果有多个DHCP服务器给予此DHCP客户端DHCPOffer消息,则DHCP客户端接收第一个DHCPOffer消息中的IP地址。

③ 当DHCP客户端收到DHCP服务器的租约时,它将发起DHCPRequest广播消息,告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。在此DHCPRequest广播消息中包含了DHCP服务端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,所有其他的DHCP服务器收到其广播包后,收回它们以此DHCP客户端所保留的IP地址租约。此时由于没有得到DHCP服务器确认,DHCP客户端仍然不能使用租约中提供的IP地址,所以在此数据包中仍然使用0.0.0.0作为源IP地址,广播地址255.255.255.255作为目的地址。

④  提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCPRequest广播消息后,会发送DHCPAck广播消息进行最后的确认,在这个消息中同样包含了租约期限及其他TCP/IP选项信息。

过程

Wireshark抓包如下:

在Wireshark的Info中可以看到逻辑上与知识点保持一致。

Discover -> Offer -> Request -> Ack

现在来看下Discover

从中可知,发送了广播包(这里很好理解,因为没有ip地址,他想与其他计算机通信,只能发广播包)

其中包含了MAC地址和主机名。其他比较有意思点:

Option 61(Client Identifier):唯一标识客户端(避免多网卡 / 虚拟环境的 IP 冲突)。

Option 60(Vendor class identifier):MSFT 5.0 → 客户端厂商标识(此处为Windows 系统,服务器可据此下发专属配置)。

Transaction ID:0x95903b9c,会话标识(与客户端 Discover 报文中的 ID 一致,确保请求 - 响应配对)。

接下来看Offer 

可知关键的信息:

Your (client) IP:192.168.23.101,服务器分配给客户端的 IP 地址(核心内容)。

Next server IP:192.168.23.138,DHCP 服务器自身 IP(告诉客户端:后续交互找我)。

Client MAC:74:d8:3e:ed:8d:61 客户端网卡 MAC(精准定位请求者,避免冲突)。

Transaction ID:0x95903b9c,会话标识(与客户端 Discover 报文中的 ID 一致,确保请求 - 响应配对)。

接下来看Request 

Option 50(请求 IP):192.168.23.101,客户端明确请求 Offer 中分配的 IP(告诉服务器:“我就要这个 IP”)。

Option 54(服务器 ID):192.168.23.138,客户端指定 响应的服务器(排除其他 Offer 的服务器,避免干扰)。

Option 61(客户端 ID):客户端 MAC(唯一标识,防止冒充)。

Transaction ID:0x95903b9c,会话标识(与客户端 Discover 报文中的 ID 一致,确保请求 - 响应配对)。

最后看下ACK

当DHCP服务端回ACK后,说明是正式授权。重要的字段和上面3个包都一样。说下最后那两个:

Option 1(子网掩码):255.255.255.0,客户端的子网掩码(划分网络范围,如 192.168.23.xxx 属同一子网)。

Option 28(广播地址):192.168.23.255,本网段的广播地址(客户端发广播包时使用,如 DHCP 续租)。

http://www.dtcms.com/a/350376.html

相关文章:

  • Linux驱动开发笔记(七)——并发与竞争(上)——原子操作
  • SQLite 全面指南与常用操作
  • 没有AI背景的团队如何快速进行AI开发
  • expdp导出dmp到本地
  • docker 安装配置 redis
  • PDF处理控件Spire.PDF系列教程:在 C# 中实现 PDF 与字节数组的互转
  • 2025年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • synchronized关键字的底层原理
  • 蘑兔音乐:创作好搭子
  • 嵌入式C语言进阶:深入理解sizeof操作符的精妙用法
  • 隧道监测实训模型
  • 讲解 JavaScript 中的深拷贝和浅拷贝
  • PyPI 是什么?
  • CCleaner中文版:强大的系统优化与隐私保护工具,支持清理磁盘、注册表和卸载软件
  • `mysql_query()` 数据库查询函数
  • Ubuntu 22.04 中安装 ROS2 Humble
  • Java AI插件“飞算“实战测试:一键生成医院药品管理系统
  • Maven下载历史版本
  • 大模型微调 Prompt Tuning与P-Tuning 的区别?
  • 【44页PPT】DeepSeek在银行业务场景的应用(附下载方式)
  • AI 应用开发:从 Prompt 工程到实战应用开发
  • 基于RD算法的多目标SAR成像原理及MATLAB实现
  • 离线开发平台-HTTP数据同步到Doris数仓能力演示
  • GNN:用MPNN(消息传递神经网络)落地最短路径问题模型训练全流程
  • VS2010 在查找预编译头使用时跳过
  • 微服务商城构筑其一
  • [系统架构设计师]知识产权(二十)
  • 深度学习篇---混淆矩阵
  • 工业物联网如何提高生产效率
  • IsaacLab的关键函数位置