DHCP協議工作原理

DHCP協議采用UDP作為傳輸協議,有3個端口,其中UDP67和UDP68為正常的DHCP服務端口,分別作為DHCP Server和DHCP Client的服務端口,主機發送請求消息到DHCP服務器的67號端口,DHCP服務器回應應答消息給主機的68號端口。546號端口用于DHCPv6 Client,而不用于DHCPv4。

1. DHCP Client 發現階段(Discover)

DHCP Client以廣播的方式發出DHCP Discover報文。在DHCP服務配置完成后,DHCP Client啟動時,由于沒有IP地址,會自動發送以discover的廣播報文,源地址為0.0.0.0目的地址為255.255.255.255。網絡上的所有支持TCP/IP的主機都會收到該DHCP Discovery報文,但是只有DHCP Server會響應該報文。

2. DHCP Server 響應階段(Offer)

所有的DHCP Server都能夠接收到DHCP Client發送的DHCP Discover報文,所有的DHCP Server都會給出響應,向DHCP Client發送一個DHCP Offer報文。
DHCP Offer報文中“Your(Client) IP Address”字段就是DHCP Server能夠提供給DHCP Client使用的IP地址,且DHCP Server會將自己的IP地址放在“option”字段中以便DHCP Client區分不同的DHCP Server。DHCP Server在發出此報文后會存在一個已分配IP地址的紀錄。

3. DHCP Client 請求使用(Request)

DHCP Client只能處理其中的一個DHCP Offer報文,一般的原則是DHCP Client處理最先收到的DHCP Offer報文。DHCP Client會發出一個廣播的DHCP Request報文,在選項(option)字段中會加入選中的DHCP Server的IP地址和需要的IP地址。

4. DHCP Server 確認使用(ACK)

DHCP Server收到DHCP Request報文后,判斷選項(option)字段中的IP地址是否與自己的地址相同。如果不相同,DHCP Server不做任何處理只清除相應IP地址分配記錄;如果相同,DHCP Server就會向DHCP Client響應一個DHCP ACK報文,并在選項字段中增加IP地址的使用租期信息。

5. DHCP Client 重新登錄

DHCP Client接收到DHCP ACK報文后,檢查DHCP Server分配的IP地址是否能夠使用。如果可以使用,則DHCP Client成功獲得IP地址并根據IP地址使用租期自動啟動續延過程;如果DHCP Client發現分配的IP地址已經被使用,則DHCP Client向DHCP Server發出DHCP Decline報文,通知DHCP Server禁用這個IP地址,然后DHCP Client開始新的地址申請過程。

6. 續約或釋放地址(Lease or Release)

  • DHCP Client續約
    當DHCP客戶端獲取到一個IP地址后,并不代表可以永久使用這個地址,而是有一個使用期限,在DHCP中我們稱之為租約期限,對應DHCP服務器的IP地址租約時間Lease Time 參數,超過這個時間后IP地址被DHCP服務器收回,所以客戶端必須續約才能繼續使用IP地址。Lease默認是自客戶端成功獲取IP地址,往后再推8天。在有效的租約期限內,還包含著另外兩個續約時間點,第四天和第七天,也就是租約的一半和租約的7/8。續約原理如下:
    (1) 在使用租期過50%時,DHCP Client會以單播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。
    (2) 在使用租期87.5%時,DHCP Client會以廣播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server發送DHCP Release報文來釋放這個IP地址,并開始新的IP地址申請過程。

如果租約時間設置太短,client將會頻繁想DHCP server續約,當DHCP server來不及響應client的續約請求后就會因為地址老化而需要重新進行DHCP 地址請求過程,從而出現網絡中斷。

  • 客戶端主動釋放地址
    DHCP Client在成功獲取IP地址后,隨時可以通過發送DHCP Release報文釋放自己的IP地址,DHCP Server收到DHCP Release報文后,會回收相應的IP地址并重新分配。

對續約或釋放地址過程感興趣的可以去這篇博客https://blog.csdn.net/wangdk789/article/details/27052505,有詳細的抓包過程,我抓包沒截圖保存下來。。。


拓展:DHCP 的選項非常多,以下是抓包過程需要特別注意的比較重要的幾個DHCP options類別。

  1. DHCP DISCOVER
  2. DHCP OFFER
  3. DHCP REQUEST
  4. DHCP DECLINE
  5. DHCP ACK
  6. DHCP NACK
  7. DHCP RELEASE
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容