複製鏈接
請複製以下鏈接發送給好友

DHCP

鎖定
DHCP(動態主機配置協議)是一個局域網的網絡協議。指的是由服務器控制一段IP地址範圍,客户機登錄服務器時就可以自動獲得服務器分配的IP地址和子網掩碼。默認情況下,DHCP作為Windows Server的一個服務組件不會被系統自動安裝,還需要管理員手動安裝並進行必要的配置。 [1] 
中文名
動態主機配置協議
外文名
Dynamic Host Configuration Protocol
類    型
計算機網絡應用層協議
簡    稱
DHCP
隸    屬
Windows Server
操作方法
管理員手動安裝

DHCP功能概述

DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)通常被應用在大型的局域網絡環境中,主要作用是集中地管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,並能夠提升地址的使用率。 [2] 
DHCP協議採用客户端/服務器模型,主機地址的動態分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,才會向網絡主機發送相關的地址配置等信息,以實現網絡主機地址信息的動態配置。DHCP具有以下功能: [2] 
1. 保證任何IP地址在同一時刻只能由一台DHCP客户機所使用。 [2] 
2. DHCP應當可以給用户分配永久固定的IP地址。 [2] 
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。 [2] 
4. DHCP服務器應當向現有的BOOTP客户端提供服務。 [2] 
DHCP有三種機制分配IP地址: [2] 
相關圖片 相關圖片
1) 自動分配方式(Automatic Allocation),DHCP服務器為主機指定一個永久性的IP地址,一旦DHCP客户端第一次成功從DHCP服務器端租用到IP地址後,就可以永久性的使用該地址。 [2] 
2) 動態分配方式(Dynamic Allocation),DHCP服務器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。 [2] 
3) 手工分配方式(Manual Allocation),客户端的IP地址是由網絡管理員指定的,DHCP服務器只是將指定的IP地址告訴客户端主機。 [2] 
三種地址分配方式中,只有動態分配可以重複使用客户端不再需要的地址。 [2] 
DHCP消息的格式是基於BOOTP(Bootstrap Protocol)消息格式的,這就要求設備具有BOOTP中繼代理的功能,並能夠與BOOTP客户端和DHCP服務器實現交互。BOOTP中繼代理的功能,使得沒有必要在每個物理網絡都部署一個DHCP服務器。RFC 951和RFC 1542對BOOTP協議進行了詳細描述。 [2] 

DHCP封包格式

DHCP封包在傳輸層(Transport Layer)是採用UDP協議,而當 Client傳送封包給 Server時,採用的是UDP 67 Port,從 Server傳送給 Client則是使用UDP 68 Port。
DHCP的封包格式如圖1所示,各字段定義如下: [3] 
圖1 DHCP報文格式 圖1 DHCP報文格式
OP:
若是 client 送給 server 的封包,設為 1 ,反向則為 2。
HTYPE:
硬件類別,Ethernet 為 1。 [3] 
HLEN:
硬件地址長度, Ethernet 為 6。 [3] 
HOPS:
封包需經過 router 傳送,每站加 1 ,若在同一網內,為 0。 [3] 
TRANSACTION ID:
DHCP REQUEST 時產生的數值,以作 DHCPREPLY 時的依據。 [3] 
SECONDS:
Client 端啓動時間(秒)。 [3] 
FLAGS:
從 0 到 15 共 16 bits ,當 bit 為 1 時表示 server 將以廣播方式傳送封包給 client ,其餘尚未使用。 [3] 
ciaddr:
要是 client 端想繼續使用之前取得的IP 地址,則列於這裏。 [3] 
yiaddr:
從 server 送回 client 的 DHCP OFFER 與 DHCPACK封包中,此欄填寫分配給 client 的 IP 地址。 [3] 
siaddr:
若 client 需要透過網絡開機,從 server 送出的 DHCP OFFER、DHCPACK、DHCPNACK封包中,此欄填寫開機程序代碼所在 server 的地址。 [3] 
giaddr:
若需跨網域進行 DHCP 發放,此欄為 relay agent 的地址,否則為 0。 [3] 
chaddr:
Client 的硬件地址。 [3] 
sname:
Server 的名稱字符串,以 0x00 結尾。 [3] 
file:
若 client 需要透過網絡開機,此欄將指出開機程序名稱,稍後以 TFTP 傳送。 [3] 

DHCP工作原理

