什麼是DHCP?為什麼要用DHCP?

九月 14, 2024 by · Leave a Comment
Filed under: killtest 

動態主機設定協定DHCP(Dynamic Host Configuration Protocol)是一種網路管理協議,用於集中對使用者IP位址進行動態管理和設定。
DHCP於1993年10月成為標準協議,其前身為BOOTP協議。 DHCP協定由RFC 2131定義,採用客戶端/伺服器通訊模式,由客戶端(DHCP Client)向伺服器(DHCP Server)提出設定申請,DHCP Server為網路上的每個裝置動態分配IP位址、子網路遮罩、預設網關位址,網域名稱伺服器(DNS)位址和其他相關設定參數,以便可以與其他IP網路通訊。
01     為什麼要使用DHCP?
在IP網路中,每個連接Internet的設備都需要分配唯一的IP位址。 DHCP使網路管理員能從中心結點監控並分配IP位址。當某台電腦移到網路中的其它位置時,能自動收到新的IP位址。 DHCP實現的自動化分配IP位址不僅降低了配置和部署設備的時間,同時也降低了發生設定錯誤的可能性。另外DHCP伺服器可以管理多個網段的設定訊息,當某個網段的設定發生變化時,管理員只需要更新DHCP伺服器上的相關設定即可,實現了集中化管理。
整體來看,DHCP帶來瞭如下優勢:
準確的IP配置:IP位址配置參數必須準確,並且在處理「 192.168.XXX.XXX」之類的輸入時,很容易出錯。另外印刷錯誤通常很難解決,使用DHCP伺服器可以最大程度地降低這種風險。
減少IP位址衝突:每個連接的設備都必須有一個IP位址。但是,每個位址只能使用一次,重複的位址將導致無法連接一個或兩個裝置的衝突。當手動分配位址時,尤其是在存在大量僅定期連接的端點(例如行動裝置)時,可能會發生這種情況。 DHCP的使用可確保每個位址僅使用一次。
IP位址管理的自動化:如果沒有DHCP,網路管理員將需要手動指派和撤銷位址。追蹤哪個設備具有什麼位址可能是徒勞無功的,因為幾乎無法理解設備何時需要存取網路以及何時需要離開網路。 DHCP允許將其自動化和集中化,因此網路專業人員可以從一個位置管理所有位置。
高效率的變更管理:DHCP的使用使更改位址,範圍或端點變得非常簡單。例如,組織可能希望將其IP尋址方案從一個範圍變更為另一個範圍。 DHCP伺服器配置有新訊息,該訊息將傳播到新端點。同樣,如果升級並更換了網路設備,則不需要網路配置。
02 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客戶端。
2.1  無中繼場景時DHCP客戶端首次接取網路的工作原理
如下圖所示,在沒有部署DHCP中繼的場景下,首次接取網路DHCP用戶端與DHCP伺服器的封包互動過程,此流程稱為DHCP封包四步驟互動。
微信图片_20240914110130
無中繼場景時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伺服器上已設定的與客戶端MAC位址靜態綁定的IP位址。
用戶端所傳送的DHCP DISCOVER封包中Option50(請求IP位址選項)指定的位址。
在位址池內尋找「Expired」狀態的IP位址,即曾經指派給客戶端的超過租期的IP位址。
在位址池內隨機尋找一個「Idle」狀態的IP位址。
如果找不到可供指派的IP位址,則位址池會依序自動回收超過租期的(「Expired」狀態)和處於衝突狀態(「Conflict」狀態)的IP位址。回收後如果找到可用的IP位址,則進行分配;否則,DHCP客戶端等待應答逾時後,重新發送DHCP DISCOVER封包申請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位址。… Continue reading