网络协议—DHCP协议

admin 2025-12-26 01:37:30 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细阐述了DHCP协议的定义、核心作用及DORA四步交互工作流程,通过实验演示了服务器配置与抓包验证。深入解析了Discover、Offer、Request及ACK报文的网络层、传输层结构及关键选项字段,适合理解局域网自动地址分配原理及协议细节。 综合评分: 85 文章分类: 网络安全,安全培训,安全工具,解决方案


cover_image

网络协议—DHCP协议

原创

老五

老五说网络

2025年12月25日 16:30 陕西

一、什么是 DHCP?

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种应用层网络协议,用于在局域网中自动为客户端设备分配 IP 地址及相关网络配置参数,无需用户手动设置。它基于 UDP 协议工作(服务器端口 67,客户端端口 68),是现代 TCP/IP 网络中实现“即插即用”联网的关键技术。

二、DHCP 的核心作用

  • 自动分配 IP 地址
  • 避免手动配置错误和地址冲突。
  • 集中管理网络参数
  • 统一配置网关、DNS、域名等信息。
  • 高效利用 IP 资源
  • 通过“租约”机制回收不再使用的 IP 地址。
  • 简化设备接入
  • 新设备(如手机、笔记本)接入网络后可立即通信。

三、DHCP 工作流程(DORA 四步交互)

DHCP 使用 广播 + 单播 相结合的方式完成地址分配:

  1. Discover(发现)
  • 客户端启动后,发送 广播 报文 DHCP Discover(源 IP: 0.0.0.0,目标 IP: 255.255.255.255)
  • 目的:寻找网络中的 DHCP 服务器
  1. Offer(提供)
  • DHCP 服务器收到 Discover 后,从地址池中选择一个可用 IP
  • 发送 单播或广播 的 DHCP Offer 报文,包含:IP 地址,子网掩码,租期,其他可选参数(如网关、DNS)

说明:可能有多个服务器响应,客户端通常选择第一个收到的 Offer

  1. Request(请求)
  • 客户端广播 DHCP Request,声明接受某个服务器的 Offer
  • 同时通知其他服务器:“我不需要你们的 IP 了”
  1. Acknowledge(确认)
  • 被选中的服务器回复 DHCP ACK
  • 正式确认 IP 分配,客户端开始使用该 IP
  • 若 IP 冲突或不可用,则回复 DHCP NAK(否定应答)

总结:此过程称为 DORA(Discover → Offer → Request → Ack)

四、实验验证

1.拓扑图

2.DHCP-server配置

# dhcp enable(开启DHCP服务)#vlan 10(创建用户VLAN)#dhcp server ip-pool 1(配置DHCP地址池) gateway-list 192.168.1.254(网关地址) network 192.168.1.0 mask 255.255.255.0(子网网段) expired day 10 hour 12(租期)#interface Vlan-interface10(创建SVI接口,配置网关地址) ip address 192.168.1.254 255.255.255.0#interface GigabitEthernet1/0/1(配置连接用户PC机接口) port link-mode bridge port access vlan 10 combo enable copper#

3.验证PC1自动地址获取

五、DHCP数据报文分析

通过wireshark抓取PC1主机获取地址的过程,在wireshark中通过bootp进行数据包过滤,如下图:

  1. DHCP Discover(发现)
  • 客户端广播发送 Discover,寻找 DHCP 服务器
  • 源 IP:0.0.0.0(未分配 IP)
  • 目标 IP:255.255.255.255(广播地址)

说明:客户端正在尝试获取网络配置,多次重复发送 Discover,可能是重传机制(超时未收到响应)

注释:

网络层(Internet Protocol)

  • 源 IP:0.0.0.0 → 客户端尚未获得 IP
  • 目标 IP:255.255.255.255 → 广播地址
  • 协议:UDP

传输层(User Datagram Protocol)

  • 源端口:bootpc (68) → DHCP 客户端端口
  • 目的端口:bootps (67) → DHCP 服务器端口
  • 长度:308 字节
  • 校验和:0x36bf(验证已禁用)

