DHCP报文抓包分析

DHCP(Dynamic Host Configuration Protocol)

2020年9月10日 by: Bob

一、简介

​ DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

  1. DHCP报文格式
    在这里插入图片描述

  2. 报文各字段详细介绍

字段长度
(字节)
含义
OP1表示报文的类型:
1:客户端请求报文
2:服务器响应报文
htype1表示硬件地址的类型。对于以太网,该类型的值为“1”。
hlen1表示硬件地址的长度,单位是字节。对于以太网,该值为6。
Hops1跳数。客户端设置为0,也能被一个代理服务器设置。
xid4事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该ID由客户端设置并由服务器返回,为32位整数。
secs2由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数。
flags2此字段在BOOTP中保留未用,在DHCP中表示标志字段。
img
只有标志字段的最高位才有意义,其余的位均被置为0。
最左边的字段被解释为广播响应标志位,内容如下所示:
0:客户端请求服务器以单播形式发送响应报文
1:客户端请求服务器以广播形式发送响应报文
ciaddr4客户端的IP地址。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
yiaddr4"你自己的"或客户端的IP地址。
siaddr4表明DHCP协议流程的下一个阶段要使用的服务器的IP地址。
giaddr4该字段表示第一个DHCP中继的IP地址(注意:不是地址池中定义的网关)。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网络中,那么第一个DHCP中继在转发这个DHCP请求报文时会把自己的IP地址填入此字段。服务器会根据此字段来判断出网段地址,从而选择为用户分配地址的地址池。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。
若在到达DHCP服务器前经过了不止一个DHCP中继,那么第一个DHCP中继后的中继不会改变此字段,只是把Hops的数目加1。
chaddr16该字段表示客户端的MAC地址,此字段与前面的“Hardware Type”和“Hardware Length”保持一致。当客户端发出DHCP请求时,将自己的硬件地址填入此字段。对于以太网,当“Hardware Type”和“Hardware Length”分别为“1”和“6”时,此字段必须填入6字节的以太网MAC地址。
sname64该字段表示客户端获取配置信息的服务器名字。此字段由DHCP Server填写,是可选的。如果填写,必须是一个以0结尾的字符串。
file128该字段表示客户端的启动配置文件名。此字段由DHCP Server填写,是可选的,如果填写,必须是一个以0结尾的字符串。
options可变该字段表示DHCP的选项字段,至少为312字节,格式为"代码+长度+数据"。DHCP通过此字段包含了服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。
  1. DHCP报文类型

    DHCP Options中,Option id为53的选项用于区别DHCP报文类型,如下表。

    本文重点介绍一次成功DHCP请求使用到的DISCOVER、OFFER、REQUEST、ACK4种报文

    ValueMessage type:
    1DHCPDISCOVER
    2DHCPOFFER
    3DHCPREQUEST
    4DHCPDECLINE
    5DHCPACK
    6DHCPNAK
    7DHCPRELEASE
    8DHCPINFORM

二、利用Wireshark抓取DHCP包

1. 准备

  1. 先将网卡配置为DHCP客户端

在这里插入图片描述
在这里插入图片描述

  1. 将网卡连接释放,而不是禁用网卡,禁用网卡会导致wireshark无法及时抓取此网卡上的数据包

    在cmd中输入命令,因为我是多张网卡,我只希望在以太网 3上研究DHCP报 文,所以只释放此网卡的连接,单网卡可以不加此参数,输入ipconfig.exe可以查看所有接口的信息

    ipconfig.exe /release "以太网 3"
    

在这里插入图片描述

2. 启动wireshark进行抓包

  1. 选择要进行抓包的网卡:“以太网 3”

    在这里插入图片描述

  2. 过滤dhcp报文

    在这里插入图片描述

  3. 启动网卡连接

    ipconfig.exe /renew "以太网 3"
    

    经过上述步骤之后,稍等片刻即可在wireshark中看到DHCP的数据包

在这里插入图片描述

这里产生了4个数据包,类型分别为DHCPDISCOVER、DHCPOFFER、DHCPREQUEST、DHCPACK,下面将分别展示

三、报文分析

