目錄
一.介紹 DHCPv4
DHCPv4 動態分配 IPv4 地址和其他網絡配置信息。DHCPv4 服務器動態地從地址池中分配或出租 IPv4 地址,使用期限爲服務器選擇的一段有限時間,或者直到客戶端不再需要該地址爲止。客戶端的租用期限由管理員確定。管理員在配置 DHCPv4 服務器時,可爲其設定不同的租期屆滿時間。租用時間在任何地方通常都是 24 小時到一週或更長時間。租期屆滿後,客戶端必須申請另一地址,但通常是把同一地址重新分配給客戶端。
二.DHCPv4 操作
如圖 1 所示,DHCPv4 在客戶端/服務器模式下工作。當客戶端與 DHCPv4 服務器通信時,服務器會將 IPv4 地址分配或出租給該客戶端。然後客戶端使用租用的 IP 地址連接到網絡,直到租期屆滿。客戶端必須定期聯繫 DHCP 服務器以續展租期。這種租用機制確保移動或關閉的客戶端不保留它們不再需要的地址。租期屆滿後,DHCP 服務器會將地址返回地址池,如有必要,可將其再次分配。
租賃發起
當客戶端啓動時(或要連接網絡),它開始進行四步過程以獲取租約。如圖 2 所示,客戶端使用包含自己 MAC 地址的廣播 DHCPDISCOVER 消息開始該過程以查找可用 DHCPv4 服務器。
DHCP 發現 (DHCPDISCOVER)
DHCPDISCOVER 消息在網絡上查找 DHCPv4 服務器。由於客戶端啓動時沒有有效的 IPv4 信息,因此,它將使用第 2 層和第 3 層廣播地址與服務器通信。
DHCP 提供 (DHCPOFFER)
當 DHCPv4 服務器收到 DHCPDISCOVER 消息時,會保留一個可用 IPv4 地址以租賃給客戶端。服務器還會創建一個 ARP 條目,該條目包含請求客戶端的 MAC 地址和客戶端的租用 IPv4 地址。如圖 3 所示,DHCPv4 服務器將綁定 DHCPOFFER 消息發送到請求客戶端。
DHCP 請求 (DHCPREQUEST)
如圖 4 所示,當客戶端從服務器收到 DHCPOFFER 時,會發回一條 DHCPREQUEST 消息。此消息用於發起租用和租約更新。用於發起租用時,將 DHCPREQUEST 用作已提供參數所選定服務器的綁定接受通知,並隱式拒絕任何其他可能已爲客戶端提供了綁定服務的服務器。
許多企業網絡使用多臺 DHCPv4 服務器。DHCPREQUEST 消息以廣播的形式發送,將已接受提供的情況告知此 DHCPv4 服務器和任何其它 DHCPv4 服務器。
DHCP 確認 (DHCPACK)
如圖 5 所示,收到 DHCPREQUEST 消息後,服務器使用 ICMP ping 驗證該地址的租用信息以確保該地址尚未使用,爲客戶端租用創建新的 ARP 條目,並以 DHCPACK 消息作爲回覆。除消息類型字段不同外,DHCPACK 消息與 DHCPOFFER 消息別無二致。客戶端收到 DHCPACK 消息後,記錄下配置信息,併爲所分配的地址執行 APR 查找。如果沒有對 ARP 的應答,客戶端就會知道 IPv4 地址是有效的,並開始像使用自己的地址一樣使用該地址。
租賃續約
DHCP 請求 (DHCPREQUEST)
如圖 6 所示,租期屆滿後,客戶端將 DHCPREQUEST 消息直接發送到最初提供 IPv4 地址的 DHCPv4 服務器。如果在指定的時間內沒有收到 DHCPACK,客戶端會廣播另一個 DHCPREQUEST,這樣,另外一個 DHCPv4 服務器便可續展租期。
DHCP 確認 (DHCPACK)
如圖 7 所示,收到 DHCPREQUEST 消息後,服務器通過返回一個 DHCPACK 來驗證租用信息。
三.DHCPv4 消息格式
DHCPv4 消息格式用於所有 DHCPv4 事務。DHCPv4 消息封裝在 UDP 傳輸協議中。從客戶端發出的 DHCPv4 消息使用 UDP 源端口 68 和目標端口 67。從服務器發往客戶端的 DHCPv4 消息使用 UDP 源端口 67 和目標端口 68。
圖中顯示了 DHCPv4 消息的格式。字段如下:
- 操作 (OP) 代碼 - 指定通用消息類型。1 表示請求消息,2 表示回覆消息。
- 硬件類型 - 確定網絡中使用的硬件類型。例如,1 表示以太網,15 表示幀中繼,20 表示串行線路。這與 ARP 消息中使用的代碼相同。
- 硬件地址長度 - 指定地址的長度。
- 跳數 - 控制消息的轉發。客戶端傳輸請求前將其設置爲 0。
- 事務標識符 - 客戶端使用事務標識符將請求和從 DHCPv4 服務器接收的應答進行匹配。
- 秒數 - 確定從客戶端開始嘗試獲取或更新租用以來經過的秒數。當有多個客戶端請求未得到處理時,DHCPv4 服務器會使用秒數來排定應答的優先順序。
- 標記 - 發送請求時,不知道自己 IPv4 地址的客戶端會使用標記。只使用 16 位中的一位,即廣播標記。此字段中的 1 值告訴接收請求的 DHCPv4 服務器或中繼代理應將應答作爲廣播發送。
- 客戶端 IP 地址 - 當客戶端的地址有效且可用時,客戶端在租約更新期間(而不是在獲取地址的過程中)使用客戶端 IP 地址。當且僅當客戶端在綁定狀態下有一個有效的 IPv4 地址時,該客戶端纔會將其 IPv4 地址放在此字段中,否則,它會將該字段設置爲 0。
- 您的 IP 地址 - 服務器使用該地址將 IPv4 地址分配給客戶端。
- 服務器 IP 地址 - 服務器使用該地址確定在 bootstrap 過程的下一步驟中客戶端應當使用的服務器地址,它既可能是也可能不是發送該應答的服務器。發送服務器始終會把自己的 IPv4 地址放在稱作“服務器標識符”DHCPv4 選項的特殊字段中。
- 網關 IP 地址 - 涉及 DHCPv4 中繼代理時會路由 DHCPv4 消息。網關地址可以幫助位於不同子網或網絡的客戶端與服務器之間傳輸 DHCPv4 請求和 DHCPv4 回覆。
- 客戶端硬件地址 - 指定客戶端的物理層。
- 服務器名稱 - 由發送 DHCPOFFER 或 DHCPACK 消息的服務器使用。服務器可能選擇性地將其名稱放在此字段中。這可以是簡單的文字別名或 DNS 域名,例如 dhcpserver.netacad.net。
- 啓動文件名 - 客戶端選擇性地在 DHCPDISCOVER 消息中使用它來請求特定類型的啓動文件。服務器在 DHCPOFFER 中使用它來完整指定啓動文件目錄和文件名。
- DHCP 選項 - 容納 DHCP 選項,包括基本 DHCP 運行所需的幾個參數。此字段的長度不定。客戶端與服務器均可以使用此字段。