DHCP(Dynamic Host Configuration Protocol)
2020年9月10日 by: Bob
一、简介
DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
-
DHCP报文格式
-
报文各字段详细介绍
字段 | 长度 (字节) | 含义 |
---|---|---|
OP | 1 | 表示报文的类型: 1:客户端请求报文 2:服务器响应报文 |
htype | 1 | 表示硬件地址的类型。对于以太网,该类型的值为“1”。 |
hlen | 1 | 表示硬件地址的长度,单位是字节。对于以太网,该值为6。 |
Hops | 1 | 跳数。客户端设置为0,也能被一个代理服务器设置。 |
xid | 4 | 事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该ID由客户端设置并由服务器返回,为32位整数。 |
secs | 2 | 由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数。 |
flags | 2 | 此字段在BOOTP中保留未用,在DHCP中表示标志字段。![]() 只有标志字段的最高位才有意义,其余的位均被置为0。 最左边的字段被解释为广播响应标志位,内容如下所示: 0:客户端请求服务器以单播形式发送响应报文 1:客户端请求服务器以广播形式发送响应报文 |
ciaddr | 4 | 客户端的IP地址。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。 |
yiaddr | 4 | "你自己的"或客户端的IP地址。 |
siaddr | 4 | 表明DHCP协议流程的下一个阶段要使用的服务器的IP地址。 |
giaddr | 4 | 该字段表示第一个DHCP中继的IP地址(注意:不是地址池中定义的网关)。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网络中,那么第一个DHCP中继在转发这个DHCP请求报文时会把自己的IP地址填入此字段。服务器会根据此字段来判断出网段地址,从而选择为用户分配地址的地址池。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。 若在到达DHCP服务器前经过了不止一个DHCP中继,那么第一个DHCP中继后的中继不会改变此字段,只是把Hops的数目加1。 |
chaddr | 16 | 该字段表示客户端的MAC地址,此字段与前面的“Hardware Type”和“Hardware Length”保持一致。当客户端发出DHCP请求时,将自己的硬件地址填入此字段。对于以太网,当“Hardware Type”和“Hardware Length”分别为“1”和“6”时,此字段必须填入6字节的以太网MAC地址。 |
sname | 64 | 该字段表示客户端获取配置信息的服务器名字。此字段由DHCP Server填写,是可选的。如果填写,必须是一个以0结尾的字符串。 |
file | 128 | 该字段表示客户端的启动配置文件名。此字段由DHCP Server填写,是可选的,如果填写,必须是一个以0结尾的字符串。 |
options | 可变 | 该字段表示DHCP的选项字段,至少为312字节,格式为"代码+长度+数据"。DHCP通过此字段包含了服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。 |
-
DHCP报文类型
在DHCP Options中,Option id为53的选项用于区别DHCP报文类型,如下表。
本文重点介绍一次成功DHCP请求使用到的DISCOVER、OFFER、REQUEST、ACK4种报文
Value Message type: 1 DHCPDISCOVER 2 DHCPOFFER 3 DHCPREQUEST 4 DHCPDECLINE 5 DHCPACK 6 DHCPNAK 7 DHCPRELEASE 8 DHCPINFORM
二、利用Wireshark抓取DHCP包
1. 准备
- 先将网卡配置为DHCP客户端
-
将网卡连接释放,而不是禁用网卡,禁用网卡会导致wireshark无法及时抓取此网卡上的数据包
在cmd中输入命令,因为我是多张网卡,我只希望在
以太网 3
上研究DHCP报 文,所以只释放此网卡的连接,单网卡可以不加此参数,输入ipconfig.exe
可以查看所有接口的信息ipconfig.exe /release "以太网 3"
2. 启动wireshark进行抓包
-
选择要进行抓包的网卡:“以太网 3”
-
过滤dhcp报文
-
启动网卡连接
ipconfig.exe /renew "以太网 3"
经过上述步骤之后,稍等片刻即可在wireshark中看到DHCP的数据包
这里产生了4个数据包,类型分别为DHCPDISCOVER、DHCPOFFER、DHCPREQUEST、DHCPACK,下面将分别展示
三、报文分析
1. 抓到的4个数据包分析
-
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
-
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
-
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
-
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种报文介绍
-
DHCP NAK:
服务器对客户端的 DHCP REQUEST 报文的拒绝响应报文,比如服务器对客户
端分配的 IP 地址已超过使用租借期限(服务器没有找到相应的租约记录)或者由于某些原
因无法正常分配 IP 地址,则发送 DHCP NAK 报文作为应答(客户端移到了另一个新的网络)。
通知 DHCP 客户端无法分配合适 IP 地址。DHCP 客户端需要重新发送
DHCP DISCOVERY 报文
来申请新的 IP 地址。 -
DHCP DECLINE:
当客户端发现服务器分配给它的 IP 地址发生冲突时会通过发送此报文
来通知服务器,并且会重新向服务器申请地址。 -
DHCP RELEASE:
客户端可通过发送此报文主动释放服务器分配给它的 IP 地址,当服务
器收到此报文后,可将这个 IP 地址分配给其它的客户端。 -
DHCP INFORM:
客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其
他的一些网络配置信息,比如网关地址、DNS 服务器地址等。