1. 抓到的4个数据包分析

  1. DHCPDISCOVER

    此数据包由DHCP Client发送,采用广播的形式通知网络内的DHCP服务器自己需要获得一个IP地址,数据如下。

    Dynamic Host Configuration Protocol (Discover)
        Message type: Boot Request (1)
        Hardware type: Ethernet (0x01)
        Hardware address length: 6
        Hops: 0
        Transaction ID: 0x8edf68a8
        Seconds elapsed: 0
        Bootp flags: 0x0000 (Unicast)
        Client IP address: 0.0.0.0
        Your (client) IP address: 0.0.0.0
        Next server IP address: 0.0.0.0
        Relay agent IP address: 0.0.0.0
        Client MAC address: 64:6e:97:0d:73:b4 (64:6e:97:0d:73:b4)
        Client hardware address padding: 00000000000000000000
        Server host name not given
        Boot file name not given
        Magic cookie: DHCP
        Option: (53) DHCP Message Type (Discover)
            Length: 1
            DHCP: Discover (1)
        Option: (61) Client identifier
            Length: 7
            Hardware type: Ethernet (0x01)
            Client MAC address: 64:6e:97:0d:73:b4 (64:6e:97:0d:73:b4)
        Option: (50) Requested IP Address (192.168.1.120)
            Length: 4
            Requested IP Address: 192.168.1.120
        Option: (12) Host Name
            Length: 15
            Host Name: DESKTOP-1DM67I6
        Option: (60) Vendor class identifier
            Length: 8
            Vendor class identifier: MSFT 5.0
        Option: (55) Parameter Request List
            Length: 14
    
    		...(省略)
    
        Option: (255) End
            Option End: 255
    
  2. DHCPOFFER

    DHCP服务器返回的DHCP offer,此报文携带了各种配置信息,包含了一个可以分配的IP地址,也可以包含DNS服务器的地址。

    网络内可能有多个DHCP服务器,因此也可能收到多个offer,本主机所在网络内只有一个DHCP服务器,收到如下报文

    Dynamic Host Configuration Protocol (Offer)
        Message type: Boot Reply (2)
        Hardware type: Ethernet (0x01)
        Hardware address length: 6
        Hops: 0
        Transaction ID: 0x8edf68a8
        Seconds elapsed: 0
        Bootp flags: 0x0000 (Unicast)
        Client IP address: 0.0.0.0
        Your (client) IP address: 192.168.1.120
        Next server IP address: 192.168.1.1
        Relay agent IP address: 0.0.0.0
        Client MAC address: 64:6e:97:0d:73:b4 (64:6e:97:0d:73:b4)
        Client hardware address padding: 00000000000000000000
        Server host name not given
        Boot file name not given
        Magic cookie: DHCP
        Option: (53) DHCP Message Type (Offer)
            Length: 1
            DHCP: Offer (2)
        Option: (54) DHCP Server Identifier (192.168.1.1)
            Length: 4
            DHCP Server Identifier: 192.168.1.1
        Option: (51) IP Address Lease Time
            Length: 4
            IP Address Lease Time: (86400s) 1 day
        Option: (58) Renewal Time Value
            Length: 4
            Renewal Time Value: (43200s) 12 hours
        Option: (59) Rebinding Time Value
            Length: 4
            Rebinding Time Value: (75600s) 21 hours
        Option: (1) Subnet Mask (255.255.255.0)
            Length: 4
            Subnet Mask: 255.255.255.0
        Option: (28) Broadcast Address (192.168.1.255)
            Length: 4
            Broadcast Address: 192.168.1.255
        Option: (3) Router
            Length: 4
            Router: 192.168.1.1
        Option: (6) Domain Name Server
            Length: 8
            Domain Name Server: 192.168.81.1
            Domain Name Server: 61.139.2.69
        Option: (255) End
            Option End: 255
        Padding: 00000000   
    
  3. DHCPREQUEST

    request数据包用于申请offer中给出的IP地址,此时仍然没有真正获得IP地址,所以仍然是广播形式发送。

    Dynamic Host Configuration Protocol (Request)
        Message type: Boot Request (1)
        Hardware type: Ethernet (0x01)
        Hardware address length: 6
        Hops: 0
        Transaction ID: 0x8edf68a8
        Seconds elapsed: 0
        Bootp flags: 0x0000 (Unicast)
        Client IP address: 0.0.0.0
        Your (client) IP address: 0.0.0.0
        Next server IP address: 0.0.0.0
        Relay agent IP address: 0.0.0.0
        Client MAC address: 64:6e:97:0d:73:b4 (64:6e:97:0d:73:b4)
        Client hardware address padding: 00000000000000000000
        Server host name not given
        Boot file name not given
        Magic cookie: DHCP
        Option: (53) DHCP Message Type (Request)
            Length: 1
            DHCP: Request (3)
        Option: (61) Client identifier
            Length: 7
            Hardware type: Ethernet (0x01)
            Client MAC address: 64:6e:97:0d:73:b4 (64:6e:97:0d:73:b4)
        Option: (50) Requested IP Address (192.168.1.120)
            Length: 4
            Requested IP Address: 192.168.1.120
        Option: (54) DHCP Server Identifier (192.168.1.1)
            Length: 4
            DHCP Server Identifier: 192.168.1.1
        Option: (12) Host Name
            Length: 15
            Host Name: DESKTOP-1DM67I6
        Option: (81) Client Fully Qualified Domain Name
            Length: 18
            Flags: 0x00
            A-RR result: 0
            PTR-RR result: 0
            Client name: DESKTOP-1DM67I6
        Option: (60) Vendor class identifier
            Length: 8
            Vendor class identifier: MSFT 5.0
        Option: (55) Parameter Request List
            Length: 14
            
    		...(省略)
    		
        Option: (255) End
        Option End: 255
    
  4. DHCPACK

    DHCP服务器对客户端的REQUEST报文的确认,客户端收到此报文后,才算获得了 IP 地址和相关的配置信息。

    Dynamic Host Configuration Protocol (ACK)
         Message type: Boot Reply (2)
         Hardware type: Ethernet (0x01)
         Hardware address length: 6
         Hops: 0
         Transaction ID: 0x8edf68a8
         Seconds elapsed: 0
         Bootp flags: 0x0000 (Unicast)
         Client IP address: 0.0.0.0
         Your (client) IP address: 192.168.1.120
         Next server IP address: 192.168.1.1
         Relay agent IP address: 0.0.0.0
         Client MAC address: 64:6e:97:0d:73:b4 (64:6e:97:0d:73:b4)
         Client hardware address padding: 00000000000000000000
         Server host name not given
         Boot file name not given
         Magic cookie: DHCP
         Option: (53) DHCP Message Type (ACK)
             Length: 1
             DHCP: ACK (5)
         Option: (54) DHCP Server Identifier (192.168.1.1)
             Length: 4
             DHCP Server Identifier: 192.168.1.1
         Option: (51) IP Address Lease Time
             Length: 4
             IP Address Lease Time: (86400s) 1 day
         Option: (58) Renewal Time Value
             Length: 4
             Renewal Time Value: (43200s) 12 hours
         Option: (59) Rebinding Time Value
             Length: 4
             Rebinding Time Value: (75600s) 21 hours
         Option: (1) Subnet Mask (255.255.255.0)
             Length: 4
             Subnet Mask: 255.255.255.0
         Option: (28) Broadcast Address (192.168.1.255)
             Length: 4
             Broadcast Address: 192.168.1.255
         Option: (3) Router
             Length: 4
             Router: 192.168.1.1
         Option: (6) Domain Name Server
             Length: 8
             Domain Name Server: 192.168.81.1
             Domain Name Server: 61.139.2.69
         Option: (81) Client Fully Qualified Domain Name
             Length: 18
             Flags: 0x03, Server overrides, Server
             A-RR result: 255
             PTR-RR result: 255
             Client name: DESKTOP-1DM67I6
         Option: (255) End
             Option End: 255
    

    2. 另外4种报文介绍

  5. DHCP NAK:

    服务器对客户端的 DHCP REQUEST 报文的拒绝响应报文,比如服务器对客户
    端分配的 IP 地址已超过使用租借期限(服务器没有找到相应的租约记录)或者由于某些原
    因无法正常分配 IP 地址,则发送 DHCP NAK 报文作为应答(客户端移到了另一个新的网络)。
    通知 DHCP 客户端无法分配合适 IP 地址。DHCP 客户端需要重新发送
    DHCP DISCOVERY 报文
    来申请新的 IP 地址。

  6. DHCP DECLINE:

    当客户端发现服务器分配给它的 IP 地址发生冲突时会通过发送此报文
    来通知服务器,并且会重新向服务器申请地址。

  7. DHCP RELEASE:

    客户端可通过发送此报文主动释放服务器分配给它的 IP 地址,当服务
    器收到此报文后,可将这个 IP 地址分配给其它的客户端。

  8. DHCP INFORM:

    客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其
    他的一些网络配置信息,比如网关地址、DNS 服务器地址等。

  • 9
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值