DHCP協議分析(Wireshark)

1、說明

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

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

 

2、DHCP協議

2.1 通俗版解釋

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

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

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

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

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

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

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

  服務器S1(ACKNOWLEDGE):對滴。blog

 

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

相關文章
相關標籤/搜索