DHCP協議採用UDP作為傳輸協議,主機發送請求消息到DHCP服務器的67號端口,DHCP服務器迴應應答消息給主機的68號端口。詳細的交互過程如圖2。 [4] 
圖2 圖2
1、DHCP Client以廣播的方式發出DHCP Discover報文。 [4] 
2、所有的DHCP Server都能夠接收到DHCP Client發送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client發送一個DHCP Offer報文。 [4] 
DHCP Offer報文中“Your(Client) IP Address”字段就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”字段中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文後會存在一個已分配IP地址的紀錄。 [4] 
3、DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。 [4] 
DHCP Client會發出一個廣播的DHCP Request報文,在選項字段中會加入選中的DHCP Server的IP地址和需要的IP地址。 [4] 
4、DHCP Server收到DHCP Request報文後,判斷選項字段中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,並在選項字段中增加IP地址的使用租期信息。 [4] 
5、DHCP Client接收到DHCP ACK報文後,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址並根據IP地址使用租期自動啓動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然後DHCP Client開始新的地址申請過程。 [4] 
6、DHCP Client在成功獲取IP地址後,隨時可以通過發送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文後,會回收相應的IP地址並重新分配。 [4] 
在使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。 [4] 
在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server發送DHCP Release報文來釋放這個IP地址,並開始新的IP地址申請過程。 [4] 
需要説明的是:DHCP客户端可以接收到多個DHCP服務器的DHCPOFFER數據包,然後可能接受任何一個DHCPOFFER數據包,但客户端通常只接受收到的第一個DHCPOFFER數據包。另外,DHCP服務器DHCPOFFER中指定的地址不一定為最終分配的地址,通常情況下,DHCP服務器會保留該地址直到客户端發出正式請求。 [4] 
正式請求DHCP服務器分配地址DHCPREQUEST採用廣播包,是為了讓其它所有發送DHCPOFFER數據包的DHCP服務器也能夠接收到該數據包,然後釋放已經OFFER(預分配)給客户端的IP地址。 [4] 
如果發送給DHCP客户端的地址已經被其他DHCP客户端使用,客户端會向服務器發送DHCPDECLINE信息包拒絕接受已經分配的地址信息。 [4] 
在協商過程中,如果DHCP客户端發送的REQUEST消息中的地址信息不正確,如客户端已經遷移到新的子網或者租約已經過期,DHCP服務器會發送DHCPNAK消息給DHCP客户 端,讓客户端重新發起地址請求過程。 [4] 

DHCPDHCP設備

由於DHCP是C/S模式運行的,所以使用DHCP的設備為客户端,而提供DHCP服務的為服務端。DHCP客户端可以讓設備自動地從DHCP服務器獲得IP地址以及其他配置參數。使用DHCP客户端可以帶來如下好處:
(1)降低了配置和部署設備時間;
(2)降低了發生配置錯誤的可能性;
(3)可以集中化管理設備的IP地址分配。DHCP服務器指的是由
服務器控制一段IP地址範圍,客户端登錄服務器時就可以自動獲得服務器分配的IP地址和子網掩碼。 [5] 
需要注意的是,DHCP也可以用在不同的子網上,這時候需要使用稱為DHCP中繼代理( DHCP Relay, DHCPR,也叫DHCP中繼)的設備。當DHCP客户端與服務器不在同一個子網上,就必須有DHCP中繼代理來轉發DHCP請求和應答消息。DHCP中繼代理的數據轉發,與通常路由轉發是不同的,通常的路由轉發相對來説是透明傳輸的,設備一般不會修改IP包內容。 [5] 
而DHCP中繼代理接收到DHICP消息後,重新生成一個DHCP消息,然後轉發出去。 [5] 
有了DHCP中繼,可以實現DHCP的跨網運作。由於 DHCP DISCOVER是以廣播方式進行的,其情形只能在同一網絡之內進行,因為路由器是不會將廣播傳送出去的。但如果DHCP服務器架設在其他的網絡上面,可以用DHCP中繼來接管客户的DHCP請求,然後將此請求傳遞給真正的DHCP服務器,然後將服務器的回覆傳給客户。這裏,DHCP中繼主機必須自己具有路由能力,且能將雙方的數據報互傳對方。如果不使用中繼,也可以在每一個網絡中安裝DHCP服務器,但這樣的話,一來設備成本會增加,而且管理上面也比較分散。當然,如果在大型的網絡中,這樣的均衡式架構還是可取的。 [5] 

DHCPDHCP服務

DHCP安裝DHCP服務

