協議分析 - DHCP協議解碼詳解
-
DHCP協議簡介
DHCP,全稱是 Dynamic Host Configuration Protocol﹐中文名為動態主機配置協議,它的前身是 BOOTP,它工作在OSI的應用層,是一種幫助計算機從指定的DHCP服務器獲取它們的配置信息的自舉協議。
DHCP使用客戶端/服務器模式,請求配置信息的計算機叫做DHCP客戶端,而提供信息的叫做DHCP的服務器。DHCP為客戶端分配地址的方法有三種:手工配置、自動配置、動態配置。
DHCP最重要的功能就是動態分配。除了IP地址,DHCP分組還為客戶端提供其他的配置信息,比如子網掩碼。這使得客戶端無需用戶動手就能自動配置連接網絡。
-
DHCP
的工作流程
發現階段,即DHCP客戶機尋找DHCP服務器的階段。DHCP客戶機以廣播方式(因為DHCP服務器的IP地址對於客戶機來說是未知的)發送DHCP discover發現信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一台安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器才會做出響應。
提供階段,即DHCP服務器提供IP地址的階段。在網絡中接收到DHCP discover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設置的DHCP offer提供信息。
選擇階段,即DHCP客戶機選擇某台DHCP服務器提供的IP地址的階段。如果有多台DHCP服務器向DHCP客戶機發來的DHCP offer提供信息,則DHCP客戶機只接受第一個收到的DHCP offer提供信息,然后它就以廣播方式回答一個DHCP request請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容。之所以要以廣播方式回答,是為了通知所有的DHCP服務器,他將選擇某台DHCP服務器所提供的IP地址。
確認階段,即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCP request請求信息之后,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設置的DHCP ACK確認信息,告訴DHCP客戶機可以使用它所提供的IP地址。然后DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器都將收回曾提供的IP地址。
重新登錄,以后DHCP客戶機每次重新登錄網絡時,就不需要再發送DHCP discover發現信息了,而是直接發送包含前一次所分配的IP地址的DHCP request請求信息。當DHCP服務器收到這一信息后,它會嘗試讓DHCP客戶機繼續使用原來的IP地址,並回答一個DHCP ACK確認信息。如果此IP地址已無法再分配給原來的DHCP客戶機使用時(比如此IP地址已分配給其它DHCP客戶機使用),則DHCP服務器給DHCP客戶機回答一個DHCP NACK否認信息。當原來的DHCP客戶機收到此DHCP NACK否認信息后,它就必須重新發送DHCP discover發現信息來請求新的IP地址。
更新租約,DHCP服務器向DHCP客戶機出租的IP地址一般都有一個租借期限,期滿后DHCP服務器便會收回出租的IP地址。如果DHCP客戶機要延長其IP租約,則必須更新其IP租約。DHCP客戶機啟動時和IP租約期限過一半時,DHCP客戶機都會自動向DHCP服務器發送更新其IP租約的信息。
-
DHCP的報文格式
我們來介紹一下DHCP的報文格式,如圖1,
OP(1) |
Htype(1) |
Hlen(1) |
Hops(1) |
Transaction ID(4) |
|||
Seconds(2) |
Flags(2) |
||
Ciaddr(4) |
|||
Yiaddr(4) |
|||
Siaddr(4) |
|||
Giaddr(4) |
|||
Chaddr(16) |
|||
Sname(64) |
|||
File(128) |
|||
Options(variable) |
(圖1 DHCP的 報文格式)
-
OP:若是client送給server的封包,設為1,反向為2;
-
Htype:硬件類別,ethernet為1;
-
Hlen:硬件長度,ethernet為6;
-
Hops:若數據包需經過router傳送,每站加1,若在同一網內,為0;
-
Transaction ID:事務ID,是個隨機數,用於客戶和服務器之間匹配請求和相應消息;
-
Seconds:由用戶指定的時間,指開始地址獲取和更新進行后的時間;
-
Flags:從0-15bits,最左一bit為1時表示server將以廣播方式傳送封包給 client,其余尚未使用;
-
Ciaddr:用戶IP地址;
-
Yiaddr:客戶IP地址;
-
Siaddr:
用於bootstrap過程中的IP地址;
-
Giaddr:轉發代理(網關)IP地址;
-
Chaddr:client的硬件地址;
-
Sname:可選server的名稱,以0x00結尾;
-
File:啟動文件名;
-
Options:,廠商標識,可選的參數字段
-
解碼
信息
通過DHCP的 工作流程,我們知道從DHCP服務器獲取配置信息的4個階段中,DHCP客戶端會出現有4種報文(DHCPDISCOVERY,DHCPOFFER,DHCPREQUEST,DHCPACK)。我們分別來看看4報文的解碼內容:
-
發現階段
使用科來網絡分析系統捕獲DHCP DISCOVERY 數據包,如圖2,
(圖2 DHCP DISCOVERY數據包解碼)
由圖2可以看到DHCP DISCOVERY包的解碼信息,由於DHCP是BOOTP的以個擴展,,DHCP兼容BOOTP,我們可以看到BOOTP和DHCP的解碼。
-
提供階段
使用科來網絡分析系統捕獲DHCP OFFER數據包,如圖3,
(圖3 DHCP OFFER數據包解碼)
-
選擇階段
使用科來網絡分析系統捕獲DHCP REQUEST數據包,如圖4,
(圖4 DHCP REQUEST數據包解碼)
-
確認階段
使用科來網絡分析系統捕獲DHCP ACK數據包,如圖5,
(圖5 DHCP ACK數據包解碼)
以上為DHCP工作的4種數據包,每種數據包都是有區別的。