我們一起談談DHCP協議
01DHCP協議簡介
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地址的用戶信息。
02DHCP工作原理
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數據包,確認信息。
03Wireshark抓包分析
要想抓取到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過濾條件。
wireshark抓包文件
鏈接: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請求進行響應。
04DHCP缺點
DHCP可以很好的進行IP地址的分配,但是DHCP協議已存在一些缺點,如:
1、DHCP協議不支持跨網段進行地址分配
2、DHCP協議不能獲取非DHCP客戶端的IP地址,在地址池設置不合理的情況下可能會造成地址沖突。
基于上述的缺陷,我們需要合理對IP地址池進行設置,并預留一些IP地址,分配給需要固定IP的服務器。
本文轉載自微信公眾號「 知曉編程」,可以通過以下二維碼關注。轉載本文請聯系 知曉編程公眾號。