在Windows Server系統中默認沒有安裝DHCP服務,因此需要安裝DHCP服務。 [4] 
相關圖片 相關圖片
第1步:單擊“開始”按鈕,在“控制面板”中雙擊“添加或刪除程序”圖標,在打開的窗口左側單擊“添加/刪除Windows組件”按鈕,打開“Windows組件嚮導”對話框。 [4] 
第2步:在“組件”列表中找到並勾選“網絡服務”複選框,然後單擊“詳細信息”按鈕,打開“網絡服務”對話框。接着在“網絡服務的子組件”列表中勾選“動態主機配置協議(DHCP)”複選框,依次單擊“確定→下一步”按鈕開始配置和安裝DHCP服務。最後單擊“完成”按鈕完成安裝。 [4] 
提示:如果是在Active Directory(活動目錄)域中部署DHCP服務器,還需要進行授權才能使DHCP服務器生效。本例的網絡基於工作組管理模式,因此無需進行授權操作即可進行創建IP作用域的操作。 [4] 

DHCPDHCP服務器

並不是安裝了DHCP功能後就能直接使用,還必須進行授權操作,未經授權操作的服務器無法提供DHCP服務。對DHCP服務器授權操作的過程如下: [4] 
1. 依次點擊“開始→程序→管理工具→DHCP”,打開DHCP控制枱窗口。 [4] 
相關圖片 相關圖片
2. 在控制枱窗口中,用鼠標左鍵點擊選中服務器名,然後單擊右鍵,在快捷菜單中選中“授權”,此時需要幾分鐘的等待時間。注意:如果系統長時間沒有反應,可以按F5鍵或選擇菜單工具中的“操作”下的“刷新”進行屏幕刷新,或先關閉DHCP控制枱,在服務器名上用鼠標右鍵點擊。如果快捷菜單中的“授權”已經變為“撤消授權”,則表示對DHCP服務器授權成功。此時,最明顯的標記是服務器名前面紅色向上的箭頭變成了綠色向下的箭頭。這樣,這台被授權的DHCP服務器就有分配IP的權利了。 [4] 

DHCPIP作用域

要想為同一子網內的所有客户端電腦自動分配IP地址,首先要做就是創建一個IP作用域,這也是事先確定一段IP地址作為IP作用域的原因。下面開始創建IP作用域的操作。 [4] 
第1步:依次單擊“開始→管理工具→DHCP”,打開“DHCP”控制枱窗口。在左窗格中右擊DHCP服務器名稱,執行“新建作用域”命令。 [4] 
第2步:在打開的“新建作用域嚮導”對話框中單擊“下一步”按鈕,打開“作用域名”嚮導頁。在“名稱”框中為該作用域鍵入一個名稱(如“CCE”)和一段描述性信息,單擊“下一步”按鈕。 [4] 
小提示:這裏的作用域名稱只起到一個標識的作用,基本上沒有實際應用。 [4] 
第3步:打開“IP地址範圍”嚮導頁,分別在“起始IP地址”和“結束IP地址”編輯框中鍵入事先確定的IP地址範圍(本例為“10.115.223.2~10.115.223.254”)。接着需要定義子網掩碼,以確定IP地址中用於“網絡/子網ID”的位數。由於本例網絡環境為城域網內的一個子網,因此根據實際情況將“長度”微調框的值調整為“23”,單擊“下一步”按鈕。 [4] 
第4步:在打開的“添加排除”嚮導頁中可以指定排除的IP地址或IP地址範圍。由於已經使用了幾個IP地址作為其它服務器靜態IP地址,因此需要將它們排除。在“起始IP地址”編輯框中鍵入排除的IP地址並單擊“添加”按鈕。重複操作即可,接着單擊“下一步”按鈕。 [4] 
第5步:在打開的“租約期限”嚮導頁中,默認將客户端獲取的IP地址使用期限限制為8天。如果沒有特殊要求保持默認值不變,單擊“下一步”按鈕。 [4] 
第6步:打開“配置DHCP選項”嚮導頁,保持選中“是,我想現在配置這些選項”單選框並單擊“下一步”按鈕。在打開的“路由器(默認網關)”嚮導頁中根據實際情況鍵入網關地址(本例為“10.115.223.254”)並依次單擊“添加→下一步”按鈕。 [4] 
第7步:在打開的“域名稱和DNS服務器”嚮導頁中沒有做任何設置,這是因為網絡中沒有安裝DNS服務器且尚未升級成域管理模式.依次單擊“下一步”按鈕,跳過“WINS服務器”嚮導頁打開“激活作用域”嚮導頁。保持“是,我想現在激活此作用域”單選框選中狀態,並依次單擊“下一步”→“完成”按鈕結束配置。 [4] 
設置DHCP客户端:安裝了DHCP服務並創建了IP作用域後, 要想使用DHCP方式為客户端電腦分配IP地址,除了網絡中有一台DHCP服務器外,還要求客户端電腦應該具備自動向DHCP服務器獲取IP地址的能力,這些客户端電腦就被稱作DHCP客户端。 [4] 
因此我們對一台運行Windows XP的客户端電腦面前進行了如下設置:在桌面上右擊“網上鄰居”圖標,執行“屬性”命令。在打開的“網絡連接”窗口中右擊“本地連接”圖標並執行“屬性”,打開“本地連接 屬性”對話框。然後雙擊“Internet協議(TCP/IP)”選項,點選“自動獲得IP地址”單選框,並依次單擊“確定”按鈕。 [4] 
提示:默認情況下端電腦使用的都是自動獲取IP地址的方式,一般無需進行修改,只需檢查一下就行了。 [4] 
至此,DHCP服務器端和客户端已經全部設置完成了。在DHCP服務器正常運行的情況下,首次開機的客户端會自動獲取一個IP地址並擁有八天的使用期限。 [4] 

