01、DHCP協議簡介
DHCP(DynamicHost ConfigurationProtocol),動態主機配置協議,是一個應用層協議,具體可以參考《TCP/IP四層模型》文章,當我們將客戶主機ip地址設定為動態獲取方式時,DHCP服務器就會根據DHCP協議給客戶端分配IP,使得客戶機能夠利用這個IP上網,
DHCP的幾個概念:
DHCPClient:DHCP客戶端,通過DHCP協議請求IP地址的客戶端,DHCP客戶端是介面級的概念,如果一個主機有多個以太介面,則該主機上的每個介面都可以配置成一個DHCP客戶端,交換機上每個Vlan介面也可以配置成一個DHCP客戶端,
DHCPServer:DHCP服務端,負責為DHCP客戶端提供IP地址,并且負責管理分配的IP地址,
DHCPRelay:DHCP中繼器,DHCP客戶端跨網段申請IP地址的時候,實作DHCP報文的轉發功能,
DHCPSecurity:DHCP安全特性,實作合法用戶IP地址表的管理功能,
DHCPSnooping:DHCP監聽,記錄通過二層設備申請到IP地址的用戶資訊,
02、DHCP作業原理
DHCP使用UDP協議作業,采用67(DHCP服務器端)和68(DHCP客戶端)兩個埠號,546號埠用于DHCPv6Client,而不用于DHCPv4,是為DHCPfailover服務,DHCP客戶端向DHCP服務器發送的報文稱之為DHCP請求報文,而DHCP服務器向DHCP客戶端發送的報文稱之為DHCP應答報文,

?
DHCP互動程序共分為4步
第一步:Client端在局域網內發起一個DHCP Discover包,目的是想發現能夠給它提供IP的DHCPServer,
第二步:可用的DHCPServer接收到Discover包之后,通過發送DHCPOffer包給予Client端應答,意在告訴Client端它可以提供IP地址,
第三步:Client端接收到Offer包之后,發送DHCPRequest包請求分配IP,
第四步:DHCPServer發送ACK資料包,確認資訊,
03、Wireshark抓包分析
要想抓取到DHCP包,先要保證有可用的DHCP服務器,然后將主機IP地址獲取方式設定為自動獲取,我們的測驗環境是,筆記本設定為DHCP模式,路由開啟DHCP服務,由于筆記本在開機時想路由DHCP去獲取IP,開機時無法迅速打開wireshark軟體進行抓包,我們使用以下命令先斷開主機的網路連接,然后再連接網路,
ipconfig /release
ipconfig /renew
在cmd中可以使用ipconfig/?查看各引數的含義
命令詳解:
(1)ipconfig /release
斷開當前的網路連接,主機IP變為0.0.0.0,主機與網路斷開,不能訪問網路,
(2)ipconfig /renew
更新配接器資訊,請求連接網路,這條命令結束之后,主機會獲得一個可用的IP,再次接入網路,
抓取的資料包如下,注意使用dhcp過濾條件,

?
鏈接:https://pan.baidu.com/s/1RzvISOkzkVoWOzJDRi5NwQ
提取碼:lpg9
可以清楚看到DHCP的四個步驟,
DHCP Discover資料包
在Discover階段,可以看出客戶端發出的是廣播復制,MAC地址廣播相關內容請看《802.3以太網幀》,IP地址廣播相關內容請看《IP協議詳解》,從下圖也可以看出DHCP是基于UDP協議的,采用67(DHCP服務器端)和68(DHCP客戶端)兩個埠號,這個上文講過了,在抓包檔案中證實了,DHCP報文格式基于BOOTP的報文格式,DHCP具體的報文格式并不是本文重點,本文并不會詳細講解DHCP報文中每個位元組的含義,

?
DHCP Offer包
當DHCP服務器收到一條DHCPDiscover資料包時,用一個DHCPOfferr包給予客戶端回應, 這一資料報中客戶客戶端獲取到了最重要的IP地址資訊,除此之外,服務器還發送了子網掩碼,路由器,DNS,域名,IP地址租用期等資訊,
DHCP服務器仍然使用廣播地址作為目的地址,因為此時請求分配IP的Client并沒有自己ip,而可能有多個Client在使用0.0.0.0這個IP作為源IP向DHCP服務器發出IP分配請求,DHCP也不能使用0.0.0.0這個IP作為目的IP地址,于是依然采用廣播的方式,告訴正在請求的Client們,這是一臺可以使用的DHCP服務器,

?
DHCP Request包
當Client收到了DHCPOffer包以后(如果有多個可用的DHCP服務器,那么可能會收到多個DHCPOffer包),確認有可以和它互動的DHCP服務器存在,于是Client發送Request資料包,請求分配IP,
此時的源IP和目的IP依然是0.0.0.0和255.255.255.255,

?
DHCP ACK包
服務器用DHCPACK包對DHCP請求進行回應,

?
04、DHCP缺點
DHCP可以很好的進行IP地址的分配,但是DHCP協議已存在一些缺點,如:
1、DHCP協議不支持跨網段進行地址分配
2、DHCP協議不能獲取非DHCP客戶端的IP地址,在地址池設定不合理的情況下可能會造成地址沖突,
基于上述的缺陷,我們需要合理對IP地址池進行設定,并預留一些IP地址,分配給需要固定IP的服務器,
點擊查看本文所在的專輯,STM32F207網路開發
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/270510.html
標籤:嵌入式
