第9章 應用層(2)_動態主機配置協議(DHCP)
2. 動態主機配置協議(DHCP)
2.1 靜態地址和動態地址的應用場景
(1)靜態地址應用場景
①IP地址不經常更改的裝置(如伺服器地址)
②使用有規律的IP地址以便於管理(如學校機房為方便教師管理學生)
(2)動態地址應用場景
①網路中的計算機不固定(如學生在不同教室上課,如果讓學生自己指定IP很可能發生地址衝突)
②無線裝置最好使用動態IP(這樣,移動到哪裡都無需進行網路設定,只要輸入無線連線密碼即可)
③ADSL撥號上網通常也使用自動獲得IP。ISP運營商為撥號上網的使用者自動分配上網使用的公網IP地址、閘道器和DNS設定。客戶不知道ISP使用哪些網段的地址,也不知道哪些地址沒有被其他使用者使用。
2.2 DHCP地址租約
(1)地址租約:DHCP伺服器為網路中的計算機分配IP並記錄下來,以保證這些地址不再分配給其他計算機使用。如果租約到期客戶端仍不續約,則伺服器會單方面廢除將分配的地址回收。
(2)租約生成過程(DHCP協議的4種資料包)
①DHCPDISCOVER資料包:DHCP客戶端會先發送DHCPDISCOVER的廣播資訊到網路,以便尋找一臺能夠提供IP地址的DHCP伺服器。
②DHCPOFFER資料包:當DHCP伺服器收到資訊後,就會從IP地址池選擇一個可用的IP地址,然後利用廣播方式傳送給DHCP客戶端。之所以用廣播方式,是因為此時客戶端還沒有IP地址。如果網路中有多臺DHCP伺服器收到客戶端的DHCPDISCOVER資訊,並且也都響應給DHCP客戶端(表示它們都可以提供IP地址給此客戶端),則DHCP客戶端會從中挑選第一個收到的DHCPOFFER
③DHCPREQUEST資料包:當DHCP客戶端挑選好第一個收到的DHCPOFFER資訊後,就利用廣播方式,響應一個DHCPREQUEST資訊給伺服器。之後以利用廣播方式,是因為它不但要通知所和挑所的DHCP伺服器,還必須通知沒有被選上的其他DHCP伺服器,以便這些DHCP伺服器能夠將原本欲分配的IP地址收回。
④DHCPACK資料包:DHCP伺服器收到DHCPREQUEST資訊後,就會利用廣播的方式傳送DHCPACK資訊給DHCP客戶端。之所以利用廣播方式,是因為此時DHCP客戶端還沒有IP地址。客戶端收到DHCPACK後完成了獲取IP地址的步驟。
2.3 DHCP
(1)更新過程
①當租約時間過去一半時,客戶端向DHCP伺服器發出一個續約請求(最多可重發三次,分別在4、8和16s時)。如果找到DHCP伺服器,它會向客戶端傳送一個DHCPOFFER資訊以更新當前租約。如果找不到原DHCP伺服器,則進入第2步。
②當租約時間過去87.5%時,客戶端會進入重繫結狀態,它向任何可用的DHCP伺服器廣播(最多重複三次,分別在4、8和16s時)一個DHCPDISCOVER訊息來續約該IP(注意不是申請新的IP。如果IP無效或存在衝突則會被伺服器拒絕,強迫客戶端釋放其IP並獲得一個新的IP)。如果仍得不到響應,則進入第3步。
③當租約終止而且沒連線伺服器,客戶端立即停止使用其租約IP,並執行與它初始啟動期間相同的過程來獲得新的IP地址。如果仍然無法得到一個新的IP,則會自己產生一個臨時地址(169.254.0.0/16網段)
(2)租約更新的方法
①自動更新:按以上過程自動產生
②手動更新:ipconfig /renew
2.4 實戰:安裝和配置DHCP服務
(1)網路拓撲圖
(2)搭建測試環境
①DHCP服務由Win2003伺服器提供,該伺服器必須設定成靜態IP(地址如上圖)。XP虛擬機器的IP地址和DNS均設定為“自動獲取”。
②WinXP和Win2003主機都放在同一個網路(VMNet8)
③開始實驗之前,要先關閉物理機上的DHCP服務:開啟服務管理工具(執行services.msc)→將VMwareDHCP服務設定為禁用狀態,停止該服務。
(3)DHCP服務設定
①新建作用域:“新建作用域”(一個作用域對應一個網段)→在“IP地址範圍”中輸入起始和結束IP,指定子網掩碼→…→在“租約期限”中設定為2小時…→在“配置DHCP選項”中選擇“否”
②配置選項:右擊“作用域選項”→“配置選項”→勾選“003 路由器”,並輸入192.168.80.2(閘道器地址)→然後勾選“006 DNS伺服器”,輸入8.8.8.8。
(4)檢視、重新整理和釋放租約(在XP虛擬機器上測試)
①檢視租約:在xp上執行ipconfig /all可檢視其IP和DNS設定情況。同時在DNS伺服器上右擊“地址租約”→“重新整理”即能看到為xp分配IP地址的資訊。
②更新租約:ipconfir /renew
③釋放租約:ipconfig /release
(5)抓包分析
①DHCP服務會產生4個數據包:DHCPDISCOVER、DHCPOFFER、DHCPREQUEST和DHCPACK。這四個資料包均以廣播方式傳送給對方。
②XP的源地址都是0.0.0.0。資料包的目標MAC地址是廣播地址(ff-ff-ff-ff-ff-ff),目標地址是廣播地址(255.255.255.255)
2.5 實戰:跨網段分配IP地址
(1)網路拓撲
(2)搭建測試環境
①DHCP伺服器部置於單獨的網段(192.168.10.0/24)。並在DHCP伺服器中新建兩個作用域(用來為兩個網段的客戶機提供DHCP服務,注意一定要為每個網段配置閘道器)
②在R1路由器上啟用DHCP中繼代理
//為VMnet8和VMnet6啟用DHCP中繼代理
R1(config)#interface fastEthernet 0/0 //注意,中繼的介面是這個!
R1(config-if)#ip helper-address 192.168.10.20 //告訴該介面收到DHCPDISCOVER廣播,就產生
//一個DHCP請求包,目標地址192.168.10.20,
//源地址是該介面地址(如192.168.80.1)
//DHCP伺服器收到這個請求包,就知道是來自
//哪個網段的請求,於是從相應的作用域選擇
//一個地址提供出來
R1(config-if)#exit
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip helper-address 192.168.10.20 //轉發DHCP請求的廣播包
R1(config-if)#exit
R1(config)#exit
③客戶端設定為自動獲取IP:PC1> ip dhcp //動態獲取DHCP