一是很多時候ip都是設定成通過dhcp動態獲取的,但一直不太清楚dhcp的具體互動過程;二是加上前幾天有同事問知不知道dhcp具體互動過程;三是這兩天正好在分析協議。所以就順道來看一下。
如果對wireshark不太熟悉,可參考"wireshark捕獲/顯示過濾器表示式書寫規律說明 "。
【客戶端小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):對滴。
dhcp使用udp進行通訊,一般來說客戶端通過68埠發出,服務端在67埠監聽。
整個dhcp獲取ip的過程包括以下六步:discovery、offer、request、acknowledge、inform、再次acknowledge。具體實現時可能沒有後兩步。
在資料報格式上各請求和響應都大同小異,主要是option欄位多些少些的區別。
以windows操作為例。
第一步,開啟控制面板--網路和 internet--網路和共享中心-xx連線x--屬性--internet 協議版本4(tcp/ip 4)--屬性,把自己網絡卡設定成自動獲得ip位址。
第二步,開啟wireshark對網絡卡進行抓包。
第三步,使用以下命令釋放已獲取到的ip位址,然後重新申請ip位址。
# 釋放當前已獲取ip位址。執行此命令主機會向之前分配ip的dhcp伺服器傳送release請求第四步,在wireshark過濾器中輸入bootp即可過濾出dhcp過程。如下圖所示可見整個過程與上兩小節描述的一致ipconfig /release
# 獲取ip位址。執行此命令會完成dhcp申請過程
ipconfig /renew
不同作業系統對dhcp客戶端的實現可能有些差別,比如下邊是海思一塊板子的dhcp過程。請求會發三遍,然後沒有inform。
參考:
基於ENSP的DHCP協議分析
實驗組網圖 cloud配置 交換機配置 dhcp enable vlan batch 1 2 inte ce g0 0 2 port link type access port default vlan 1 quit inte ce g0 0 3 port link type access port...
tcpdump抓包分析利器 wireshark
wireshark有mac版和win版,fiddler有win版。下面看下wireshark怎麼用 先抓點包 zjy ubuntu sudo tcpdump iany w dump.pcap tcpdump listening on any,link type linux sll linux coo...
DHCP協議詳解
在常見的小型網路中 例如家庭網路和學生宿舍網 網路管理員都是採用手工分配ip位址的方法,而到了中 大型網路,這種方法就不太適用了。在中 大型網路,特別是大型網路中,往往有超過100臺的客戶機,手動分配ip位址的方法就不太合適了。因此,我們必須引入一種高效的ip位址分配方法,幸好,dhcp dynam...