DHCP是如何進行工作的?
引言
DHCP是網路體系結構中 應用層 的一個重要協議,它可以幫助我們對要連線到網際網路的計算機進行IP地址等資訊的配置。本文從DHCP的原理出發,就DHCP的 工作過程 進行詳細的探討。
主要報文
- 發現報文 DHCPDISCOVER
- 提供報文 DHCPOFFER
- 請求報文 DHCPREQUEST
- 確認報文 DHCPACK
- 否認報文 DHCPNAK
- 釋放報文 DHCPRELEASE
工作過程
DHCP使用 客戶伺服器 方式。根據客戶與伺服器之間的報文互動情況,我們可以把整個DHCP協議工作過程簡單地分成以下4 個步驟:

DHCP協議的互動過程(圖片來源於網路)
Step1(發現階段)
DHCP客戶以 廣播 (broadcast)的形式傳送DHCP發現報文DHCPDISCOVER到本地網路。為什麼是以廣播的方式呢?因為現在並不知道DHCP伺服器在什麼地方,所以要發現(DISCOVER)它的IP地址。此時的DHCP客戶還沒有自己的IP地址,因此它將自己IP資料報的 源 IP地址 設為 全 0 。而將 目的 IP地址 設為 全 1 ,也就是我們說的廣播地址255.255.255.255。這樣,本地網路上所有安裝了TCP/IP協議的主機都可以收到這個報文,但只有DHCP伺服器才對這個報文進行應答。
Step2(提供階段)
凡收到DHCP發現報文的DHCP伺服器都發出DHCP提供報文。DHCP伺服器先在其 資料庫中 查詢該計算機的配置資訊。若找到,則返回找到的資訊;若找不到,則從伺服器的 地址池 (address pool)中取一個地址分配給該計算機。這裡存在的疑問是,為什麼要先在資料庫裡查詢?這是因為資料庫中可能存在與客戶端MAC地址靜態繫結的IP地址,而這個地址優先分配。這個階段DHCP伺服器發出的應答報文叫做DHCPOFFER,表示“提供”了IP地址等資訊。
Step3(選擇階段)
DHCP客戶可能收到 多個 DHCP提供報文,它從幾個DHCP伺服器中選擇其中的一個,通常是收到的 第一個 ,並向所選擇的DHCP伺服器傳送請求報文,請求(REQUEST)使用對方提供的IP地址和其他配置資料。
Step4(確認階段)
被選擇的DHCP伺服器傳送確認報文DHCPACK給DHCP客戶。DHCP客戶收到報文後,就可以使用剛才提供的IP地址了。這種狀態稱為“ 已繫結 ”。
說明
1. DHCP使用的協議和埠
DHCP資料報採用 UDP協議 進行封裝,DHCP客戶使用的UDP埠是68,而DHCP伺服器使用的UDP埠是67。
2. DHCP的租期和計時器
DHCP分配給DHCP客戶的IP地址是 臨時 的,DHCP客戶只能在一段時間內使用這個分配的IP地址。DHCP協議稱這段時間為 租期 (Lease Time),這個時間可以在DHCP伺服器上設定。RFC2132對Lease Time的要求如下 :
The time is in units of seconds, and is specified as a 32-bitunsigned integer.
即 時間以秒為單位,並指定為32位無符號整數 。可以設定的時間範圍從1秒到136年(2 32 秒),DHCP客戶也可以在自己傳送的報文中提出對租期的要求。
因此,DHCP客戶現在要根據伺服器提供的租期T設定兩個 計時器 T1和T2,它們的超時時間分別0.5T和0.875T,來提醒自己 更新租期 。
當超時時間到達T1時,DHCP客戶傳送請求報文DHCPREQUEST要求更新租期。
- DHCP伺服器若同意,則發回確認報文DHCPACK。DHCP客戶得到了新的租用期,重新設定計時器。
- DHCP伺服器若不同意,則發回否認報文DHCPNAK。這時DHCP客戶必須立即停止使用原來的IP地址,回到發現階段重新申請IP地址。
- DHCP伺服器若不響應,則在超時時間到達T2時,重新發送請求報文DHCPREQUEST要求更新租期,然後重複前面的步驟。
DHCP客戶可以隨時提前終止伺服器提供的租期,這時只需向DHCP伺服器傳送釋放報文DHCPRELEASE即可。
結束語
以上介紹了DHCP協議的詳細工作過程,對DHCP使用的埠、協議、租期和計時器等重要概念進行了說明。