1 分钟阅读 次阅读

分析命令

  • 在终端中对包进行监听分析
    tcpdump -i eth0 port 67 or port 68 -vvv
    
  • 在另一个终端中进行DHCP请求
    dhclient -v eth0
    

结果分析

以下是针对 DHCP 协议交互过程的四个阶段分析:

阶段 1:DHCP Discover(客户端广播请求)

  • 传输方向:客户端(0.0.0.0)→ 广播(255.255.255.255
  • 报文类型BOOTP/DHCP Request(类型为 Discover,对应选项 53: Discover
  • 目的:客户端主动广播寻找可用的 DHCP 服务器。
  • 关键字段
    • 源 IP 0.0.0.0(客户端未分配 IP)、目标 IP 255.255.255.255(广播地址)。
    • 客户端 MAC 50:0a:52:10:12:27,主机名 RK3568
    • 请求参数列表(Option 55):子网掩码、网关、DNS 等。

Bash 输出片段

10:43:39.709011 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 50:0a:52:10:12:27
          DHCP-Message Option 53, length 1: Discover
          Hostname Option 12, length 6: "RK3568"

alt text


阶段 2:DHCP Offer(服务器单播响应)

  • 传输方向:服务器(_gateway)→ 客户端(192.168.0.134
  • 报文类型BOOTP/DHCP Reply(类型为 Offer,对应选项 53: Offer
  • 目的:服务器向客户端提供 IP 配置参数(如 IP、子网掩码、网关等)。
  • 关键字段
    • 分配的 IP 192.168.0.134,租约时间 7200 秒(约 2 小时)。
    • 服务器标识(_gateway,IP 为 192.168.0.1,未直接显示但可从后续交互推断)。
    • 提供的配置参数:子网掩码 255.255.255.0、网关、DNS 等。

Bash 输出片段

10:43:40.524091 IP _gateway.bootps > 192.168.0.134.bootpc: BOOTP/DHCP, Reply
          DHCP-Message Option 53, length 1: Offer
          Your-IP 192.168.0.134
          Subnet-Mask Option 1, length 4: 255.255.255.0
  • 注意: 网络中可能有多个 DHCP 服务器(例如主路由和旁路由),客户端通常会收到多个 Offer,但通常会优先接受第一个到达的。 alt text

阶段 3:DHCP Request(客户端广播确认)

  • 传输方向:客户端(0.0.0.0)→ 广播(255.255.255.255
  • 报文类型BOOTP/DHCP Request(类型为 Request,对应选项 53: Request
  • 目的:客户端确认接受服务器的 Offer,并广播告知所有 DHCP 服务器其选择。
  • 关键字段
    • 请求的 IP 192.168.0.134(通过 Option 50 明确指定)。
    • 服务器标识(_gateway),表明选择此服务器提供的配置。

Bash 输出片段

10:43:40.524623 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request
          DHCP-Message Option 53, length 1: Request
          Requested-IP Option 50, length 4: 192.168.0.134

alt text


阶段 4:DHCP ACK(服务器单播确认)

  • 传输方向:服务器(_gateway)→ 客户端(192.168.0.134
  • 报文类型BOOTP/DHCP Reply(类型为 ACK,对应选项 53: ACK
  • 目的:服务器确认客户端的 Request,正式分配 IP 配置。
  • 关键字段
    • 重复提供 IP 192.168.0.134 及配置参数,与 Offer 一致。
    • 租约时间(7200 秒)生效。

Bash 输出片段

10:43:40.550810 IP _gateway.bootps > 192.168.0.134.bootpc: BOOTP/DHCP, Reply
          DHCP-Message Option 53, length 1: ACK
          Your-IP 192.168.0.134
          Lease-Time Option 51, length 4: 7200

alt text


总结

  1. Discover:客户端广播寻找服务器。
  2. Offer:服务器单播提供配置。
  3. Request:客户端广播确认选择。
  4. ACK:服务器单播确认分配。

特殊说明

  • 客户端在 Request 阶段仍使用广播(而非单播),目的是通知其他可能存在的 DHCP 服务器“已选择某台服务器”。
  • 服务器在 OfferACK 阶段通过单播(目标 IP 192.168.0.134)发送,但实际链路层仍可能为广播(依赖 ARP 缓存或协议实现)。
  • 通过 tcpdump 过滤条件 port 67 or 68 可精准捕获 DHCP 流量(67 为服务器端口,68 为客户端端口)。

留下评论