应用层(Bootstrap Protocol – BOOTP)

  • 消息类型:Boot Request (1) → 表示是客户端请求

  • 硬件类型:Ethernet(以太网)

  • 硬件地址长度:6 字节(MAC 地址)

  • 跳数(Hops):0 → 未经过中继

  • 事务 ID(Transaction ID):0xd4ab3f1c → 标识本次 DHCP 会话

  • 经过时间(Seconds elapsed):0 → 刚发起请求

  • BOOTP 标志:0x8000 → 广播标志位被置位(即广播报文)

  • 客户端 IP 地址:0.0.0.0 → 无有效 IP

  • 你的(客户端)IP 地址:0.0.0.0 → 尚未分配

  • 下一跳服务器 IP:0.0.0.0 → 未知

  • 中继代理 IP:0.0.0.0 → 无中继

  • 客户端 MAC 地址:8e:4b:1a:a5:06:06

  • DHCP 选项(Options)

  • Option 53 (t=53,l=1) 内容:DHCPMessageType = DHCP Discover 描述:表明这是 DHCP 发现报文(Discover),用于查找服务器
  • Option 55 (t=55,l=12) 内容:Parameter Request List 描述:客户端请求以下参数:子网掩码,默认网关,DNS 服务器,域名,租期等(共 12 个)
  • Option 57 (t=57,l=2) 内容:Maximum DHCP Message Size = 1152描述:客户端支持的最大 DHCP 报文大小为 1152 字节
  • Option 60 (t=60,l=8) 内容:Vendor Class Identifier = “H3C. H3c” 描述:客户端设备厂商标识,表明是 H3C 设备(如交换机、路由器)
  • Option 61 (t=61,l=23) 内容:Client Identifier 描述:客户端唯一标识符(通常为 MAC 地址)
  1. DHCP Offer(提供)
  • 源 IP:192.168.1.254 → 这是 DHCP 服务器的 IP 地址
  • 目标 IP:255.255.255.255(广播)

说明:服务器已响应客户端请求,提供了 IP 配置,服务器向客户端提供一个可用 IP 地址。

注释:

网络层(Internet Protocol)

  • 源 IP:192.168.1.254 → DHCP 服务器地址
  • 目标 IP:255.255.255.255 → 广播地址
  • 协议:UDP (17)

传输层(User Datagram Protocol)

  • 源端口:bootps (67) → DHCP 服务器端口
  • 目的端口:bootpc (68) → DHCP 客户端端口
  • 长度:308 字节
  • 校验和:0x4ec2(验证已禁用)

应用层(Bootstrap Protocol – BOOTP)

  • 消息类型:Boot Reply (2) → 表示是服务器响应
  • 硬件类型:Ethernet(以太网)
  • 硬件地址长度:6 字节
  • 跳数(Hops):0 → 未经过中继
  • 事务 ID(Transaction ID):0xd4ab3f1c → 与客户端请求一致,表示是对应回复
  • 经过时间(Seconds elapsed):0 → 快速响应
  • BOOTP 标志:0x8000 → 广播标志位被置位(即广播发送)
  • 客户端 IP 地址:0.0.0.0 → 客户端尚未分配 IP
  • 你的(客户端)IP 地址:192.168.1.1 → 服务器提供的 IP 地址
  • 下一跳服务器 IP:0.0.0.0
  • 中继代理 IP:0.0.0.0
  • 客户端 MAC 地址:8e:4b:1a:a5:06:06 → 与之前 Discover 报文一致
  • DHCP 选项(Options)

  • Option 53 (t=53,l=1) 内容:DHCP Message Type = DHCP Offer描述:这是一条 DHCP 提供报文(Offer),表示服务器愿意分配 IP
  • Option54(t=54,l=4) 内容:DHCPServerIdentifier = 192.168.1.254 描述:提供服务的 DHCP 服务器 IP 地址
  • Option 51 (t=51,l=4) 内容:IP Address Lease Time = 10 days, 12 hours 描述:租期为 10 天 12 小时,客户端需在此时间内续租
  • Option 58 (t=58,l=4) 内容:Renewal Time Value = 5 days, 6 hours时间点:租期过半时尝试续租(5天6小时后)
  • Option 59 (t=59,l=4) 内容:Rebinding Time Value = 9 days, 4 hours, 30 minutes 描述:时间点:租期 87.5% 时广播续租(9天4小时30分钟后)
  • Option 1 (t=1,l=4) 内容:Subnet Mask = 255.255.255.0描述:子网掩码为 /24
  • Option 3 (t=3,l=4) 内容:Router = 192.168.1.254 描述:默认网关为 192.168.1.254(与服务器 IP 相同)
  1. DHCP Request(请求)
  • 客户端再次广播 Request,表示接受该 Offer
  • 交易 ID 与 Offer 一致,确认选择该服务器

注释:

网络层(Internet Protocol)

  • 源 IP:0.0.0.0 → 客户端尚未获得有效 IP
  • 目标 IP:255.255.255.255 → 广播地址
  • 协议:UDP (17)

传输层(User Datagram Protocol)

  • 源端口:bootpc (68) → DHCP 客户端端口
  • 目的端口:bootps (67) → DHCP 服务器端口
  • 长度:317 字节
  • 校验和:0xdbc0(验证已禁用)