DHCP創建用户

創建新用户或供應商選項類啓動 DHCP 管理器。單擊控制枱樹中的適用的 DHCP服務器分支。右擊在的服務器,然後單擊創建新的用户類的”定義用户類“,或者單擊“定義供應商類"創建一個新的供應商類。單擊"添加"。在"新的類"的對話框鍵入一個描述性的標識名稱,為新的選項,在"顯示名稱"框。還可能會將其他信息添加到"説明"框。鍵入數據以匹配的類 ID 由ID或ASCII下的 DHCP客户端提供 DHCP服務器服務使用。若要為十六進制字節數字值輸入數據,請單擊文本框的左側。若要輸入信息交換 (ASCII)文本字符值為美國標準碼數據,單擊文本框的右側。單擊"確定",然後單擊"關閉"。使用新的類 ID 配置 DHCP 作用域在 DHCP 管理器,雙擊相應的 DHCP 作用域。右鍵單擊"作用域選項",然後單擊"配置選項"。單擊"高級",單擊以選中複選框或要使用新的供應商或用户類在功能旁邊的框。單擊"確定"。為客户端計算機設置指定的 DHCP 類 ID 字符串連接到基於 Windows 2000 的 DHCP服務器的客户端計算機使用下面的命令可以設置指定的 DHCP類別ID 字符串:ipconfig / setclassid adapter_name class_id。 [5] 
例如配置名為"Local Area Connection"的適配器名為"myuserclass 用户類 ID,請在命令提示符下鍵入 ipconfig / setclassid本地連接myuserclass ,然後按 ENTER 鍵。 [5] 
它標識"Local Area Connection"接口接收為"myuserclass"DHCP服務器上配置的 DHCP 選項。 [5] 
注意:ASCII 中的類 ID 是區分大小寫,並必須的匹配在編輯類對話框中輸入標識數據的類來創建新的用户或供應商選項類。 [5] 

DHCP相關介紹

DHCPDHCP服務器

DHCP服務器是一種動態分配主機IP的協議,在局域網的管理中主要作用是為其他計算機分配動態、靜態的地址,避免因自行設定IP地址而引起的地址衝突。 [6] 

DHCPDHCP中繼代理

相關圖片 相關圖片
DHCPRelay(DHCPR)DHCP中繼 也叫做DHCP中繼代理。DHCP中繼代理,就是在DHCP服務器和客户端之間轉發DHCP數據包。當DHCP客户端與服務器不在同一個子網上,就必須有DHCP中繼代理來轉發DHCP請求和應答消息。DHCP中繼代理的數據轉發,與通常路由轉發是不同的,通常的路由轉發相對來説是透明傳輸的,設備一般不會修改IP包內容。而DHCP中繼代理接收到DHCP消息後,重新生成一個DHCP消息,然後轉發出去。 [7] 
在DHCP客户端看來,DHCP中繼代理就像DHCP服務器;在DHCP服務器看來,DHCP中繼代理就像DHCP客户端。 [7] 
參考資料
  • 1.    王靈霞,劉永純編.網絡管理與運維實戰寶典:中國鐵道出版社,2016.07:第220頁
  • 2.    魯凌雲編著. 計算機網絡基礎應用教程. 北京市:清華大學出版社, 2012.03.
  • 3.    施威銘研究室著.Internet協議概念與實踐:清華大學出版社,2001年10月第1版:第296頁
  • 4.    顧潤龍,劉智濤,侯玉香主編.LINUX操作系統及應用技術:航空工業出版社,2016.08:第170頁
  • 5.    徐勁松主編.計算機網絡應用技術:北京電子大學出版社,2015.01:第112頁
  • 6.    楊佩璐編著.dos/bios高手真經:中國鐵道出版社,2014.10:第221頁
  • 7.    李錫澤,何偉,嶽昴主編.網絡構建與管理:武漢大學出版社,2015.04:第169頁