DHCP瀏覽次數:1450次 最近更新:2019-06-28 18:41:24
動態主機設置協議(英語:Dynamic Host Configuration Protocol,DHCP)是一個局域網的網絡協議,使用UDP協議工作,主要有兩個用途:用于內部網或網絡服務供應商自動分配IP地址;給用戶用于內部網管理員作為對所有計算機作中央管理的手段。
中文全稱:動態主機設置協議
英文全稱:Dynamic Host Configuration Protocol
簡稱:DHCP
功能概述
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)通常被應用在大型的局域網絡環境中,主要作用是集中的管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,并能夠提升地址的使用率。
DHCP協議采用客戶端/服務器模型,主機地址的動態分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,才會向網絡主機發送相關的地址配置等信息,以實現網絡主機地址信息的動態配置。DHCP具有以下功能:
1. 保證任何IP地址在同一時刻只能由一臺DHCP客戶機所使用。
2. DHCP應當可以給用戶分配永久固定的IP地址。
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。
4. DHCP服務器應當向現有的BOOTP客戶端提供服務。
DHCP有三種機制分配IP地址:
1) 自動分配方式(Automatic Allocation),DHCP服務器為主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP服務器端租用到IP地址后,就可以永久性的使用該地址。
相關圖片
相關圖片
2) 動態分配方式(Dynamic Allocation),DHCP服務器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
3) 手工分配方式(Manual Allocation),客戶端的IP地址是由網絡管理員指定的,DHCP服務器只是將指定的IP地址告訴客戶端主機。
三種地址分配方式中,只有動態分配可以重復使用客戶端不再需要的地址。
DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,這就要求設備具有BOOTP中繼代理的功能,并能夠與BOOTP客戶端和DHCP服務器實現交互。BOOTP中繼代理的功能,使得沒有必要在每個物理網絡都部署一個DHCP服務器。RFC 951和RFC 1542對BOOTP協議進行了詳細描述。
封包格式

DHCP的封包格式如右圖所示,各字段定義如下:
FIELD OCTETS DESCRIPTION
----- ------ -----------
DHCP報文格式
DHCP報文格式
OP:
若是 client 送給 server 的封包,設為 1 ,反向為 2。HTYPE
硬件類別,Ethernet 為 1。
HLEN:
硬件地址長度, Ethernet 為 6。
HOPS:
若封包需經過 router 傳送,每站加 1 ,若在同一網內,為 0。
TRANSACTION ID:
DHCP REQUEST 時產生的數值,以作 DHCPREPLY 時的依據。
SECONDS:
Client 端啟動時間(秒)。
FLAGS:
從 0 到 15 共 16 bits ,最左一 bit 為 1 時表示 server 將以廣播方式傳送封包給 client ,其余尚未使用。
ciaddr:
要是 client 端想繼續使用之前取得之 IP 地址,則列于這里。
yiaddr:
從 server 送回 client 之 DHCP OFFER 與 DHCPACK封包中,此欄填寫分配給 client 的 IP 地址。
siaddr:
若 client 需要透過網絡開機,從 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK封包中,此欄填寫開機程序代碼所在 server 之地址。
giaddr:
若需跨網域進行 DHCP 發放,此欄為 relay agent 的地址,否則為 0。
chaddr:
Client 之硬件地址。
sname:
Server 之名稱字符串,以 0x00 結尾。
file:
若 client 需要透過網絡開機,此欄將指出開機程序名稱,稍后以 TFTP 傳送。
options:
允許廠商定議選項(Vendor-Specific Area),以提供更多的設定信息(如:Netmask、Gateway、DNS、等等)。其長度可變,同時可攜帶多個選項,每一選項之第一個 byte 為信息代碼,其后一個 byte 為該項數據長度,最后為項目內容。CODE LEN VALUE 此字段完全兼容 BOOTP ,同時擴充了更多選項。其中,DHCP封包可利用編碼為 0x53 之選項來設定封包類別:
項值類別:
1 DHCP DISCOVER
2 DHCP OFFER
3 DHCP REQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNACK
7 DHCPRELEASE
8 DHCP INFORM
DHCP 的選項非常多,有空請查閱 RFC 或相關文獻,并好好理解,這里不再敘述了。