在IP網(wǎng)絡(luò)中,每個(gè)連接Internet的設(shè)備都需要分配唯一的IP地址。DHCP使網(wǎng)絡(luò)管理員能從中心結(jié)點(diǎn)監(jiān)控和分配IP地址。當(dāng)某臺(tái)計(jì)算機(jī)移到網(wǎng)絡(luò)中的其它位置時(shí),能自動(dòng)收到新的IP地址。DHCP實(shí)現(xiàn)的自動(dòng)化分配IP地址不僅降低了配置和部署設(shè)備的時(shí)間,同時(shí)也降低了發(fā)生配置錯(cuò)誤的可能性。另外DHCP服務(wù)器可以管理多個(gè)網(wǎng)段的配置信息,當(dāng)某個(gè)網(wǎng)段的配置發(fā)生變化時(shí),管理員只需要更新DHCP服務(wù)器上的相關(guān)配置即可,實(shí)現(xiàn)了集中化管理。
總體來看,DHCP帶來了如下優(yōu)勢(shì):
DHCP協(xié)議采用UDP作為傳輸協(xié)議,DHCP客戶端發(fā)送請(qǐng)求消息到DHCP服務(wù)器的68號(hào)端口,DHCP服務(wù)器回應(yīng)應(yīng)答消息給DHCP客戶端的67號(hào)端口。
只有跟DHCP客戶端在同一個(gè)網(wǎng)段的DHCP服務(wù)器才能收到DHCP客戶端廣播的DHCP DISCOVER報(bào)文。當(dāng)DHCP客戶端與DHCP服務(wù)器不在同一個(gè)網(wǎng)段時(shí),必須部署DHCP中繼來轉(zhuǎn)發(fā)DHCP客戶端和DHCP服務(wù)器之間的DHCP報(bào)文。在DHCP客戶端看來,DHCP中繼就像DHCP服務(wù)器;在DHCP服務(wù)器看來,DHCP中繼就像DHCP客戶端。
無中繼場(chǎng)景時(shí)DHCP客戶端首次接入網(wǎng)絡(luò)的工作原理
如下圖所示,在沒有部署DHCP中繼的場(chǎng)景下,首次接入網(wǎng)絡(luò)DHCP客戶端與DHCP服務(wù)器的報(bào)文交互過程,該過程稱為DHCP報(bào)文四步交互。
第一步:發(fā)現(xiàn)階段
首次接入網(wǎng)絡(luò)的DHCP客戶端不知道DHCP服務(wù)器的IP地址,為了學(xué)習(xí)到DHCP服務(wù)器的IP地址,DHCP客戶端以廣播方式發(fā)送DHCP DISCOVER報(bào)文(目的IP地址為255.255.255.255)給同一網(wǎng)段內(nèi)的所有設(shè)備(包括DHCP服務(wù)器或中繼)。DHCP DISCOVER報(bào)文中攜帶了客戶端的MAC地址(chaddr字段)、需要請(qǐng)求的參數(shù)列表選項(xiàng)(Option55)、廣播標(biāo)志位(flags字段)等信息。
第二步:提供階段
與DHCP客戶端位于同一網(wǎng)段的DHCP服務(wù)器都會(huì)接收到DHCP DISCOVER報(bào)文,DHCP服務(wù)器選擇跟接收DHCP DISCOVER報(bào)文接口的IP地址處于同一網(wǎng)段的地址池,并且從中選擇一個(gè)可用的IP地址,然后通過DHCP OFFER報(bào)文發(fā)送給DHCP客戶端。
通常,DHCP服務(wù)器的地址池中會(huì)指定IP地址的租期,如果DHCP客戶端發(fā)送的DHCP DISCOVER報(bào)文中攜帶了期望租期,服務(wù)器會(huì)將客戶端請(qǐng)求的期望租期與其指定的租期進(jìn)行比較,選擇其中時(shí)間較短的租期分配給客戶端。
為了防止分配出去的IP地址跟網(wǎng)絡(luò)中其他客戶端的IP地址沖突,DHCP服務(wù)器在發(fā)送DHCP OFFER報(bào)文前通過發(fā)送源地址為DHCP服務(wù)器IP地址、目的地址為預(yù)分配出去IP地址的ICMP ECHO REQUEST報(bào)文對(duì)分配的IP地址進(jìn)行地址沖突探測(cè)。如果在指定的時(shí)間內(nèi)沒有收到應(yīng)答報(bào)文,表示網(wǎng)絡(luò)中沒有客戶端使用這個(gè)IP地址,可以分配給客戶端;如果指定時(shí)間內(nèi)收到應(yīng)答報(bào)文,表示網(wǎng)絡(luò)中已經(jīng)存在使用此IP地址的客戶端,則把此地址列為沖突地址,然后等待重新接收到DHCP DISCOVER報(bào)文后按照前面介紹的選擇IP地址的優(yōu)先順序重新選擇可用的IP地址。
此階段DHCP服務(wù)器分配給客戶端的IP地址不一定是最終確定使用的IP地址,因?yàn)镈HCP OFFER報(bào)文發(fā)送給客戶端等待16秒后如果沒有收到客戶端的響應(yīng),此地址就可以繼續(xù)分配給其他客戶端。通過下面的選擇階段和確認(rèn)階段后才能最終確定客戶端可以使用的IP地址。
第三步:選擇階段
如果有多個(gè)DHCP服務(wù)器向DHCP客戶端回應(yīng)DHCP OFFER報(bào)文,則DHCP客戶端一般只接收第一個(gè)收到的DHCP OFFER報(bào)文,然后以廣播方式發(fā)送DHCP REQUEST報(bào)文,該報(bào)文中包含客戶端想選擇的DHCP服務(wù)器標(biāo)識(shí)符(即Option54)和客戶端IP地址(即Option50,填充了接收的DHCP OFFER報(bào)文中yiaddr字段的IP地址)。
DHCP客戶端廣播發(fā)送DHCP REQUEST報(bào)文通知所有的DHCP服務(wù)器,它將選擇某個(gè)DHCP服務(wù)器提供的IP地址,其他DHCP服務(wù)器可以重新將曾經(jīng)分配給客戶端的IP地址分配給其他客戶端。
第四步:確認(rèn)階段
當(dāng)DHCP服務(wù)器收到DHCP客戶端發(fā)送的DHCP REQUEST報(bào)文后,DHCP服務(wù)器回應(yīng)DHCP ACK報(bào)文,表示DHCP REQUEST報(bào)文中請(qǐng)求的IP地址(Option50填充的)分配給客戶端使用。
DHCP客戶端收到DHCP ACK報(bào)文,會(huì)廣播發(fā)送免費(fèi)ARP報(bào)文,探測(cè)本網(wǎng)段是否有其他終端使用服務(wù)器分配的IP地址,如果在指定時(shí)間內(nèi)沒有收到回應(yīng),表示客戶端可以使用此地址。如果收到了回應(yīng),說明有其他終端使用了此地址,客戶端會(huì)向服務(wù)器發(fā)送DHCP DECLINE報(bào)文,并重新向服務(wù)器請(qǐng)求IP地址,同時(shí),服務(wù)器會(huì)將此地址列為沖突地址。當(dāng)服務(wù)器沒有空閑地址可分配時(shí),再選擇沖突地址進(jìn)行分配,盡量減少分配出去的地址沖突。
當(dāng)DHCP服務(wù)器收到DHCP客戶端發(fā)送的DHCP REQUEST報(bào)文后,如果DHCP服務(wù)器由于某些原因(例如協(xié)商出錯(cuò)或者由于發(fā)送REQUEST過慢導(dǎo)致服務(wù)器已經(jīng)把此地址分配給其他客戶端)無法分配DHCP REQUEST報(bào)文中Option50填充的IP地址,則發(fā)送DHCP NAK報(bào)文作為應(yīng)答,通知DHCP客戶端無法分配此IP地址。DHCP客戶端需要重新發(fā)送DHCP DISCOVER報(bào)文來申請(qǐng)新的IP地址。
有中繼場(chǎng)景時(shí)DHCP客戶端首次接入網(wǎng)絡(luò)的工作原理
有DHCP中繼的場(chǎng)景中,首次接入網(wǎng)絡(luò)的DHCP客戶端和DHCP服務(wù)器的工作原理與無中繼場(chǎng)景時(shí)DHCP客戶端首次接入網(wǎng)絡(luò)的工作原理相同。主要差異是DHCP中繼在DHCP服務(wù)器和DHCP客戶端之間轉(zhuǎn)發(fā)DHCP報(bào)文,以保證DHCP服務(wù)器和DHCP客戶端可以正常交互。下面僅針對(duì)DHCP中繼的工作原理進(jìn)行介紹。
如下圖所示,在部署DHCP中繼的場(chǎng)景下,首次接入網(wǎng)絡(luò)DHCP客戶端與DHCP服務(wù)器的報(bào)文交互過程。
第一步:發(fā)現(xiàn)階段
如果DHCP客戶端與DHCP服務(wù)器之間存在多個(gè)DHCP中繼,后面的中繼接收到DHCP DISCOVER報(bào)文的處理流程同前面所述。
第二步:提供階段
DHCP服務(wù)器接收到DHCP DISCOVER報(bào)文后,選擇與報(bào)文中g(shù)iaddr字段為同一網(wǎng)段的地址池,并為客戶端分配IP地址等參數(shù),然后向giaddr字段標(biāo)識(shí)的DHCP中繼單播發(fā)送DHCP OFFER報(bào)文。
第三步:選擇階段
中繼接收到來自客戶端的DHCP REQUEST報(bào)文的處理過程同無中繼場(chǎng)景下的選擇階段。
第四步:確認(rèn)階段
中繼接收到來自服務(wù)器的DHCP ACK報(bào)文的處理過程同無中繼場(chǎng)景下的確認(rèn)階段。
DHCP客戶端重用曾經(jīng)使用過的地址的工作原理
DHCP客戶端非首次接入網(wǎng)絡(luò)時(shí),可以重用曾經(jīng)使用過的地址。如下圖所示,DHCP客戶端與DHCP服務(wù)器交互DHCP報(bào)文,以重新獲取之前使用的IP地址等網(wǎng)絡(luò)參數(shù),該過程稱為兩步交互。
第一步:選擇階段
客戶端廣播發(fā)送包含前一次分配的IP地址的DHCP REQUEST報(bào)文,報(bào)文中的Option50(請(qǐng)求的IP地址選項(xiàng))字段填入曾經(jīng)使用過的IP地址。
第二步:確認(rèn)階段
DHCP服務(wù)器收到DHCP REQUEST報(bào)文后,根據(jù)DHCP REQUEST報(bào)文中攜帶的MAC地址來查找有沒有相應(yīng)的租約記錄,如果有則返回DHCP ACK報(bào)文,通知DHCP客戶端可以繼續(xù)使用這個(gè)IP地址。否則,保持沉默,等待客戶端重新發(fā)送DHCP DISCOVER報(bào)文請(qǐng)求新的IP地址。
DHCP客戶端更新租期的工作原理
DHCP服務(wù)器采用動(dòng)態(tài)分配機(jī)制給客戶端分配IP地址時(shí),分配出去的IP地址有租期限制。DHCP客戶端向服務(wù)器申請(qǐng)地址時(shí)可以攜帶期望租期,服務(wù)器在分配租期時(shí)把客戶端期望租期和地址池中租期配置比較,分配其中一個(gè)較短的租期給客戶端。租期到期或者客戶端下線釋放地址后,服務(wù)器會(huì)收回該IP地址,收回的IP地址可以繼續(xù)分配給其他客戶端使用。這種機(jī)制可以提高IP地址的利用率,避免客戶端下線后IP地址繼續(xù)被占用。如果DHCP客戶端希望繼續(xù)使用該地址,需要更新IP地址的租期(如延長(zhǎng)IP地址租期)。
DHCP客戶端更新租期的過程如下圖所示。
客戶端在租期時(shí)間到之前,如果用戶不想使用分配的IP地址(例如客戶端網(wǎng)絡(luò)位置需要變更),會(huì)觸發(fā)DHCP客戶端向DHCP服務(wù)器發(fā)送DHCP RELEASE報(bào)文,通知DHCP服務(wù)器釋放IP地址的租期。DHCP服務(wù)器會(huì)保留這個(gè)DHCP客戶端的配置信息,將IP地址列為曾經(jīng)分配過的IP地址中,以便后續(xù)重新分配給該客戶端或其他客戶端??蛻舳丝梢酝ㄟ^發(fā)送DHCP INFORM報(bào)文向服務(wù)器請(qǐng)求更新配置信息。
如下圖所示,部署DHCP中繼時(shí),更新租期的過程與上述過程相似。
DHCP提供了兩種地址分配機(jī)制,網(wǎng)絡(luò)管理員可以根據(jù)網(wǎng)絡(luò)需求為不同的主機(jī)選擇不同的分配策略。
DHCP使用了租期的概念,或稱為設(shè)備IP地址的有效期。租用時(shí)間是不定的,主要取決于用戶在某地連接Internet需要多久,這種分配機(jī)制適用于主機(jī)需要臨時(shí)接入網(wǎng)絡(luò)或者空閑地址數(shù)小于網(wǎng)絡(luò)主機(jī)總數(shù)且主機(jī)不需要永久連接網(wǎng)絡(luò)的場(chǎng)景。
相比手工靜態(tài)配置IP地址,通過DHCP方式靜態(tài)分配機(jī)制避免人工配置發(fā)生錯(cuò)誤,方便管理員統(tǒng)一維護(hù)管理。
聯(lián)系客服