文章目錄
- 什么是 DHCP?
- DHCP 的產生背景
- DHCP 的工作過程
- 工作流程
- 地址分配機制
- DHCP 中繼代理
- 總結
什么是 DHCP?
動態主機配置協議(DHCP,Dynamic Host Configuration Protocol)是一種網絡管理協議,用于自動分配IP地址及其他網絡配置參數(如子網掩碼、默認網關、DNS服務器地址等)給網絡中的設備。它基于客戶端/服務器架構,通過集中管理IP地址池,簡化了網絡設備的配置過程。
DHCP
協議允許網絡管理員通過中央服務器來動態分配和管理 IP 地址以及其他網絡配置參數,從而減少了網絡管理的復雜性。
DHCP 的產生背景
在 DHCP
出現之前,網絡管理員需要手動為每臺設備配置 IP 地址,這種方式不僅繁瑣,還容易導致 IP 地址沖突和資源浪費。隨著網絡規模的擴大和設備數量的增加,這種手動配置的方式已無法滿足需求。因此,IETF 設計了 DHCP
協議,以實現動態、自動化的 IP 地址分配。
DHCP 的工作過程
DHCP
使用客戶/服務器方式:
-
在
DHCP
服務器上運行DHCP
服務器進程,也可簡稱為DHCP
服務器 -
在用戶主機上運行
DHCP
客戶進程,也可簡稱為DHCP
客戶。
DHCP
是 TCP/IP 協議體系應用層中的協議,它使用運輸層的 UDP 所提供的服務。DHCP報文在運輸層會被封裝成為 UDP用戶數據報,DHCP
服務器使用的UDP端口是67,DHCP
客戶使用的UDP端口是68,這兩個 UDP
端口都是熟知端口。
封裝有 DHCP
報文的 UDP 用戶數據報
,在網絡層會被封裝成 IP 數據報
,然后再根據所使用的網絡接口,封裝成相應的數據鏈路層的幀進行發送,如封裝為以太網幀。
工作流程
DHCP
的工作流程主要包括以下四個階段:
-
發現階段(DHCP Discover):客戶端以廣播方式發送
DHCP Discover
報文,尋找可用的 DHCP 服務器。 -
提供階段(DHCP Offer):服務器收到請求后,從地址池中選擇一個可用的IP地址,并向客戶端發送
DHCP Offer
報文。 -
請求階段(DHCP Request):客戶端收到 Offer 后,選擇一個服務器的 Offer,并發送
DHCP Request
報文,請求確認分配的IP地址。 -
確認階段(DHCP Ack):服務器確認客戶端的請求,發送 DHCP Ack 報文,正式分配IP地址及其他配置信息。
這是一個四步的交互過程,包括客戶端的廣播請求、服務器的提供回應、客戶端的確認地址和服務器的確認并更新數據庫。
-
客戶端廣播請求(Discover)
-
當
DHCP
客戶端(如計算機、路由器等)啟動時,它會在網絡上廣播一個 DHCP Discover 消息(因為主機現在并不知道網絡中有哪幾個DHCP服務器),請求可用的 IP 地址和其他網絡配置參數。這個廣播消息會被網絡上的所有設備接收,但只有DHCP服務器會對此作出響應。 -
DHCP Discover
消息報文封裝有事務ID、DHCP 客戶端的 MAC 地址等信息
-
-
DHCP服務器提供回應(Offer)
-
當 DHCP 服務器接收到客戶端的
DHCP Discover
廣播后,它會從預定義的IP地址池中選擇一個未使用的IP地址,根據其中封裝的 DHCP 客戶端的 MAC 地址實查找自己的數據庫,看是否有針對該 MAC 地址的配置信息。如果有,則使用這些配置信息來構建并發送 DHCP 提供報文;則采用默認配置信息來構建并發送 DHCP 提供報文。并通過廣播或單播方式向客戶端發送一個 DHCP Offer 消息。
DHCP 服務器從自己的 IP 地址池中挑選待租用給主機的IP地址時,會使用ARP確保所選IP地址未被網絡中其他主機占用。
-
這個
Offer
消息中包含了分配的 IP 地址、子網掩碼、地址租期、默認網關、DNS
服務器地址等配置信息。 -
如果網絡中存在多個 DHCP 服務器,客戶端可能會收到多個
Offer
消息。在這種情況下,客戶端通常會選擇第一個收到的Offer或根據其他標準(如服務器優先級)選擇一個Offer。
-
-
DHCP客戶端確認地址(Request)
-
客戶端在收到
DHCP Offer
后,DHCP 客戶會根據 DHCP 提供報文中的事物 ID,來判斷該報文是否是自己所請求的報文,然后發送一個 DHCP Request 消息給選定的 DHCP 服務器,表示它接受該服務器提供的IP地址和其他配置參數。這個
Request
消息是一個廣播消息(目的IP地址為廣播地址),因為首先需要征得該服務器的同意,之后才能正式使用向該DHCP服務器租用的IP地址。DHCP 請求報文中封裝有事物 ID、DHCP 客戶端的 MAC 地址、接受的租約中的 IP 地址、提供此租約的 DHCP 服務器端的 IP 地址等信息。
-
-
DHCP服務器確認并更新數據庫(Ack/Decline)
-
當 DHCP 服務器收到客戶端的
DHCP Request
消息后,它會發送一個 DHCP Ack 消息作為響應(目的IP地址為廣播地址),確認客戶端可以使用請求的IP地址和其他配置參數。這個Ack
消息也會更新DHCP服務器的數據庫,標記該 IP 地址已經被分配出去。 -
此時,
DHCP
服務器仍會使用ARP
檢測所分配到的 IP 地址是否已被網絡中其他主機占用,如果 DHCP 服務器提供的 IP 地址已經被其他客戶端使用(由于某種原因),則服務器會發送一個 DHCP DECLINE 消息給客戶端,撤銷地址租約,表示IP地址分配失敗,客戶端需要重新發送DHCP Discover
消息以獲取新的IP地址。若未被占用,則可以使用租約中的IP地址與網絡中其他主機通信了
-
地址分配機制
DHCP 提供了兩種主要的地址分配機制:
-
動態分配:為客戶端分配一個有使用期限的IP地址(租期)。租期到期前,客戶端需要續租。這種方式適用于臨時接入網絡的設備。
-
靜態分配:網絡管理員可以為特定設備分配固定的IP地址,避免手動配置錯誤
在工作過程中:
-
DHCP客戶端更新租約(Request/Discover)
-
當 DHCP 客戶端已經和某個 IP 地址綁定后,經過 0.5 倍的租用期時間后,為了更新 IP 地址的租約,它會發送 DHCP REQUEST 單播報文。在這種情況下,客戶端知道服務器的具體地址,因此可以直接向該地址發送單播請求。
-
DHCP 服務器若同意,則發回 DHCP ACK 確認報文,這樣,DHCP 客戶就得到了新的租用期。
-
DHCP 服務器若不同意,則發回DHCP NACK否認報文,這時,DHCP 客戶必須立即停止使用之前租用的IP地址,并重新發送 DHCP Discover 發現報文來重新申請IP地址。
-
DHCP 服務器者未做出響應,則在租用期過了 87.5% 時,DHCP 客戶必須重新發送
DHCP REQUEST
請求報文,然后繼續等待 DHCP 服務器可能做出的反應。 -
若 DHCP 仍未做出響應,當租用期到期后,DHCP 客戶必須立即停止使用之前租用的 IP 地址,并重新發送 DHCP 發現報文來重新申請 IP 地址。
-
-
DHCP客戶終止租用期(Release)
- DHCP 客戶可以隨時提前終止 DHCP 服務器所提供的租用期,這時只需向 DHCP 服務器發送 DHCP RELEASE 釋放報文段即可。
DHCP 中繼代理
在每一個網絡上都設置一個 DHCP
服務器會使 DHCP
服務器的數量太多。因此,在實際應用中,是使每一個網絡至少有一個DHCP中繼代理(通常是一臺路由器),它配置了 DHCP
服務器的 IP 地址信息,作為各網絡中計算機與 DHCP
服務器的橋梁。
總結
DHCP
是一種高效的網絡管理協議,通過自動分配 IP 地址和網絡配置信息,極大地簡化了網絡管理流程,提高了網絡的靈活性和可擴展性。它在現代網絡中扮演著不可或缺的角色,尤其是在局域網、無線網絡和云計算環境中。