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