dhcp抓包及報文分析
DHCP簡介
DHCP(Dynamic Host Configuration Protocol),動態主機配置協議,是一個應用層協議。當我們將客戶主機ip地址設置為動態獲取方式時,DHCP服務器就會根據DHCP協議給客戶端分配IP,使得客戶機能夠利用這個IP上網。
DHCP的前身是BOOTP協議(Bootstrap Protocol),BOOTP被創建出來為連接到網絡中的設備自動分配地址,后來被DHCP取代了,DHCP比BOOTP更加復雜,功能更強大。后面可以看到,在用Wireshark過濾顯示DHCP包,需要輸入過濾條件BOOTP,而不是DHCP,但或許是因為我使用的Wireshark版本是比較舊的1.12.9,沒有在新版本中嘗試過,也許可以輸入DHCP讓其只顯示DHCP包。
DHCP的實現
DHCP的實現分為4步,分別是:
第一步:Client端在局域網內發起一個DHCP Discover包,目的是想發現能夠給它提供IP的DHCP Server。
第二步:可用的DHCP Server接收到Discover包之后,通過發送DHCP Offer包給予Client端應答,意在告訴Client端它可以提供IP地址。
第三步:Client端接收到Offer包之后,發送DHCP Request包請求分配IP。
DHCP協議與抓包分析
DHCP協議采用UDP作為傳輸協議,主機發送請求消息到DHCP服務器的67號端口,DHCP服務器回應應答消息給主機的68號端口。詳細的交互過程如下圖。
DHCP Client以廣播的方式發出DHCP Discover報文。
所有的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地址的紀錄。
DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。
DHCP Client會發出一個廣播的DHCP Request報文,在選項字段中會加入選中的DHCP Server的IP地址和需要的IP地址。
DHCP Server收到DHCP Request報文后,判斷選項字段中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,并在選項字段中增加IP地址的使用租期信息。
DHCP Client接收到DHCP ACK報文后,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址并根據IP地址使用租期自動啟動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCPServer發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然后DHCP Client開始新的地址申請過程。
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客戶 端,讓客戶端重新發起地址請求過程。
OP:若是client送給server的封包,設置為1,反方向為2
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:啟動文件名
- 第 1 頁:dhcp抓包及報文分析
- 第 2 頁:抓包分析
本文導航
非常好我支持^.^
(1) 50%
不好我反對
(1) 50%
相關閱讀:
- [電子說] 海格通信參與中國電信北斗短報文終端伙伴合作計劃 2024-12-04
- [電子說] 利用LWIP 2.2實現以太網的DHCP功能 2024-11-26
- [電子說] 北斗三號短報文通信水利遙測終端機RTU,實現應急救援效能升級 2024-11-08
- [電子說] 報告從站ID與Modbus異常響應 2024-11-07
- [電子說] 寫多個線圈與寫多個保持寄存器 2024-11-06
- [電子說] Modbus協議診斷功能說明 2024-11-05
- [電子說] IPV6報文怎么進行通信 2024-10-25
- [電子說] Modbus通信協議報文分析 2024-10-24
( 發表人:李倩 )