DHCP協議詳解

2022-09-23 00:06:15 字數 3020 閱讀 7952

dhcp協議詳解

定義:dhcp(dynamic host configuration protocol)動態主機配置協議,主要作用是為區域網內的主機自動分配ip位址。dchp工作在應用層,是bootp(bootscrap protocol)的一種擴充套件,使用udp協議進行運輸,udp67和udp68埠分別作為dhcpserver和dhcp client的服務埠。dhcp協議內容在rfc2131中定義,而dhcp options在rfc2132中定義。

dhcp的4次握手

測試方法:為了抓到dchp工作過程的包,在cmd中使用ipconfig/release命令釋放客戶端ip位址,接著使用ipconfig/renew重新通過dhcp自動獲得ip,使用wireshark抓到以下的包(如圖1)。

wkiol1l9ojnsmwkzaab9xt6wrr0980.png-wh_50

圖1:dchp抓包結果

結合上圖可以知道dhcp的4次握手內容如下:

1、客戶端廣播乙個dhcpdiscover包,用來尋找dchp伺服器。

●源mac: 固有mac位址,源ip: 未分配,初始0.0.0.0

●目標mac:ff-ff-ff-ff-ff-ff,目標ip: 255.255.255.255

2、伺服器向傳送discover包的客戶端mac位址傳送offer,如圖2(可能有多個dhcp伺服器,但一般只處理最先收到的offer)。

●通過分析包資料,目標mac為客戶端mac,目標ip為將分配給客戶端的ip(由於此時客戶端還沒有獲得ip,因此,雖然ip不匹配也不會丟棄)。

●offer的內容中有將分配給客戶端的ip,其中的options提供了dhcp伺服器ip、租約時長、子網掩碼、路由ip、dns等內容。

3、客戶端收到offer後,廣播乙個request租約請求,內容中option包括客戶端mac、dhcp伺服器ip、伺服器提供的ip等內容。

●源mac: 固有mac位址,源ip: 仍然未分配,為0.0.0.0

●目標mac: ff-ff-ff-ff-ff-ff,目標ip:255.255.255.255

4、dchp伺服器確認request中的ip是否與發出的offer相同,若相同,則向客戶端傳送dhcpack確認資訊,dhcpack包與dhcpoffer包的內容幾乎完全一樣,除了option53:dhcp message type。客戶端收到dhcp ack後,通過arp廣播檢測租約中ip是否衝突,若無衝突,則使用該ip。(rfc2131提到另一種衝突解決方案,dhcp伺服器在發offer前,should ping一下租約ip,我的實驗中沒有抓到icmp包)

wkiom1l9olhdc8niaafdvvx6tvm945.png-wh_50

圖2:dchp offer內容

對於以前接入過的客戶端

若原ip可用

測試方法:將dhcp客戶端網線插拔。

對於連線過的裝置,裝置記憶有以前分配過的ip,則無需前兩步,只進行客戶端請求租用原先ip和服務端確認租用這兩步,如圖3。

若原ip被占用

測試方法:電腦使用dhcp獲得ip後斷開網線,將手機ip設為靜態的電腦所獲ip,然後插上網線,抓包結果如圖4。

若原ip被占用,雖然收到dhcp伺服器ack確認報文,但仍被客戶端拒絕,重新進行4次握手的過程。這裡是客戶端拒絕租約而不是dhcp伺服器拒絕,如圖5所示,客戶端收到dhcp ack報文,會廣播針對租約ip的arp解析包,檢測到ip已被占用後,會廣播dhcp decline報文拒絕該租約,並在至少10秒後重新discover。

wkiom1l9onijz3bsaahihxjkkci765.png-wh_50

圖3:接入過的裝置跳過dhcp握手前兩步

wkiol1l9ooywpmnfaabqabkl6x4552.png-wh_50

圖4:客戶端拒絕dhcp ack

wkiol1l9oqkr9bmtaac_qmkp1do581.png-wh_50

圖5:客戶端decline的過程

dhcp客戶端釋放ip

測試方法:cmd中輸入ipconfig/release,或者將客戶端ip由dhcp改為靜態。

客戶端會向伺服器傳送dhcp release報文釋放掉現有ip,如圖6。

wkiom1l9or-g-zepaaazst6hueg175.png-wh_50

圖6:客戶端釋放ip

附1:dhcp報文格式

dhcp options field

dhcp報文中的options欄位可以用來存放普通協議中沒有定義的控制資訊和引數。如果使用者在dhcp伺服器端配置了options欄位,dhcp客戶端在申請ip位址的時候,會通過伺服器端回應的dhcp報文獲得options欄位中的配置資訊。option的格式由type、length、value三部分組成。型別的取值範圍為1-255。

option 66:

通過option 66欄位攜帶tftp server的ip位址。從而使裝置可以從tftp server上**配置檔案,通過tftp server實現自動配置。

wkiol1l9pl_ainnnaaddrg1osh0618.png-wh_50

圖6:frc2132中的關於option 66的定義

這種自動配置是如何實現的呢?首先要給dhcp伺服器設定option 66選項,當乙個新的裝置接入網路,它會傳送dhcpdiscover廣播尋找dhcp伺服器來獲得ip,這時dhcp伺服器的offer報文利用option 66給裝置提供tftp伺服器的位址,裝置通過訪問tftp伺服器獲得預設的配置。

option 66的值可以是tftp伺服器網域名稱或ip,需要注意的是option66的值通常不作為option 66出現在dhcp packet中,而是被移到dhcp包中的sname(伺服器主機名)中,而且網域名稱可能已經被解析成ip位址放於siaddr(伺服器ip位址)中。option 67指定了從option 66提供的伺服器**的檔名,通常被放在file(檔名)中。

還需要注意的是option 66欄位的value值使用ascii編碼,舉例:若tftp伺服器ip為10.10.10.1,則翻譯成16進製為31 30 2e 31 30 2e 31 30 2e 31。

DHCP協議詳解

在常見的小型網路中 例如家庭網路和學生宿舍網 網路管理員都是採用手工分配ip位址的方法,而到了中 大型網路,這種方法就不太適用了。在中 大型網路,特別是大型網路中,往往有超過100臺的客戶機,手動分配ip位址的方法就不太合適了。因此,我們必須引入一種高效的ip位址分配方法,幸好,dhcp dynam...

dhcp協議詳解

dhcp,動態主機配置協議,前身是bootp協議,是乙個區域網的網路協議,使用udp協議工作,常用的2個埠 67 dhcp server 68 dhcp client dhcp通常被用於區域網環境,主要作用是集中的管理 分配ip位址,使client動態的獲得ip位址 gateway位址 dns伺服器...

DHCP協議詳解 zz

在常見的小型網路中 例如家庭網路和學生宿舍網 網路管理員都是採用手工分配ip位址的方法,而到了中 大型網路,這種方法就不太適用了。在中 大型網路,特別是大型網路中,往往有超過100臺的客戶機,手動分配ip位址的方法就不太合適了。因此,我們必須引入一種高效的ip位址分配方法,幸好,dhcp dynam...