应用层(Bootstrap Protocol – BOOTP)

  • 消息类型:Boot Request (1) → 表示是客户端请求

  • 硬件类型:Ethernet(以太网)

  • 硬件地址长度:6 字节

  • 跳数(Hops):0 → 未经过中继

  • 事务 ID(Transaction ID):0xd4ab3f1c → 与之前 Offer 报文一致,表示是对应响应

  • 经过时间(Seconds elapsed):0 → 刚发起请求

  • BOOTP 标志:0x8000 → 广播标志位被置位(即广播发送)

  • 客户端 IP 地址:0.0.0.0 → 无有效 IP

  • 你的(客户端)IP 地址:0.0.0.0 → 尚未分配

  • 下一跳服务器 IP:0.0.0.0

  • 中继代理 IP:0.0.0.0

  • 客户端 MAC 地址:8e:4b:1a:a5:06:06

  • DHCP 选项(Options)

  • Option 53 (t=53,l=1) 内容:DHCPMessageType = DHCP Request 描述:这是一条 DHCP 请求报文(Request),表示客户端接受某个 Offer
  • Option 54 (t=54,l=4) 内容:DHCP Server Identifier = 192.168.1.254 描述:客户端明确请求来自 192.168.1.254 的服务器提供的 IP
  • Option 50 (t=50,l=4) 内容:Requested IP Address = 192.168.1.1 描述:客户端请求的具体 IP 地址为 192.168.1.1
  • Option 55 (t=55,l=12) 内容:Parameter Request List 描述:客户端请求以下参数:子网掩码,默认网关,DNS 服务器,域名等(共 12 个)
  • Option 57 (t=57,l=2) 内容:Maximum DHCP Message Size = 1152 描述:客户端支持的最大 DHCP 报文大小为 1152 字节
  • Option 60 (t=60,l=8) 内容:Vendor Class Identifier = “H3C. H3c” 描述:客户端设备厂商标识,表明是 H3C 设备(如交换机、路由器)
  • Option 61 (t=61,l=23) 内容:Client Identifier 描述:客户端唯一标识符(通常为 MAC 地址)
  1. DHCP ACK(确认)
  • 服务器回复 ACK,正式确认 IP 分配成功
  • 客户端可以使用该 IP 地址进行通信

注释:

网络层(Internet Protocol)

  • 源 IP:192.168.1.254 → DHCP 服务器地址
  • 目标 IP:255.255.255.255 → 广播地址
  • 协议:UDP (17)

传输层(User Datagram Protocol)

  • 源端口:bootps (67) → DHCP 服务器端口
  • 目的端口:bootpc (68) → DHCP 客户端端口
  • 长度:308 字节
  • 校验和:0x4bc2(验证已禁用)

应用层(Bootstrap Protocol – BOOTP)

  • 消息类型:Boot Reply (2) → 表示是服务器响应

  • 硬件类型:Ethernet(以太网)

  • 硬件地址长度:6 字节

  • 跳数(Hops):0 → 未经过中继

  • 事务 ID(Transaction ID):0xd4ab3f1c → 与客户端 Request 报文一致,表示是对应回复

  • 经过时间(Seconds elapsed):0 → 快速响应

  • BOOTP 标志:0x8000 → 广播标志位被置位(即广播发送)

  • 客户端 IP 地址:0.0.0.0 → 客户端尚未分配 IP

  • 你的(客户端)IP 地址:192.168.1.1 → 服务器正式分配的 IP 地址

  • 下一跳服务器 IP:0.0.0.0

  • 中继代理 IP:0.0.0.0

  • 客户端 MAC 地址:8e:4b:1a:a5:06:06 → 与之前请求一致

  • DHCP 选项(Options)

  • Option 53 (t=53,l=1) 内容:DHCP Message Type = DHCP ACK 描述:这是一条 DHCP 确认报文(ACK),表示服务器同意分配 IP
  • Option 54 (t=54,l=4) 内容:DHCP Server Identifier = 192.168.1.254描述:提供服务的 DHCP 服务器 IP 地址
  • Option 51 (t=51,l=4) 内容:IP Address Lease Time = 10 days, 12 hours 描述:租期为 10 天 12 小时,客户端需在此时间内续租
  • Option 58 (t=58,l=4) 内容:Renewal Time Value = 5 days, 6 hours描述:时间点:租期过半时尝试续租(5天6小时后)
  • Option 59 (t=59,l=4) 内容:Rebinding Time Value = 9 days, 4 hours, 30 minutes 描述:时间点:租期 87.5% 时广播续租(9天4小时30分钟后)
  • Option 1 (t=1,l=4) 内容:Subnet Mask = 255.255.255.0 描述:子网掩码为 /24
  • Option 3 (t=3,l=4) 内容:Router = 192.168.1.254 描述:默认网关为 192.168.1.254(与服务器 IP 相同)

公众号:老五说网络

长按左侧二维码关注


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:老五说网络 老五《网络协议—DHCP协议》

评论:0   参与:  2