DHCP:IP 並非與生俱來

初識 DHCP

衆所周知,因特網上的每臺設備都規定了其全世界唯一的地址,也就是說 “IP 地址”,正是由於有了 IP 地址,才保證了用戶在連網的計算機上操作時,能夠高效而且方便地從千千萬萬臺計算機中選出自己所需的對象來。

IP 地址就好像電話號碼(地址碼):有了某人的電話號碼,你就能與他通話了。同樣,有了某臺主機的 IP 地址,你就能與這臺主機通信了。

But,如果逐一爲每一臺主機設計 IP 地址那不得累死,不說全世界可能上百億臺計算機的存在,就說一臺筆記本電腦,每移動到一個地方,就需要重新配置 IP 地址

顯然,手動分配 IP 地址不是我們人類中的那些頂級大腦能夠做出來的事情,爲了實現自動配置 IP 地址、統一管理 IP 地址分配,DHCP 協議(Dynamic Host Configuration Protocol,動態主機配置協議)就被創造了出來,這是一個應用層協議

在沒有 DHCP 服務的網絡中,計算機接入到網絡時必須先被設置 IP 地址、子網掩碼、默認路由等等,並且,爲了保證所有的主機 IP 地址都是唯一的,管理員必須清楚的知道該如何分配 IP 地址以避免衝突。

而在提供 DHCP 服務的網絡中,管理員的負擔大幅度減輕,只要在 DHCP 服務器上做一些必要的設置即可,計算機一旦接入到網絡,就會自動獲取 TCP/IP 通信所必須的設置(IP 地址等信息),並且 DHCP 服務器會保證其 IP 地址的唯一性。

可以看出,DHCP 實際上提供的是一種即插即用的網絡,就是說只要某臺計算機物理上一連通,無需專門的設置,就可以直接使用這臺物理設備。

DHCP 的工作原理

DHCP 不僅可以爲接入互聯網的計算機配置 IP 地址,還可以配置子網掩碼、默認路由等信息,那這些信息當然是不會憑空變出來的,它們都需要被提前配置到 DHCP 服務器上。

從 DHCP 獲取 IP 地址的流程和 ARP 有一點相似不過還是存在不同的,客戶端主機和 DHCP 服務器之間基於 UDP 協議採用廣播形式進行交互,主機發送請求消息到 DHCP 服務器的 67 號端口,DHCP 服務器迴應應答消息給主機的 68 號端口。具體流程如下:

1)客戶端主機廣播 DHCP Discover 包:主機請求 DHCP 服務器爲自己設置 IP 地址、子網掩碼等信息

說的通俗一點,當一臺設備新加入一個網絡的時候,它只知道自己的 MAC 地址,那麼爲了獲取一些必要的信息,它會先大吼一句(廣播,目標地址 255.255.255.255):“我是新來的,我的 MAC 地址是這個,我還沒有 IP 地址(或者說 IP 地址是 0.0.0.0,表示未知),有沒有 DHCP 服務器能租給我一個 IP 地址呀?”,這個過程稱爲 “DHCP Discover”。

想必看到這裏各位也就能知道 MAC 地址的重要性了,它是與生俱來的,而 IP 地址並不是。

2)DHCP 服務器廣播 DHCP Offer 包:DHCP 服務器通知主機哪些網絡設置是可以使用的

如果這個網絡中存在多個 DHCP 服務器,它們都聽到了新人的大吼,並且都願意租給這位新人一個 IP 地址等信息,那麼這個新人主機就會收到多個可用的 IP 地址等信息。這個過程稱爲 “DHCP Offer”。

3)客戶端主機廣播 DHCP Request 包:主機通知服務器自己想要使用在(2)中通知的設置

主機在它收到的多個 Offer 中,選擇其中一個,一般是最先到達的那個。並且會向網絡廣播一個 DHCP Request 包,包中包含客戶端主機的 MAC 地址、接受的 Offer 中的 IP 地址、提供此 Offer 的 DHCP 服務器地址等,並告訴所有 DHCP 服務器,它將要接受哪一臺服務器提供的 IP 地址,告訴其他的 DHCP 服務器,撤銷它們提供的 IP 地址,以便提供給下一個 IP 租用請求者。

4)DHCP 服務器廣播 DHCP ACK 包:服務器通知主機允許(3)的設置,即正式將 IP 地址等信息分配給主機

在完成第(4)步之前,主機還沒有得到 DHCP 服務器的最後確認,所以它還沒有 IP 地址,DHCP 服務器想 要給這個主機發送消息,仍然只能採取廣播的方式,廣播包中包含分配給這臺主機的 IP 地址等信息。

至此,DHCP 的網絡設置結束,可以進行正常的 TCP/IP 通信了。

DHCP 設置中通常會有一個時間的限制,租期到了,分配的這個 IP 就會被收回。當然,就這好比租房子,你要續約也是可以的,只要你提前說就行,客戶端主機可以在這個時間限之前,發送 DHCP Request 包通知想要延長租用時間

另外,當客戶端主機不再需要這個 IP 地址的時候,隨時可以通過發送 DHCP Release 報文釋放自己的 IP 地址,DHCP 服務器收到 DHCP Release 報文後,會回收相應的 IP 地址並重新分配。

DHCP 的三種機制

我們上述所說的工作機制是一種動態分配 IP 地址的方式,事實上,DHCP 有三種機制分配 IP 地址:

1)自動分配方式(Automatic Allocation),DHCP 服務器爲主機指定一個永久性的 IP 地址,一旦 DHCP 客戶端第一次成功從 DHCP 服務器端租用到 IP 地址後,就可以永久性的使用該地址。

2)動態分配方式(Dynamic Allocation),DHCP 服務器給主機指定一個具有時間限制的 IP 地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。

3)手工分配方式(Manual Allocation),客戶端的 IP 地址是由網絡管理員指定的,DHCP 服務器只是將指定的 IP 地址告訴客戶端主機。

很明顯,三種地址分配方式中,只有動態分配可以重複使用客戶端不再需要的地址。

DHCP 服務器如何保證分配的 IP 地址不衝突

可以看出,DHCP 服務的正常運轉極度依賴於 DCHP 服務器,如果 DHCP 服務器發生故障了,將導致無法自動分配 IP 地址,也就是說該網段內所有主機之間都無法進行正常的 TCP/IP 通信。

爲此,人們通常會在一個網段內設置兩臺或以上的 DHCP 服務器,這不可避免的產生一個問題:每個 DHCP 服務器內記錄的都是這個網段的 IP 地址分配情況的信息,各自分配的 IP 地址相互衝突在所難免。

爲了避免衝突,DHCP 服務器具備這樣的功能:

同樣的,客戶端主機也得確認下 DCHP 服務器分配的 IP 地址是否正在被人使用:

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/omblcnd6w9Y5D9aJNe1j8A