1. 程式人生 > >Wireshark分析DHCP

Wireshark分析DHCP

CP 獲得 img http star class 進行 PC 簡介

文章轉載 自 https://blog.csdn.net/qq_24421591/article/details/50936469

(0.0.0.0已經不是一個真正意義上的IP地址了。   它表示的是這樣一個集合:   

1、所有不清楚的主機和目的網絡。這裏的“不清楚”是指在本機的路由表裏沒有特定條目指明如何到達。  

 2、對本機來說,它就是一個“收容所”,所有不認識的“三無”人員,一 律送進去。)

一,動態主機配置協議DHCP

1,DHCP簡介

DHCP(Dynamic Host Configuration Protocol),動態主機配置協議,是一個應用層協議。當我們將客戶主機ip地址設置為動態獲取方式時,DHCP服務器就會根據DHCP協議給客戶端分配IP,使得客戶機能夠利用這個IP上網。

DHCP的前身是BOOTP協議(Bootstrap Protocol),BOOTP被創建出來為連接到網絡中的設備自動分配地址,後來被DHCP取代了,DHCP比BOOTP更加復雜,功能更強大。後面可以看到,在用Wireshark過濾顯示DHCP包,需要輸入過濾條件BOOTP,而不是DHCP,但或許是因為我使用的Wireshark版本是比較舊的1.12.9,沒有在新版本中嘗試過,也許可以輸入DHCP讓其只顯示DHCP包。

2,DHCP的實現

技術分享圖片
DHCP的實現分為4步,分別是:
第一步:Client端在局域網內發起一個DHCP Discover包,目的是想發現能夠給它提供IP的DHCP Server。
第二步:可用的DHCP Server接收到Discover包之後,通過發送DHCP Offer包給予Client端應答,意在告訴Client端它可以提供IP地址。
第三步:Client端接收到Offer包之後,發送DHCP Request包請求分配IP。
第四步:DHCP Server發送ACK數據包,確認信息。


二,利用Wireshark抓取DHCP包

1,分析

要想抓取到DHCP包,先要保證有可用的DHCP服務器,然後將主機IP地址獲取方式設置為自動獲取。如果主機在抓包之前已經聯網,需要先斷開主機的網絡連接,然後再連接網絡。在cmd下使用命令ipconfig來完成網絡斷開與連接的過程:

 ipconfig /release 斷開主機當前的網絡連接 
 ipconfig /renew   請求連接網絡
  • 1
  • 2
  • 3

在cmd中可以使用ipconfig /?查看各參數的含義:
技術分享圖片
(1)ipconfig /release
斷開當前的網絡連接,主機IP變為0.0.0.0,主機與網絡斷開,不能訪問網絡。
(2)ipconfig /renew
更新適配器信息,請求連接網絡,這條命令結束之後,主機會獲得一個可用的IP,再次接入網絡。

2,開始抓包

實驗環境:Win10,Wireshark1.12.9,有線連接
(1)在Wireshark中點擊start開始抓包,在過濾欄輸入bootp,使其只顯示DHCP數據包。
(2)在cmd中輸入ipconfig /release 斷開網絡連接。
技術分享圖片
可以看到此時所有的網卡都已經斷開。以太網處於斷開狀態。

技術分享圖片
Wireshark中截獲到一個DHCP Release數據包。

(3)在cmd中輸入ipconfig /renew 請求網絡連接。
技術分享圖片
此時,可以看到在Wireshark中新增了4個DHCP數據包:
數據包1:DHCP Discover
數據包2:DHCP Offer
數據包3:DHCP Request
數據包4:DHCP ACK

技術分享圖片
等待這條命令執行完畢之後,在cmd中可以看到主機被分配了IP,主機成功連入網絡中。

(4)為了後續分析使用,我們再執行一次ipconfig /renew:
技術分享圖片
可以看到Wireshark中新增了3個數據包:DHCP ACK;DHCP Request;DHCP ACk。
如果再次使用ipconfig /renew,每執行一次會新增2個數據包:DHCP Request;DHCP ACk。

三,DHCP包分析

下面著重來分析當執行,ipconfig /renew這條命令產生的4個DHCP數據包,這4個數據包代表了客戶機和DHCP服務器的交互過程,也是IP動態分配的過程。
技術分享圖片
1,DHCP Discover數據包
(1)Client端使用IP地址0.0.0.0發送了一個廣播包,可以看到此時的目的IP為255.255.255.255。Client想通過這個數據包發現可以給它提供服務的DHCP服務器。

(2)從下圖可以看出,DHCP屬於應用層協議,它在傳輸層使用UDP協議,目的端口是67。
技術分享圖片

2,DHCP Offer包
當DHCP服務器收到一條DHCP Discover數據包時,用一個DHCP Offerr包給予客戶端響應。
技術分享圖片
(1)DHCP服務器仍然使用廣播地址作為目的地址,因為此時請求分配IP的Client並沒有自己ip,而可能有多個Client在使用0.0.0.0這個IP作為源IP向DHCP服務器發出IP分配請求,DHCP也不能使用0.0.0.0這個IP作為目的IP地址,於是依然采用廣播的方式,告訴正在請求的Client們,這是一臺可以使用的DHCP服務器。

(2)DHCP服務器提供了一個可用的IP,在數據包的Your (client) IP Address字段可以看到DHCP服務器提供的可用IP。

(3)除此之外,如圖中紅色矩形框的內容所示,服務器還發送了子網掩碼,路由器,DNS,域名,IP地址租用期等信息。

3,DHCP Request包
當Client收到了DHCP Offer包以後(如果有多個可用的DHCP服務器,那麽可能會收到多個DHCP Offer包),確認有可以和它交互的DHCP服務器存在,於是Client發送Request數據包,請求分配IP。
此時的源IP和目的IP依然是0.0.0.0和255.255.255.255。

4,DHCP ACK包
服務器用DHCP ACK包對DHCP請求進行響應。
技術分享圖片
在數據包中包含以下信息,表示將這些資源信息分配給Client.
Your(client) IP address:分配給Client的可用IP。
後面有許多項option信息,前兩項是DHCP服務器發送的消息類型(ACK)和服務器的身份標識,後面幾項是:
Subnet Mask:Client端分配到的IP的子網掩碼;
Router:路由器
Domain Name Server:DNS,域名服務器
Domain Name:域名
IP Address Lease Time:IP租用期。

Wireshark分析DHCP