DHCP報文html
DHCP報文是承載於UDP上的高層協議報文,採用67(DHCP服務器)和68(DHCP客戶端)兩個端口號。DHCP報文的格式以下圖所示。服務器
圖1 DHCP報文格式 網絡
< 全部DHCP提供的配置信息都在options字段中,這纔是精華部分 >spa
報文中各字段的描述以下: 代理
op,報文類型,1表示請求報文,2表示迴應報文。orm
htype,硬件地址類型,1表示10Mb/s的以太網的硬件地址。server
hlen,硬件地址長度,以太網中該值爲6。htm
hops,跳數。客戶端設置爲0,也能被一個代理服務器設置。進程
xid,事務ID,由客戶端選擇的一個隨機數,被服務器和客戶端用來在它們之間交流請求和響應,客戶端用它對請求和應答進行匹配。該ID由客戶端設置並由服務器返回,爲32位整數。事務
secs,由客戶端填充,表示從客戶端開始得到IP地址或IP地址續借後所使用了的秒數。
flags,標誌字段。這個16比特的字段,目前只有最左邊的一個比特有用,該位爲0,表示單播,爲1表示廣播。
ciaddr,客戶端的IP地址。只有客戶端是Bound、Renew、Rebinding狀態,而且能響應ARP請求時,才能被填充。
yiaddr,"你本身的"或客戶端的IP地址。
siaddr,代表DHCP協議流程的下一個階段要使用的服務器的IP地址。
giaddr,DHCP中繼器的IP地址。//注意:不是地址池中定義的網關
chaddr,客戶端硬件地址。客 戶端必須設置它的"chaddr"字段。UDP數據包中的以太網幀首部也有該字段,但一般經過查看UDP數據包來肯定以太網幀首部中的該字段獲取該值比較 困難或者說不可能,而在UDP協議承載的DHCP報文中設置該字段,用戶進程就能夠很容易地獲取該值。
sname,可選的服務器主機名,該字段是空結尾的字符串,由服務器填寫。
file,啓動文件名,是一個空結尾的字符串。DHCP Discover報文中是"generic"名字或空字符,DHCP Offer報文中提供有效的目錄路徑全名。
options,可選參數域,格式爲"代碼+長度+數據"。
DHCP Options
Option id |
Length(字節) |
描述 |
1 |
4 |
Subnet Mask |
3 |
n*4 |
Router(網關) |
6 |
n*4 |
DNS Server |
7 |
n*4 |
Log Server |
26 |
2 |
Interface MTU |
33 |
n*8 |
Static route |
35 |
4 |
ARP cache timeout |
42 |
n*4 |
NTP servers |
51 |
4 |
IP address lease time |
53 |
1 |
Message type 1-DHCPDISCOVER 2-DHCPOFFER 3-DHCPREQUEST 4-DHCPDECLINE 5-DHCPACK 6-DHCPNAK 7-DHCPRELEASE 8-DHCPINFORM |
54 |
4 |
DHCP Server Identifier |
60 |
n |
華爲自定義:可配置該終端設備在發起DHCP請求時,經過Option 60攜帶域信息。ME60收到DHCP報文時,可根據Option 60中攜帶的域信息來分配IP地址。 |
82 |
n |
華爲自定義:ME60做爲DHCP Relay,在中繼用戶DHCP報文時,可在Option 82中填寫用戶的物理位置信息,通知DHCP服務器按物理位置信息對爲用戶分配IP地址。 |
DHCP報文類型
DHCP共有八種報文,分別爲DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各報文類型功能如表1所述。
DHCP報文類型 |
描述 |
DHCP Discover |
DHCP客戶端請求地址時,並不知道DHCP服務器的位置,所以DHCP客戶端會在本地網絡內以廣播方式發送請求報文,這個報文成爲Discover報文,目的是發現網絡中的DHCP服務器,全部收到Discover報文的DHCP服務器都會發送回應報文,DHCP客戶端據此能夠知道網絡中存在的DHCP服務器的位置。 |
DHCP Offer |
DHCP服務器收到Discover報文後,就會在所配置的地址池中查找一個合適的IP地址,加上相應的租約期限和其餘配置信息(如網關、DNS服務器等),構造一個Offer報文,發送給用戶,告知用戶本服務器能夠爲其提供IP地址。< 只是告訴client能夠提供,是預分配,還須要client經過ARP檢測該IP是否重複> |
DHCP Request |
DHCP 客戶端可能會收到不少Offer,因此必須在這些迴應中選擇一個。Client一般選擇第一個迴應Offer報文的服務器做爲本身的目標服務器,並回應一 個廣播Request報文,通告選擇的服務器。DHCP客戶端成功獲取IP地址後,在地址使用租期過去1/2時,會向DHCP服務器發送單播 Request報文續延租期,若是沒有收到DHCP ACK報文,在租期過去3/4時,發送廣播Request報文續延租期。 |
DHCP ACK |
DHCP服務器收到Request報文後,根據Request報文中攜帶的用戶MAC來查找有沒有相應的租約記錄,若是有則發送ACK報文做爲迴應,通知用戶可使用分配的IP地址。 |
DHCP NAK |
若是DHCP服務器收到Request報文後,沒有發現有相應的租約記錄或者因爲某些緣由沒法正常分配IP地址,則發送NAK報文做爲迴應,通知用戶沒法分配合適的IP地址。 |
DHCP Release |
當用戶再也不須要使用分配IP地址時,就會主動向DHCP服務器發送Release報文,告知服務器用戶再也不須要分配IP地址,DHCP服務器會釋放被綁定的租約。 |
DHCP Decline |
DHCP客戶端收到DHCP服務器迴應的ACK報文後,經過地址衝突檢測發現服務器分配的地址衝突或者因爲其餘緣由致使不能使用,則發送Decline報文,通知服務器所分配的IP地址不可用。 |
DHCP Inform |
DHCP客戶端若是須要從DHCP服務器端獲取更爲詳細的配置信息,則發送Inform報文向服務器進行請求,服務器收到該報文後,將根據租約進行查找,找到相應的配置信息後,發送ACK報文迴應DHCP客戶端。< 極少用到> |
參考:華爲ME60產品文檔及RFC2131/RFC2132