DHCP工作過程的分析
對于DHCP的內(nèi)容,我們學(xué)習(xí)了不少內(nèi)容,我們已經(jīng)了解了有關(guān)的定義,以及DHCP協(xié)議的結(jié)構(gòu),不知道大家掌握的如何。那么這里我們就來針對DHCP工作過程的內(nèi)容進(jìn)行一下分析和講解。
DHCP工作過程簡要說明:
DHCP-Client-A DHCP-Server-B Other-DHCP-Servers
DHCPDISCOVER → <receive DISCOVER> <receive DISCOVER>
↓ ↓
<choose an OFFER> ← DHCPOFFER DHCPOFFER
↓
DHCPREQUEST → <receive REQUEST> <receive REQUEST>
↓
<lease an IP> ← DHCPACK
動態(tài)主機(jī)配置協(xié)議(Dynamic Host Configuration Protocol,DHCP)是用于對多個客戶計(jì)算機(jī)集中分配IP地址以及IP地址相關(guān)的信息的協(xié)議,這樣就能將IP地址和TCP/IP的設(shè)置統(tǒng)一管理起 來,而避免不必要的地址沖突的問題,因此常常用在網(wǎng)絡(luò)中對眾多DOS/Windows計(jì)算機(jī)的管理方面,節(jié)省了網(wǎng)絡(luò)管理員手工設(shè)置和分配地址的麻煩。
除了能夠方便管理之外,DHCP還能略微達(dá)到節(jié)省IP地址的目的。假設(shè)網(wǎng)絡(luò)中有50個計(jì)算機(jī),但只有40個 IP地址,但是這50臺計(jì)算機(jī)不會同時啟動,IP地址應(yīng)該滿足要求。如果使用靜態(tài)IP地址的設(shè)置方式,還是會遇到分配地址的困難,因?yàn)橛?jì)算機(jī)的使用是隨機(jī) 的,無論怎樣分配地址都無法避免出現(xiàn)沖突現(xiàn)象,而使用DHCP就能避免這個問題。 DHCP也能用于統(tǒng)一設(shè)置其他的一些IP設(shè)置,如缺省路由、DNS服務(wù)器等等,使用它能減少一個大型網(wǎng)絡(luò)的管理任務(wù)。
DHCP是從原有的BootP協(xié)議發(fā)展起來的,原來的目的是為無盤工作站分配IP地址的協(xié)議,當(dāng)前更多的用于集中管理IP地址。然而DHCP協(xié) 議也有其缺點(diǎn),例如一臺DHCP客戶計(jì)算機(jī)沒有一個固定的IP地址,而對于提供網(wǎng)絡(luò)服務(wù)的服務(wù)器來講,經(jīng)常變化的IP地址并不適合。并且當(dāng)前的DNS協(xié)議 并不能和DHCP協(xié)作,為DHCP客戶直接提供主機(jī)名解析任務(wù)。
DHCP工作過程
DHCP工作時要求客戶機(jī)和服務(wù)器進(jìn)行交互,由客戶機(jī)通過廣播向服務(wù)器發(fā)起申請IP地址的請求,然后由服務(wù)器分配一個IP地址以及其他的TCP/IP設(shè)置信息。整個過程可以分為以下步驟:
IP地址租用申請:DHCP客戶機(jī)的TCP/IP***啟動時,就要執(zhí)行DHCP客戶程序,以進(jìn)行TCP/IP 的設(shè)置。由于此時客戶機(jī)的TCP/IP還沒有設(shè)置完畢,就只能使用廣播的方式發(fā)送DHCP請求信息包,廣播包使用 UDP端口67和68進(jìn)行發(fā)送,廣播信息中包括了客戶機(jī)的網(wǎng)絡(luò)界面的硬件地址和計(jì)算機(jī)名字,以提供DHCP服務(wù)器進(jìn)行分配。
IP地址租用提供:當(dāng)接收到DHCP客戶機(jī)的廣播信息之后,所有的DHCP服務(wù)器均為這個客戶機(jī)分配一個合適的IP地址,將這些IP地址、網(wǎng)絡(luò) 掩碼、租用時間等信息,按照DHCP客戶提供的硬件地址發(fā)送回DHCP客戶機(jī)。這個過程中對DHCP服務(wù)器沒有對客戶計(jì)算機(jī)進(jìn)行限制,因此客戶機(jī)能收到多 個IP地址提供信息。
IP地址租用選擇:由于客戶機(jī)接收到多個服務(wù)器發(fā)送的多個IP地址提供信息,客戶機(jī)將選擇一個IP地址,拒絕其他提供的IP地址,以便這些地址能分配給其他客戶??蛻魴C(jī)將向它選擇的服務(wù)器發(fā)送選擇租用信息。
IP地址租用確認(rèn):服務(wù)器將收到客戶的選擇信息,如果也沒有例外發(fā)生,將回應(yīng)一個確認(rèn)信息,將這個IP地址真正分配給這個客戶機(jī)??蛻魴C(jī)就能使用這個IP地址及相關(guān)的TCP/IP數(shù)據(jù),來設(shè)置自己的TCP/IP堆棧。
更新租用:DHCP中,每個IP地址是有一定租期的,若租期已到,DHCP服務(wù)器就能夠?qū)⑦@個IP地址重新分配給其他計(jì)算機(jī)。因此每個客戶計(jì)算 機(jī)應(yīng)該提前不斷續(xù)租它已經(jīng)租用的IP地址,服務(wù)器將回應(yīng)客戶機(jī)的請求并更新該客戶機(jī)的租期設(shè)置。一旦服務(wù)器返回不能續(xù)租的信息,那么DHCP客戶機(jī)只能在 租期到達(dá)時放棄原有的IP地址,重新申請一個新 IP地址。為了避免發(fā)生問題,續(xù)租在租期達(dá)到50%時就將啟動,如果沒有成功將不斷啟動續(xù)租請求過程。
釋放IP地址租用:客戶機(jī)可以主動釋放自己的IP地址請求,也可以不釋放,但也不續(xù)租,等待租期過期而釋放占用的IP地址資源。
由于DHCP依賴于廣播信息,因此一般的情況下,客戶機(jī)和服務(wù)器應(yīng)該位于同一個網(wǎng)絡(luò)之內(nèi)。然而可以設(shè)置網(wǎng)絡(luò)中的路由器為可以轉(zhuǎn)發(fā)BootP廣播 包,使得服務(wù)器和客戶機(jī)可以位于兩個不同的網(wǎng)絡(luò)中。然而配置轉(zhuǎn)發(fā)廣播信息,不是一個很好的解決辦法,更好的辦法為使用DHCP中轉(zhuǎn)計(jì)算機(jī),DHCP中轉(zhuǎn)計(jì) 算機(jī)和DHCP客戶機(jī)位于同一個網(wǎng)絡(luò)中,來回應(yīng)客戶機(jī)的租用請求,然而它不維護(hù)DHCP數(shù)據(jù)和擁有IP地址資源,它只是將請求通過TCP/IP轉(zhuǎn)發(fā)給位于 另一個網(wǎng)絡(luò)上的DHCP服務(wù)器,進(jìn)行實(shí)際的IP地址分配和確認(rèn)。
DHCP工作過程補(bǔ)充說明:
有DHCP和BOOTP兩種協(xié)議
DHCP分配IP過程:
客戶端連上網(wǎng)絡(luò)以后先初始化一個不完全的TCP/IP協(xié)議,然后向網(wǎng)內(nèi)所有的DHCP服務(wù)器發(fā)送一個DHCP DISCOVER的消息,等待DHCP服務(wù)器的回答。收到消息后,DHCP服務(wù)器會返回一個DHCP OFFER的消息,客戶端接到***個這個消息后會向網(wǎng)內(nèi)所有的DHCP服務(wù)器發(fā)送一個DHCP REQUEST消息,這個消息里包括了提供OFFER包的DHCP服務(wù)器IP,其他DHCP服務(wù)器收到這個消息會收回自己的OFFER信息,同時提供OFFER信息的服務(wù)器發(fā)送給客戶端段一個DHCP PACK消息??蛻舳耸盏竭@個消息后會再次初始化自己TCP/IP協(xié)議 。
bootp協(xié)議主要用于有無盤工作站的局域網(wǎng)中,客戶端獲取IP地址的過程如下:首先,由BOOTP啟動代碼啟動客戶端,這個時候客戶端還沒有IP地址, 使用廣播形式以IP地址0.0.0.0向網(wǎng)絡(luò)中發(fā)出IP地址查詢要求。接著,運(yùn)行BOOTP協(xié)議的服務(wù)器接收到這個請求,會根據(jù)請求中提供的MAC地址找 到客戶端,并發(fā)送一個含有IP地址、服務(wù)器IP地址、網(wǎng)關(guān)等信息的FOUND幀。***,客戶端會根據(jù)該FOUND幀來通過專用TFTP服務(wù)器下載啟動鏡像 文件,模擬成磁盤啟動。BOOTP缺點(diǎn):設(shè)定前必須獲得客戶端網(wǎng)卡的MAC地址,而且與IP對應(yīng)是靜態(tài)的。即BOOTP缺乏動態(tài)性,在有限的IP資源 中,BOOTP的一對一對應(yīng)會造成可觀的浪費(fèi)。