動态主機配置協議DHCP(Dynamic Host Configuration Protocol)是一種網絡管理協議,用于集中對用戶IP地址進行動态管理和配置。DHCP于1993年10月成為标準協議,其前身是BOOTP協議。DHCP協議由RFC 2131定義,采用客戶端/服務器通信模式,由客戶端(DHCP Client)向服務器(DHCP Server)提出配置申請,DHCP Server為網絡上的每個設備動态分配IP地址、子網掩碼、默認網關地址,域名服務器(DNS)地址和其他相關配置參數,以便可以與其他IP網絡通信。
為什麼要使用DHCP?在IP網絡中,每個連接Internet的設備都需要分配唯一的IP地址。DHCP使網絡管理員能從中心結點監控和分配IP地址。當某台計算機移到網絡中的其它位置時,能自動收到新的IP地址。DHCP實現的自動化分配IP地址不僅降低了配置和部署設備的時間,同時也降低了發生配置錯誤的可能性。另外DHCP服務器可以管理多個網段的配置信息,當某個網段的配置發生變化時,管理員隻需要更新DHCP服務器上的相關配置即可,實現了集中化管理。
總體來看,DHCP帶來了如下優勢:
DHCP協議采用UDP作為傳輸協議,DHCP客戶端發送請求消息到DHCP服務器的68号端口,DHCP服務器回應應答消息給DHCP客戶端的67号端口。
隻有跟DHCP客戶端在同一個網段的DHCP服務器才能收到DHCP客戶端廣播的DHCP DISCOVER報文。當DHCP客戶端與DHCP服務器不在同一個網段時,必須部署DHCP中繼來轉發DHCP客戶端和DHCP服務器之間的DHCP報文。在DHCP客戶端看來,DHCP中繼就像DHCP服務器;在DHCP服務器看來,DHCP中繼就像DHCP客戶端。
無中繼場景時DHCP客戶端首次接入網絡的工作原理
如下圖所示,在沒有部署DHCP中繼的場景下,首次接入網絡DHCP客戶端與DHCP服務器的報文交互過程,該過程稱為DHCP報文四步交互。
無中繼場景時DHCP客戶端首次接入網絡的報文交互示意圖
第一步:發現階段
首次接入網絡的DHCP客戶端不知道DHCP服務器的IP地址,為了學習到DHCP服務器的IP地址,DHCP客戶端以廣播方式發送DHCP DISCOVER報文(目的IP地址為255.255.255.255)給同一網段内的所有設備(包括DHCP服務器或中繼)。DHCP DISCOVER報文中攜帶了客戶端的MAC地址(chaddr字段)、需要請求的參數列表選項(Option55)、廣播标志位(flags字段)等信息。
第二步:提供階段
與DHCP客戶端位于同一網段的DHCP服務器都會接收到DHCP DISCOVER報文,DHCP服務器選擇跟接收DHCP DISCOVER報文接口的IP地址處于同一網段的地址池,并且從中選擇一個可用的IP地址,然後通過DHCP OFFER報文發送給DHCP客戶端。
通常,DHCP服務器的地址池中會指定IP地址的租期,如果DHCP客戶端發送的DHCP DISCOVER報文中攜帶了期望租期,服務器會将客戶端請求的期望租期與其指定的租期進行比較,選擇其中時間較短的租期分配給客戶端。
DHCP服務器在地址池中為客戶端分配IP地址的順序如下:
設備支持在地址池中排除某些不能通過DHCP機制進行分配的IP地址。例如,客戶端所在網段已經手工配置了地址為192.168.1.100/24的DNS服務器,DHCP服務器上配置的網段為192.168.1.0/24的地址池中需要将192.168.1.100的IP地址排除,不能通過DHCP分配此地址,否則,會造成地址沖突。
為了防止分配出去的IP地址跟網絡中其他客戶端的IP地址沖突,DHCP服務器在發送DHCP OFFER報文前通過發送源地址為DHCP服務器IP地址、目的地址為預分配出去IP地址的ICMP ECHO REQUEST報文對分配的IP地址進行地址沖突探測。如果在指定的時間内沒有收到應答報文,表示網絡中沒有客戶端使用這個IP地址,可以分配給客戶端;如果指定時間内收到應答報文,表示網絡中已經存在使用此IP地址的客戶端,則把此地址列為沖突地址,然後等待重新接收到DHCP DISCOVER報文後按照前面介紹的選擇IP地址的優先順序重新選擇可用的IP地址。
此階段DHCP服務器分配給客戶端的IP地址不一定是最終确定使用的IP地址,因為DHCP OFFER報文發送給客戶端等待16秒後如果沒有收到客戶端的響應,此地址就可以繼續分配給其他客戶端。通過下面的選擇階段和确認階段後才能最終确定客戶端可以使用的IP地址。
第三步:選擇階段
如果有多個DHCP服務器向DHCP客戶端回應DHCP OFFER報文,則DHCP客戶端一般隻接收第一個收到的DHCP OFFER報文,然後以廣播方式發送DHCP REQUEST報文,該報文中包含客戶端想選擇的DHCP服務器标識符(即Option54)和客戶端IP地址(即Option50,填充了接收的DHCP OFFER報文中yiaddr字段的IP地址)。
DHCP客戶端廣播發送DHCP REQUEST報文通知所有的DHCP服務器,它将選擇某個DHCP服務器提供的IP地址,其他DHCP服務器可以重新将曾經分配給客戶端的IP地址分配給其他客戶端。
第四步:确認階段
當DHCP服務器收到DHCP客戶端發送的DHCP REQUEST報文後,DHCP服務器回應DHCP ACK報文,表示DHCP REQUEST報文中請求的IP地址(Option50填充的)分配給客戶端使用。
DHCP客戶端收到DHCP ACK報文,會廣播發送免費ARP報文,探測本網段是否有其他終端使用服務器分配的IP地址,如果在指定時間内沒有收到回應,表示客戶端可以使用此地址。如果收到了回應,說明有其他終端使用了此地址,客戶端會向服務器發送DHCP DECLINE報文,并重新向服務器請求IP地址,同時,服務器會将此地址列為沖突地址。當服務器沒有空閑地址可分配時,再選擇沖突地址進行分配,盡量減少分配出去的地址沖突。
當DHCP服務器收到DHCP客戶端發送的DHCP REQUEST報文後,如果DHCP服務器由于某些原因(例如協商出錯或者由于發送REQUEST過慢導緻服務器已經把此地址分配給其他客戶端)無法分配DHCP REQUEST報文中Option50填充的IP地址,則發送DHCP NAK報文作為應答,通知DHCP客戶端無法分配此IP地址。DHCP客戶端需要重新發送DHCP DISCOVER報文來申請新的IP地址。
有中繼場景時DHCP客戶端首次接入網絡的工作原理
有DHCP中繼的場景中,首次接入網絡的DHCP客戶端和DHCP服務器的工作原理與無中繼場景時DHCP客戶端首次接入網絡的工作原理相同。主要差異是DHCP中繼在DHCP服務器和DHCP客戶端之間轉發DHCP報文,以保證DHCP服務器和DHCP客戶端可以正常交互。下面僅針對DHCP中繼的工作原理進行介紹。
如下圖所示,在部署DHCP中繼的場景下,首次接入網絡DHCP客戶端與DHCP服務器的報文交互過程。
有中繼場景時DHCP客戶端首次接入網絡的報文交互示意圖
第一步:發現階段
DHCP中繼接收到DHCP客戶端廣播發送的DHCP DISCOVER報文後,進行如下處理:
如果DHCP客戶端與DHCP服務器之間存在多個DHCP中繼,後面的中繼接收到DHCP DISCOVER報文的處理流程同前面所述。
第二步:提供階段
DHCP服務器接收到DHCP DISCOVER報文後,選擇與報文中giaddr字段為同一網段的地址池,并為客戶端分配IP地址等參數,然後向giaddr字段标識的DHCP中繼單播發送DHCP OFFER報文。
DHCP中繼收到DHCP OFFER報文後,會進行如下處理:
第三步:選擇階段
中繼接收到來自客戶端的DHCP REQUEST報文的處理過程同無中繼場景下的選擇階段。
第四步:确認階段
中繼接收到來自服務器的DHCP ACK報文的處理過程同無中繼場景下的确認階段。
DHCP客戶端重用曾經使用過的地址的工作原理
DHCP客戶端非首次接入網絡時,可以重用曾經使用過的地址。如下圖所示,DHCP客戶端與DHCP服務器交互DHCP報文,以重新獲取之前使用的IP地址等網絡參數,該過程稱為兩步交互。
DHCP客戶端重用曾經使用過的IP地址的報文交互過程
第一步:選擇階段
客戶端廣播發送包含前一次分配的IP地址的DHCP REQUEST報文,報文中的Option50(請求的IP地址選項)字段填入曾經使用過的IP地址。
第二步:确認階段
DHCP服務器收到DHCP REQUEST報文後,根據DHCP REQUEST報文中攜帶的MAC地址來查找有沒有相應的租約記錄,如果有則返回DHCP ACK報文,通知DHCP客戶端可以繼續使用這個IP地址。否則,保持沉默,等待客戶端重新發送DHCP DISCOVER報文請求新的IP地址。
DHCP客戶端更新租期的工作原理
DHCP服務器采用動态分配機制給客戶端分配IP地址時,分配出去的IP地址有租期限制。DHCP客戶端向服務器申請地址時可以攜帶期望租期,服務器在分配租期時把客戶端期望租期和地址池中租期配置比較,分配其中一個較短的租期給客戶端。租期到期或者客戶端下線釋放地址後,服務器會收回該IP地址,收回的IP地址可以繼續分配給其他客戶端使用。這種機制可以提高IP地址的利用率,避免客戶端下線後IP地址繼續被占用。如果DHCP客戶端希望繼續使用該地址,需要更新IP地址的租期(如延長IP地址租期)。
DHCP客戶端更新租期的過程如下圖所示。
DHCP客戶端更新租期示意圖
客戶端在租期時間到之前,如果用戶不想使用分配的IP地址(例如客戶端網絡位置需要變更),會觸發DHCP客戶端向DHCP服務器發送DHCP RELEASE報文,通知DHCP服務器釋放IP地址的租期。DHCP服務器會保留這個DHCP客戶端的配置信息,将IP地址列為曾經分配過的IP地址中,以便後續重新分配給該客戶端或其他客戶端。客戶端可以通過發送DHCP INFORM報文向服務器請求更新配置信息。
如下圖所示,部署DHCP中繼時,更新租期的過程與上述過程相似。
客戶端通過DHCP中繼更新租期示意圖
DHCP使用場景DHCP提供了兩種地址分配機制,網絡管理員可以根據網絡需求為不同的主機選擇不同的分配策略。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!