1. 實驗網絡拓撲
使用ENSP模擬器(版本V100R002C00 1.2.00.350)
2. 實驗需求:
1) 使用華爲模擬器配置DHCP爲C1自動分配IP地址
2) 使用VMware station搭建WindowsServer2008 DHCP服務器,併爲Windows客戶機分配IP地址
3) 使用wireshark抓取DHCP數據包
3. 實驗步驟:
1) 華爲設備IP地址規劃配置如下:
R2是G0/0/0的ip爲192.168.8.1/24
C1的IP爲自動獲得
2) 微軟設備IP地址規劃配置如下:
① 服務器的ip設爲192.168.8.8/2
② 分配給客戶端的ip地地池爲:
192.168.8.10/24--192.168.8.20/24
3) 配置腳本:
① 配置我們之前都學過,這裏不再寫,我們重點看DHCP抓包結果;使用命令ipconfig/release釋放原ip,再用ipconfig/renew重新獲得ip
4. 抓包結果:
a. 華爲設備DHCP抓包結果
1) DHCP數據包:
通過抓取的數據包結果,我們看出DHCP有四個數據包,分別爲:DHCPDiscover、DHCP Offer、DHCP Request、DHCP ACK;其中DHCP Discover、DHCP Request爲廣播,DHCP Offer、
DHCP ACK爲單播,下面詳細分析。
2) DHCP Discover數據報文:
由上圖可得,Discove數據報文是C1向整個廣播域進行廣播,ip地址、網關、掩碼等三層信息都沒有。意爲:C1向廣播域內尋找DHCP服務提供者,並申請爲自己分配ip地址。
3) DHCP Offer數據報文:
通過上面兩張圖片的分析,我們會發現華爲設備發出的DHCP-OFFER報文的二層是單播的,三層也是單播的,儘管服務器分配的地址客戶端還沒有使用(甚至客戶端都還沒有收到這個OFFER報文),但是服務器已經將這個IP填充到了三層包頭中。這樣做的好處是,即使二層設備,由於各種原因,廣播了數據幀,但是三層包頭中的目標地址也不會和在線的任何一個主機一樣,其它在線主機根本不會處理這個不屬於自己目標IP的報文的。對於大型網絡來說,這對網絡性能和主機性能都是一種優化。
由上圖可得,Offer數據報文是R1向C1進行單播。意爲:提供DHCP服務的R2收到C1的申請,並告訴C1可用的ip地址(192.168.8.254)、網關(192.168.8.1)、掩碼(/24)、DNS服務器(8.8.8.8)等,如果域中有多臺DHCP服務器提供服務,則C1採取的是先到先得的準則
4) DHCP Request數據報文:
由上圖可得,C1收到R2的報文後並沒有立刻就使用報文中的信息,而是C1向廣播域進行廣播,意爲:C1向DHCP 服務器彙報自己收到的IP地址信息,並申請使用自己所得到的ip等信息,這就是Request數據報文。
5) DHCP ACK數據報文:
由上圖可得,R2收到C1是使用申請後,就向進行C1單播,告訴C1 其ip地址就是192.168.8.254、網關是92.168.8.1、掩碼是/24、DNS服務器是8.8.8.8等,C1收到後就會將信息保留起來並使用,這就是ACK報文。需要注意的是,這個報文在華爲設備發出的時候二層和三層也都是單播的。
b. 微軟設備DHCP抓包結果
1) DHCP報文:
2) DHCP Discover數據報文:
通過上圖的分析,微軟系統發出的Discover報文和其它系統發出的沒有區別,二層三層都是廣播(這很容易理解,第一報文,客戶端根本不知道服務器的任何信息,只能廣播)
3) DHCP Offer數據報文:
但是通過上圖我們會發現,微軟系統發出的OFFER報文,二層和三層都是廣播的,這個真是不可以理解,這會導致同一廣播域中的主機,浪費大量的資源來處理這些報文,一直要處理到應用層才知道這個報文原來和自己無關。非常的不夠優化。
4) DHCP Request數據報文:
請求報文並沒有什麼特殊,所有系統都是一樣的二三層廣播。
5) DHCP ACK數據報文:
微軟系統的ACK報文依然是二三層全網廣播,很浪費同一廣播域中其它主機的資源,不夠優化。
5. 結論:
通過分析可看出,微軟DHCP四個報文都是廣播,很不優化,對於同一廣播域中其它主機的資源是一種浪費(只要有主機向服務器請求地址,其它主機就要處理和自己無關的四個報文。)而華爲設備,思科設備,LINUX系統等DHCP的Offer和 ACK兩個報文則是單播的,這就大大節省了網絡設備和同一廣播域中其它主機的資源。