DHCP的報文解析

DHCP報文

DHCP報文是承載於UDP上的高層協議報文,採用67(DHCP服務器)和68(DHCP客戶端)兩個端口號。DHCP報文的格式如下圖所示。

圖1 DHCP報文格式

< 所有DHCP提供的配置信息都在options字段中,這纔是精華部分 >

報文中各字段的描述如下:

  • op,報文類型,1表示請求報文,2表示迴應報文。
  • htype,硬件地址類型,1表示10Mb/s的以太網的硬件地址。
  • hlen,硬件地址長度,以太網中該值爲6。
  • 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

發佈了25 篇原創文章 · 獲贊 11 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章