dhcp抓包及報文分析
DHCP簡介
DHCP(Dynamic Host Configuration Protocol),動態(tài)主機配置協(xié)議,是一個應用層協(xié)議。當我們將客戶主機ip地址設置為動態(tài)獲取方式時,DHCP服務器就會根據(jù)DHCP協(xié)議給客戶端分配IP,使得客戶機能夠利用這個IP上網(wǎng)。
DHCP的前身是BOOTP協(xié)議(Bootstrap Protocol),BOOTP被創(chuàng)建出來為連接到網(wǎng)絡中的設備自動分配地址,后來被DHCP取代了,DHCP比BOOTP更加復雜,功能更強大。后面可以看到,在用Wireshark過濾顯示DHCP包,需要輸入過濾條件BOOTP,而不是DHCP,但或許是因為我使用的Wireshark版本是比較舊的1.12.9,沒有在新版本中嘗試過,也許可以輸入DHCP讓其只顯示DHCP包。
DHCP的實現(xiàn)
DHCP的實現(xiàn)分為4步,分別是:
第一步:Client端在局域網(wǎng)內發(fā)起一個DHCP Discover包,目的是想發(fā)現(xiàn)能夠給它提供IP的DHCP Server。
第二步:可用的DHCP Server接收到Discover包之后,通過發(fā)送DHCP Offer包給予Client端應答,意在告訴Client端它可以提供IP地址。
第三步:Client端接收到Offer包之后,發(fā)送DHCP Request包請求分配IP。
第四步:DHCP Server發(fā)送ACK數(shù)據(jù)包,確認信息。
DHCP協(xié)議與抓包分析
DHCP協(xié)議采用UDP作為傳輸協(xié)議,主機發(fā)送請求消息到DHCP服務器的67號端口,DHCP服務器回應應答消息給主機的68號端口。詳細的交互過程如下圖。
DHCP Client以廣播的方式發(fā)出DHCP Discover報文。
所有的DHCP Server都能夠接收到DHCP Client發(fā)送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client發(fā)送一個DHCP Offer報文。
DHCP Offer報文中“Your(Client) IP Address”字段就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”字段中以便DHCP Client區(qū)分不同的DHCP Server。DHCP Server在發(fā)出此報文后會存在一個已分配IP地址的紀錄。
DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。
DHCP Client會發(fā)出一個廣播的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地址并根據(jù)IP地址使用租期自動啟動續(xù)延過程;如果DHCP Client發(fā)現(xiàn)分配的IP地址已經(jīng)被使用,則DHCP Client向DHCPServer發(fā)出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然后DHCP Client開始新的地址申請過程。
DHCP Client在成功獲取IP地址后,隨時可以通過發(fā)送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文后,會回收相應的IP地址并重新分配。
在使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server發(fā)送DHCPRequest報文來續(xù)租IP地址。如果DHCP Client成功收到DHCP Server發(fā)送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發(fā)送的DHCP ACK報文,則DHCP Client繼續(xù)使用這個IP地址。
在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發(fā)送DHCPRequest報文來續(xù)租IP地址。如果DHCP Client成功收到DHCP Server發(fā)送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發(fā)送的DHCP ACK報文,則DHCP Client繼續(xù)使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server發(fā)送DHCP Release報文來釋放這個IP地址,并開始新的IP地址申請過程。
需要說明的是:DHCP客戶端可以接收到多個DHCP服務器的DHCPOFFER數(shù)據(jù)包,然后可能接受任何一個DHCPOFFER數(shù)據(jù)包,但客戶端通常只接受收到的第一個DHCPOFFER數(shù)據(jù)包。另外,DHCP服務器DHCPOFFER中指定[1] 的地址不一定為最終分配的地址,通常情況下,DHCP服務器會保留該地址直到客戶端發(fā)出正式請求。
正式請求DHCP服務器分配地址DHCPREQUEST采用廣播包,是為了讓其它所有發(fā)送DHCPOFFER數(shù)據(jù)包的DHCP服務器也能夠接收到該數(shù)據(jù)包,然后釋放已經(jīng)OFFER(預分配)給客戶端的IP地址。
如果發(fā)送給DHCP客戶端的地址已經(jīng)被其他DHCP客戶端使用,客戶端會向服務器發(fā)送DHCPDECLINE信息包拒絕接受已經(jīng)分配的地址信息。
在協(xié)商過程中,如果DHCP客戶端發(fā)送的REQUEST消息中的地址信息不正確,如客戶端已經(jīng)遷移到新的子網(wǎng)或者租約已經(jīng)過期,DHCP服務器會發(fā)送DHCPNAK消息給DHCP客戶 端,讓客戶端重新發(fā)起地址請求過程。
OP:若是client送給server的封包,設置為1,反方向為2
Hlen:硬件長度,ethernet為6
Hops:若數(shù)據(jù)包需經(jīng)過router發(fā)送,每站加1,若在同一網(wǎng)內,為0
Transaction ID:事務ID 是個隨機數(shù),用于客戶和服務器之間匹配請求和相應信息
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實現(xiàn)以太網(wǎng)的DHCP功能 2024-11-26
- [電子說] 北斗三號短報文通信水利遙測終端機RTU,實現(xiàn)應急救援效能升級 2024-11-08
- [電子說] 報告從站ID與Modbus異常響應 2024-11-07
- [電子說] 寫多個線圈與寫多個保持寄存器 2024-11-06
- [電子說] Modbus協(xié)議診斷功能說明 2024-11-05
- [電子說] IPV6報文怎么進行通信 2024-10-25
- [電子說] Modbus通信協(xié)議報文分析 2024-10-24
( 發(fā)表人:李倩 )