相信很多人都聽過DHCP這個名詞,相信也有不少人知道當要設定IP位址的時候就會聽到DHCP,但是到底DHCP涵蓋什麼範圍?DHCP會做哪些事情?它的原理以及發展歷史是什麼?筆者相信應該只有非常少數的人知道,因此筆者在這篇文章中就來分享一下DHCP的整體概念。
在Cisco設備中,NAT會被應用在Cisco路由器上。一般的作法,會把Cisco路由器設備同時連接兩段網路,一段是內部網路,另一段則是外部網際網路。一旦內部網路中有任何電腦想發送網路封包到外部的網際網路,當封包流過Cisco路由器設備時,Cisco路由器設備就會做NAT位址轉換的動作,然後再傳送封包到外部網際網路之中。
當然,如果想單純一點的話,也可以透過適當的設定,讓外部網際網路只使用一個公有IP位址,但是卻給整個內部網路所有的電腦使用。這樣的作法也可以隱藏內部網路各電腦的IP位址,而達到一定程度的安全性。
NAT技術的各種位址種類
在NAT的敘述中,所謂的「內部網路」(Inside network)指的是需要經過位址轉換的網路區域,一般而言,內部網路都是類似公司內部的網路,或是某組織架構中的網路,是沒有直接暴露在網際網路上的網路環境。
而所謂的「外部網路」(Outside network)指的是其他的網路區段,而在外部網路中,是不需要做位址轉換的,也就是說,外部網路上的IP位址都會是公有IP位址,一般而言,外部網路指的通常都是網際網路或是直接暴露於網際網路的網路區域。
接下來,介紹四種不同的位址種類稱呼:
- 1. Inside global位址
2. Inside local位址
3. Outside global位址
4. Outside local位址
Inside global位址是指經由Network Information Center或是Server Provider所分派的邏輯IP位址,是給內部網路的電腦所使用。Inside local位址是內部網路中所取得的IP位址,但是卻不是透過Network Information Center或是Service Provider所提供的IP位址。Outside global位址是網際網路中實際有效,而且能被繞送的IP位址,是給外部網際網路電腦所使用的。而Outside local位址則是外部網際網路中的電腦在內部網路中所運行的IP位址。
看到這裡,讀者可能會昏頭,簡單來說,Inside與Outside就是用來反映出電腦實際所在的位置,若是內部網路就是Inside,若是位於網際網路則是Outside。而Local和Global則是指所使用的IP位址是公有IP位址還是私有IP位址,若是公有IP位址,就是Global,如果是使用私有IP位址,則屬於Local。
DHCP協定與NAT網路環境
一般來說,DHCP協定都會搭配NAT這樣的網路環境一起使用。從這兩個的用途很明顯地就可以看得出來:DHCP協定用於管理可運用的IP位址,而NAT則是用來將已經註冊的IP位址轉換到私有的IP位址。
以一般家庭或是企業為例,ISP業者都只會給予一個(通常是家庭)或是非常少數(例如企業)的公有(Public)IP位址使用量,但是家庭或企業的網路環境裡面,為了避免讓上網設備數量因公用IP位址數量而受到限制,就可以使用DHCP協定讓路由器動態分配內部私有IP位址給內部網路的設備,而同時也透過NAT方式對應私有IP位址和公有IP位址,以便於對外聯繫通訊。這種方式也可以達到一定程度地提升網路安全性。
DHCP協定詳細運作過程
DHCP協定之所以好用,優點在於能夠把指派IP位址以及各種相關設定的過程自動化,這種優點使得在網路環境內新增或移除上網設備(手機、平板或是電腦等等)變得容易許多。
當有新的上網設備需要取得新的IP位址,這些上網設備會發送廣播封包(Broadcast)給DHCP伺服器,當然在同一個網路內的所有其他設備也都會收到一模一樣的廣播封包,差異只在於其他上網設備並不會針對這樣的廣播封包進行相對應的處理,但是DHCP伺服器會。
DHCP伺服器收到這樣的廣播封包後,會把以下這些資訊指派回去給以下發送廣播封包的設備,甚至於很多其他的設定等等:
- 1. 可用的IP位址(包含可使用的時間)
2. 預設閘道(Default Gateway)位址
3. Domain Name(網域名)
4. Name Server(名稱伺服器)
5. Time Server
6. 子網路遮罩(Subnet Mask)
通常這樣的廣播需求在很早的時候就會發送,因為以比較好的情況來說,會希望在用戶端透過IP層協定來啟動任何網路連線之前就先把IP相關資訊與設定準備好。
當用戶端再也不需要此IP位址的時候(例如關機或是以任何情況離開當前的網路),用戶端會把IP位址還給DHCP伺服器,以便於給其他用戶端所使用。
至此,眼尖的讀者也許發現了一件事情:「當用戶端還沒有取得IP位址之前,代表用戶端還沒有IP可以上網,那DHCP伺服器是如何事先與用戶端連線並溝通呢?」其重點在於,DHCP伺服器發派的資料所屬範圍是網路七層中的IP層,因此代表IP層以下的協定必須事先準備好,這也是DHCP伺服器如何與用戶端溝通的方式,使用IP層以下各層的協定。
DHCP Relay Agent
到目前為止,聽起來都十分有道理。但是這樣的方式在大型的網路環境內要真正運行還是有困難。總不能讓用戶端發送廣播封包給全部整個大型網路的所有其他用戶端吧?另外,也很難要求大型網路的所有用戶端都能夠在IP層以下的協定真正全部連結(因為一般一定會分很多小型網路)。在這樣的情況之下,會使用DHCP Relay Agent。在大型網路環境之中,會有很多小型網路,而每一個小型網路使用一個或是多個DHCP Relay Agent(s)。
這些DHCP Relay Agents的用途在於接收由用戶端發送的廣播封包,並直接把需求轉給DHCP伺服器,接著DHCP伺服器會把要回傳的資料丟給DHCP Relay Agents,並且DHCP Relay Agents會協助傳回給所負責的小型網路的用戶端。因此,DHCP Relay Agents有點像是各個小型網路的DHCP需求代理人。
DHCP伺服器分配IP位址方式
依照環境或是實作方式的不同,DHCP伺服器可能會用以下幾種不同的方式來分配(Allocate)IP位址等資訊:
- 1. 動態分配方式
2. 靜態分配方式
3. 自動分配方式
以下就來介紹一下這三種不同的分配方式:
動態分配方式
在動態分配方式的情況下,網路管理人員會在DHCP伺服器上設定好一個IP位址範圍以及IP位址的使用期限,以便於讓DHCP伺服器來分配IP位址。而DHCP伺服器可以將沒有使用的IP位址收回,以便於給其他用戶端使用。