DHCP是BOOTP的擴展,是基于C/S模式的,它提供了一種動態指定IP地址和配置參數的機制。這主要用于大型網絡環境和配置比較困難的地方。DHCP服務器自動為客戶機指定IP地址,指定的配置參數有些和IP協議并不相關,但這必沒有關系,它的配置參數使得網絡上的計算機通信變得方便而容易實現了。DHCP使IP地址的可以租用,對于許多擁有許多臺計算機的大型網絡來說,每臺計算機擁有一個IP地址有時候可能是不必要的。租期從1分鐘到100年不定,當租期到了的時候,服務器可以把這個IP地址分配給別的機器使用。客戶也可以請求使用自己喜歡的網絡地址及相應的配置參數。
DHCP是對BOOTP的擴展,它的包格式和BOOTP也一樣,這樣它就可以使用BOOTP的中轉發代理來發送DHCP包了,這使得BOOTP和DHCP之間可以實現互操作。對于BOOTP轉發代理來說,發的是DHCP包還是BOOTP包,它根本分不清楚。它們使用的服務器端口號是67和68,但是有些地方還有些不同:
DHCP定義了一種可以使IP地址使用一段有限時間的機制,在客戶期限到了的時候可以重新分配這個IP地址。
DHCP為用戶提供所有IP配置參數。
DHCP包長度比BOOTP包長度稍長。既然包比BOOTP的長,那也不是白帶的,這多出的長度里包括了網絡配置參數。
DHCP的包都比BOOTP的長,那協議也復雜了。DHCP有七種消息類型,而BOOTP只有兩種。
下圖中我們可以清楚地看到客戶機請求獲得網絡地址和配置參數的最初幾個步驟:
第一步的時候客戶發出包的名稱叫DHCPDISCOVER,而服務器返回包的名稱叫DHCPOFFER。
1.BOOTP轉發代理接收到請求包,并負責向DHCP其它網絡內的DHCP服務器轉發。
2.DHCP服務器以DHCPOFFER響應客戶的要求,這個包內包括可用的IP地址和參數。
3.BOOTP轉發代理接收包,并對它進行檢查。如果它覺得沒有問題,就向客戶轉發。
4.如果客戶在發出DHCPOFFER包后一段時間內沒有接收到回應,它有機會重新發送請求10次,否則就通知用戶。客戶機可以同時接收到許多個服務器的應答,它可以自己決定用哪一個。下圖是客戶決定了以后,向服務器發送應答時的情況。
5.當客戶選定了某個目標服務器后,它會廣播DHCPREQUEST包,用以通知選定的服務器和未選定的服務器。
6.轉發工作仍然由BOOTP轉發擔任。
7.收到DHCPREQUEST包服務器會檢查收到的包,如果包內的地址和提供的地址一致,證明現在客戶機選擇的是這臺服務器提供的地址,如果不是,自己提供的地址被拒絕了。
8.被選定的服務器在接收到DHCPREQUEST包以后,因為某些原因可能不能向客戶提供這個網絡地址或參數,它可以向客戶發送DHCPNAK包,如果可以提供則可以發送DHCPACK包。
客戶在收到包后,檢查內部的網絡地址和租用時間,如果客戶覺得這個包有問題,它可以發送DHCPDECLINE包拒絕這個地址,然后重新發送DHCPDISCOVER包。如果覺得沒有問題,就可以接受這個配置參數。同樣當客戶接收到DHCPNAK包時,它也可以發送DHCPDISCOVER包。客戶可以在租期到期之前釋放網絡地址,這通過發送DHCPRELEASE包來實現。
用戶下一次可以再次獲得相同的IP地址。在這一過程中,許多步驟就可以不用麻煩了,老客戶當然要方便一點了。
1.客戶在發送的DHCPREQUEST包內包括自己以前使用的IP地址。
2.此包由BOOTP轉發代理轉發。
3.DHCP服務器檢查DHCPREQUEST包內包括的配置參數。
4.它如果是原來提供這個網絡地址的參數的服務器,它會認出這些數來,并以DHCPACK包回應。
5.客戶接收到DHCPACK包后,它可以接收或拒絕,如果拒絕它可以申請新的網絡地址。
當然了,如果服務器覺得客戶的請求是無效的,服務器會以DHCPNAK包響應,客戶接收到這個包后,會重新會獲得網絡地址而發送DHCPDISCOVER包。


