1. 程式人生 > >DHCP協議與抓包分析

DHCP協議與抓包分析

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

0                  8                   16                  24                31

OP(1)

HTYPE(1)

HLEN(1)

HOPS(跳數)(1)

事務ID(4)[Transaction  ID]

秒數(2)[Second]

標誌(2)[Flag]

客戶機IP地址(4)[Ciaddr]

你的IP地址(4)[Yiaddr]

伺服器IP地址(4)[Siaddr]

中繼代理IP地址(4)[Giaddr]

客戶機硬體地址(16位元組)[Chaddr]

伺服器的主機名(64位元組)[Sname]

啟動檔名(128位元組)[File]

選項(可變長)[Options]

OP:若是client送給server的封包,設定為1,反方向為2

Htype:硬體類別,ethernet 為1

Hlen:硬體長度,ethernet為6

Hops:若資料包需經過router傳送,每站加1,若在同一網內,為0

Transaction ID:事務ID 是個隨機數,用於客戶和伺服器之間匹配請求和相應資訊

Seconds:由使用者指定的時間,指開始地址獲取和更新進行後的時間

Flags:從0—15bits,最左一bit為1時表示server將以廣播方式傳遞封包給client,其餘尚未使用

Ciaddr:使用者IP地址

Siaddr:用於bootsrtap過程中的IP地址(伺服器的IP地址)

Chaddr:client的硬體地址

Sname:可選server的名稱,以0x00結尾

File:啟動檔名

Options:廠商標識,可選的引數欄位

1.      抓包分析:

(1)DHCP discover階段:


(2)DHCP offer階段:


(3)DHCP request階段:


(4)DHCP ack階段:


2.      總結:

階段

源MAC

目標MAC

源IP

目標IP

Discover

PC機的MAC

全FF

0.0.0.0

255.255.255.255

Offer

Dhcp伺服器或者中繼器路由的MAC

Dhcp客戶機的MAC

Dhcp伺服器或者中繼路由器的IP地址

準備分配的IP地址

Request

PC機的MAC

全FF

0.0.0.0

255.255.255.255

Ack

Dhcp伺服器或者中繼器路由的MAC

Dhcp客戶機的MAC

Dhcp伺服器或者中繼路由器的IP地址

準備分配的IP地址

3.DHCPTransaction  ID是由客戶機產生一個隨機數獲得,不同MAC地址產生的Transaction ID不同,Transaction  ID是區分不同DHCP請求的標識