轉自:https://blog.csdn.net/wangdk789/article/details/27052505服務器
當DHCP客戶端獲取到一個IP地址後,並不表明能夠永久使用這個地址,而是有一個使用期限,在DHCP中咱們稱之爲租約期限,默認是自客戶端成功獲取之時算起,日後再推8天。其實除了這個8天的時間外,在有效的租約期限內,其實還包含着兩個時間點,第四天和第七天,也就是租約的一半和租約的7/8。這三個時間點在DHCP 的Offer數據包中就有體現。以下圖:網絡
上圖中標記紅框處即爲三個時間點。
咱們再來打個比方。若是客戶端在1月1日0時成功獲取到一個IP地址,那麼在DHCP管理器上就能夠看到這條租約信息,對應的租約截止日期就是1月9日0時。當日期到默認租期的一半時,也就是第四天的時候。客戶端會向DHCP服務器發送一個DHCP Request 的數據包,目的是請求更新本身的租約。若是DHCP服務器正常且響應了此請求,那麼就會返回一個DHCP ACK的數據包,這表示續約成功。好比1月5日時,客戶端提出續約申請,當DHCP服務器正常相應後,這臺客戶端的IP過時時間將延至1月13日,由於他是在5號提出的申請,判斷是否續期和過時是以DHCP服務器上時間爲準。將租期計算用畫圖的形式展示出來,以下圖:.net
若是第一次沒有續約成功,到了租期的7/8時,還會重複一次申請續約的過程。若是成功,新的租期天然是在申請日期的基礎上加8天,以此類推。DHCP客戶端獲取到一個IP,只要是續約的時候順利,那麼它會一直使用這個IP地址,除非這個IP被排除或者被保留等。
若是在1/2租期申請更新,但沒有獲得DHCP的響應,怎麼辦? 好比這個IP被從做用域中移除,那麼DHCP服務器會返回給客戶端一個DHCP NACK的數據包。客戶端收到這個數據包後會發送Discover的包查詢,若是仍是沒獲得回覆,它就會繼續使用原有的IP地址,當到7/8租期時間時就會再次申請租約更新。若是依然沒有獲得正確的迴應,那隻能獲得租期截至後從新申請IP地址了。以上是有關租約的內容。
這裏再談一下和DHCP相關的兩個經常使用的命令:ipconfig /release和ipconfig /renew
我相信,這兩個命令你們都曾用過。當因爲某些網絡緣由致使IP地址沒能及時同步時,咱們能夠先用ipconfig /release命令將當前的IP地址和其餘配置信息釋放掉。此時客戶端會利用單播的方式向DHCP發送DHCP Release數據包,目的是告訴DHCP服務器客戶端要釋放這個IP。以下圖:3d
上圖是運行這個命令後協議層上的表現,實話講,DHCP協議裏用單播通信的狀況可很少見。若是有多網卡,但只想釋放某一張網卡,只須要在命令後面加上網卡的名稱便可,好比ipconfig /release "本地鏈接1" 。命令運行完後,客戶端的IP地址等信息會被重置爲0.0.0.0 。以下圖:blog
再利用ipconfig /renew 命令向DHCP服務器從新獲取一個IP。多半狀況下,都會得到和原來相同的IP,主要是由於在申請新IP時,發送的DHCP Discover數據包中包含了上一次獲取到的IP,若是這個IP沒有被指派出去,那麼依然會從新分配給這臺客戶端。再者就要看DHCP客戶端數量了,數量多意味着DHCP請求多。以下圖:ip
過程和客戶端第一次獲取IP時差很少,只是須要留意數據包中的Request IP 項。
4次交互過程後,客戶端獲取到了IP地址。以下圖:作用域