DHCP(Dynamic Host Configuration Protocol)
2020年9月10日 by: Bob
一、簡介
DHCP(Dynamic Host Configuration Protocol),動态主機配置協定,是一個應用層協定。當我們将客戶主機ip位址設定為動态擷取方式時,DHCP伺服器就會根據DHCP協定給用戶端配置設定IP,使得客戶機能夠利用這個IP上網。
- DHCP封包格式
DHCP封包抓包分析DHCP(Dynamic Host Configuration Protocol) - 封包各字段詳細介紹
字段 | 長度 (位元組) | 含義 |
---|---|---|
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中輸入指令,因為我是多張網卡,我隻希望在
上研究DHCP報 文,是以隻釋放此網卡的連接配接,單網卡可以不加此參數,輸入以太網 3
可以檢視所有接口的資訊ipconfig.exe
2. 啟動wireshark進行抓包
- 選擇要進行抓包的網卡:“以太網 3”
DHCP封包抓包分析DHCP(Dynamic Host Configuration Protocol) - 過濾dhcp封包
DHCP封包抓包分析DHCP(Dynamic Host Configuration Protocol) -
啟動網卡連接配接
經過上述步驟之後,稍等片刻即可在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 伺服器位址等。