動態主機配置協議(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地址分配和確認。