DHCP協議分析(Wireshark)


一、說明

一是很多時候IP都是設置成通過dhcp動態獲取的,但一直不太清楚dhcp的具體交互過程;二是加上前幾天有同事問知不知道DHCP具體交互過程;三是這兩天正好在分析協議。所以就順道來看一下。

如果對wireshark不太熟悉,可參考"wireshark捕獲/顯示過濾器表達式書寫規律說明 "。

 

二、DHCP協議

2.1 通俗版解釋

【客戶端小C(RELEASE):S1老哥,你給我的x.x.x.x這個IP我不用了哦。】

  客戶端小C(DISCOVERY):誰給我個IP啊?

  服務器S1(OFFER):y.y.y.y,拿去用吧。

【服務器S2(OFFER):z.z.z.z,拿去用吧。】

  客戶端小C(REQUEST):y.y.y.y,那我就用這個了哦。

  服務器S1(ACKNOWLEDGE):用吧,不過x小時后我就自就回收了,如果你要繼續用在剩y小時的時候你要跟我說一聲。

  客戶端小C(INFORM):ok,那我就用了。你我只要注意你剛才說的就行了對吧。

  服務器S1(ACKNOWLEDGE):對滴。

 

2.2 技術性解釋

dhcp使用udp進行通信,一般來說客戶端通過68端口發出,服務端在67端口監聽。

整個dhcp獲取ip的過程包括以下六步:DISCOVERY、OFFER、REQUEST、ACKNOWLEDGE、INFORM、再次ACKNOWLEDGE。具體實現時可能沒有后兩步。

在數據包格式上各請求和響應都大同小異,主要是Option字段多些少些的區別。

 

2.3 獲取dhcp數據包

以windows操作為例。

第一步,打開控制面板--網絡和 Internet--網絡和共享中心-xx連接x--屬性--Internet 協議版本4(TCP/IP 4)--屬性,把自己網卡設置成自動獲得IP地址。

第二步,打開wireshark對網卡進行抓包。

第三步,使用以下命令釋放已獲取到的IP地址,然后重新申請IP地址。

# 釋放當前已獲取IP地址。執行此命令主機會向之前分配IP的DHCP服務器發送RELEASE請求
ipconfig /release
# 獲取IP地址。執行此命令會完成dhcp申請過程
ipconfig /renew

第四步,在wireshark過濾器中輸入bootp即可過濾出dhcp過程。如下圖所示可見整個過程與上兩小節描述的一致

不同操作系統對dhcp客戶端的實現可能有些差別,比如下邊是海思一塊板子的dhcp過程。請求會發三遍,然后沒有INFORM。

 

參考:

https://wenku.baidu.com/view/8fdeb5ddcf84b9d529ea7a59.html

https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM