DHCP協議詳解

DHCP協議詳解

 

定義:DHCP(Dynamic Host Configuration Protocol)動態主機配置協議,主要作用是爲局域網內的主機自動分配IP地址。DCHP工作在應用層,是BOOTP(Bootscrap Protocol)的一種擴展,使用UDP協議進行運輸,UDP67UDP68端口分別作爲DHCPServerDHCP Client的服務端口。DHCP協議內容在RFC2131中定義,而DHCP OptionsRFC2132中定義。


DHCP4次握手

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

wKioL1l9OJnSMwKzAAB9XT6WRr0980.png-wh_50

1DCHP抓包結果

 

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

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、租約時長、子網掩碼、路由IPDNS等內容。

3、客戶端收到Offer後,廣播一個Request租約請求,內容中Option包括客戶端MACDHCP服務器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包的內容幾乎完全一樣,除了Option53DHCP Message Type。客戶端收到DHCP ACK後,通過ARP廣播檢測租約中IP是否衝突,若無衝突,則使用該IP(RFC2131提到另一種衝突解決方案,DHCP服務器在發offer前,SHOULD ping一下租約IP,我的實驗中沒有抓到ICMP)

 

wKiom1l9OLHDC8niAAFdVvx6TVM945.png-wh_50

2DCHP Offer內容

 

對於以前接入過的客戶端

若原IP可用

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

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

若原IP被佔用

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

若原IP被佔用,雖然收到DHCP服務器ACK確認報文,但仍被客戶端拒絕,重新進行4次握手的過程。這裏是客戶端拒絕租約而不是DHCP服務器拒絕,如圖5所示,客戶端收到DHCP ACK報文,會廣播針對租約IPARP解析包,檢測到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,或者將客戶端IPDHCP改爲靜態。

客戶端會向服務器發送DHCP Release報文釋放掉現有IP,如圖6

wKiom1l9OR-g-ZePAAAZsT6hueg175.png-wh_50

6:客戶端釋放IP

 

wKiom1l9pg2jykdgAAD8ugfYRFk107.jpg-wh_50

1DHCP報文格式


DHCP Options Field

DHCP報文中的Options字段可以用來存放普通協議中沒有定義的控制信息和參數。如果用戶在DHCP服務器端配置了Options字段,DHCP客戶端在申請IP地址的時候,會通過服務器端迴應的DHCP報文獲得Options字段中的配置信息。Option的格式由TypeLengthValue三部分組成。類型的取值範圍爲1-255

 

Option 66

通過option 66字段攜帶TFTP serverip地址。從而使設備可以從TFTP server上下載配置文件,通過TFTP server實現自動配置。


wKioL1l9pl_AiNNNAADdrG1OsH0618.png-wh_50

6FRC2132中的關於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服務器IP10.10.10.1,則翻譯成16進製爲31 30 2E 31 30 2E 31 30 2E 31


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章